Dashboards and reporting

See what is happening. Know what needs attention.

The numbers often exist. People still spend the week copying them into a spreadsheet, reconciling two exports, or asking someone else what the current picture is. PrimeLabs builds the view that puts the right figures in front of the people who decide, with the record behind the number and a way to act on it.

A chart is not the product

  • Dashboard

    A current or regularly refreshed view of status, priorities, exceptions and the items someone can act on.

  • Report

    A structured look across a period or a dataset: trends, summaries, comparisons, and an export when a person needs the file.

  • Operational monitoring

    The live queue and the failures. Totals are secondary to what is late, stuck or missing.

  • Analytics

    Known measures, calculated the same way every time: counts, percentages, ageing, variance, sums.

  • Decision support

    The same measures, arranged so a person can see what changed and what to open next. A model may help explain them. It does not invent them.

A product may need more than one of these. Not every metric belongs on the screen.

Start with the decision, not the chart

The useful first questions are plain. What decision does this person need to make? What needs attention? What changed? What is behind the number? What action follows?

A report should answer one of those. An operational dashboard should show the current state. A historical report should show change over time. Exceptions usually matter more than the grand total. A KPI without a way into the records creates a second round of questions. Different people can have different views of the same underlying data: an executive, a coordinator, a finance clerk, a service desk, or a customer who may see only their own account.

One service board, then the month beside it

This is an example, not a client report. September is the open period. At risk narrows the queue to the 17 cases outside the target. A row opens the record. Trends and the monthly report are the other two views.

Example interface. Not a client project.

Service performance · example operations view

Open service requests184

Completed this month1,248

Median response2h 18m

Requests received and completed

September, by week. Select a week for the figures.

Figures behind the September chart
WeekReceivedCompletedAt risk
1–7 Sep3122983
8–14 Sep3383314
15–21 Sep3563226
22–28 Sep4182974

Showing the current queue.

Current queue
RequestCategoryPriorityStateTrack
Equipment replacement High Waiting on supplier At risk
Compliance review Medium Human review On track
Account amendment Low Queued On track
Booking change Medium In progress On track
Invoice query Low Queued On track
Equipment replacement High In progress On track
Equipment replacement High Waiting on supplier At risk
Compliance review High Human review At risk

The hard part is often the data, not the drawing

A reporting view may combine the application database, a CRM, accounting, payments, an operational system, an API, an upload, event history, or the state of a workflow. Sometimes the hard part is not drawing the dashboard. It is reliably getting the right data into one place. That work is API integration, and it depends on each source system’s interface, permissions, limits and data model. Naming a source here is not a claim that it is already connected.

A dashboard does not repair inconsistent source data. Trust comes from ownership, definitions, timestamps, the system a figure came from, and the calculation rule. If two products can both change the same total, the screen will be argued with. The view should say which definition it used.

Live is a requirement, not a default

Not every board needs a stream. An event can refresh a queue when a request changes state. A near-real-time read suits a desk that is working the queue now. A schedule suits a morning snapshot. A person can refresh the record they have open. A daily close suits the monthly comparison.

The right freshness is the one the decision needs. Polling a ledger every second does not make yesterday’s invoices more useful, and it spends the provider’s rate limit.

From the total to the record

A useful path is summary, then segment, then the record, then the event or action underneath it. On the example board, 17 at risk becomes a reason split, then a request such as SR-4821, then the supplier wait that made it late. A manager who cannot open the case will ask someone else to do it, which is the problem the screen was meant to remove.

The same records can be cut for a role without copying the database. An executive may see trends and exceptions. Operations may see the queue, the workload and the failures. Finance may see transactions, reconciliation and ageing. A service team may see requests, response time and account state. An external stakeholder may see only the authorised records. A build does not need every one of those views. It needs the ones a real person will open.

That operations view is often one surface inside an internal business application, not a separate product beside it. A customer portal may expose a much smaller report to the account that owns the records, and nothing else. A SaaS product often keeps both: usage for the workspace, and the operator’s view of tenants, plans and failures. A knowledge screen may help someone find the record behind a figure. The figure itself stays a calculation in the report. The retrieval pattern is AI knowledge systems.

Exceptions before totals

The cases that need a person are the ones worth the top of the screen: overdue work, failures, an SLA at risk, an unusual change, missing data, an item waiting for approval, a record that needs investigation. A healthy total can hide all of those. The example holds the 17 at-risk requests above the month’s 1,248 completions for that reason.

Analytics calculates. A model may explain.

Totals, percentages, ageing, SLA, variance and money are ordinary calculations. They stay in code, on the records, with a definition someone can read. A model does not replace that arithmetic and it does not invent a KPI.

Where a model helps is afterwards. It can summarise what changed, explain a spike in the words a manager will actually read, point at an unusual pattern, draft commentary for a person to edit, help someone ask a question of the dataset already on screen, or suggest records worth opening. The answer on this page cites the medians and the equipment waits. It does not produce a new median. How that boundary is drawn more generally is AI application development.

A path that refreshes only what the view needs

Cloudflare can host the view. It is not the subject. Which services belong is on Cloudflare application development.

  • SourcesThe application’s own rows, plus other systems where an integration is actually feasible.
  • WorkerThe read, the permission check, and the measures. The browser does not hold the credential or the whole table.
  • D1, or the source that already owns the rowsDefinitions and the current aggregates when they are queried together. A remote system can remain the owner.
  • Schedule, event, or queueA refresh when something changes, a nightly snapshot, or a burst of events. Not a stream for its own sake.
  • The viewThe dashboard or the report, filtered to the role. Drill-down loads the next page of records, not the entire history.
  • OptionalR2 if a generated export is a file. Workers AI or AI Gateway if a person asks for an explanation of figures the code already calculated. Left out when a sentence of SQL is enough.

A number is still access to a record

Role decides which measures appear. Row and account decide which records a drill-down may open. Financial and operational totals are sensitive even when they are aggregates. A second organisation’s figures are not a filter away. Export is its own permission, and a useful audit trail can record who exported what. The web application around the board is what enforces that.

Scale is the same idea in the other direction. Precompute an aggregate when the question is asked every morning. Paginate and filter the records underneath it. Do not ship a year of events to the browser to draw one chart. A snapshot can be the report. None of that is a promise about a particular speed. It is how the view stays the size of the decision.

When a view is worth building

Build it

  • The data exists, and decisions still wait on someone assembling it.
  • The same spreadsheet is rebuilt every week or month.
  • Operational status is hard to see, so people ask.
  • Different roles need different cuts of the same records.
  • Exceptions are hidden by a healthy total.
  • A manager needs the record behind the number before acting.
  • More than one system has to feed one shared picture.

Leave it

  • A product you already pay for answers this question well.
  • The source data is too inconsistent to trust on a screen.
  • The measures themselves have not been agreed.
  • The question is a one-off analysis.
  • A spreadsheet is still the right size for the job.
  • The organisation needs a definition of the number before it needs a new interface.

Start from the question people keep asking

A useful first note names who asks, what they decide, which figure they currently rebuild, where that figure comes from, and what they open next. There is no account on this website.

Discuss a reporting view

Straight answers

Will you replace our existing reports?

Only when those reports do not answer the decision. A product that already does the job should stay.

Does the dashboard have to be live?

No. Fresh enough is the requirement. A daily snapshot is the right tool when the decision is made in the morning.

Can a model calculate the KPIs?

No. Counts, medians, variance and sums stay in ordinary logic. A model may explain a change the calculation already produced.