Think Build Implement Repeat
London, UK +44 7367 067226
WhatsApp FOLLOW f in X
Python & Django

Getting the Numbers Out

Last updated:

Define the numbers before building

Automating a report requires stating exactly what each figure means: which date it is counted on, how cancellations are treated, what is included and excluded.

Two reports disagreeing because they define revenue differently is the fastest way for a business to stop trusting its own reporting.

Do not report from the operational tables

  • Heavy aggregations slow the application for everyone
  • Use a read replica, or nightly aggregate tables
  • Pre-compute anything expensive that changes infrequently
  • Paginate or stream anything large

Deliver rather than display

  1. Scheduled email with the key figures, before people need them
  2. Alerts when something is outside its normal range
  3. The detailed view available for anyone who wants to dig in
  4. Everything exportable, because people will want it in a spreadsheet

A dashboard people must remember to open is opened in the first week and rarely afterwards. A short email arrives and gets read.

Make them reproducible

RequirementWhy
Same inputs give the same outputTrust
Explicit date rangeComparability
Definition documented alongsideNobody guesses
Historical periods regenerableAuditability
ExportablePeople want the data

Respect permissions in reports

A report that ignores the permission filter leaks everything the interface carefully restricted. Exports are the most commonly forgotten path.

Apply the same filtering to reports and exports as to screens, enforced centrally rather than remembered.

Frequently asked questions

Should we use a BI tool?

For exploratory analysis, frequently. For a fixed set of operational reports, building them directly is simpler and faster to load.

How do we stop reports slowing the app?

Run them against a replica or aggregate tables. Never heavy aggregation against live operational tables.

Who defines the metrics?

The business, in writing, before building. Technical people should not be deciding what revenue means.

How many reports?

Fewer than you think. Five that are read beats thirty that are not.

Keep reading

Reports nobody opens?

They probably need to arrive rather than be fetched. Happy to look at what your business actually reads.

Book a free 30-minute call Get a project estimate WhatsApp us

Related services

What we build for problems like this one

Custom Software DevelopmentWeb DevelopmentMachine Learning