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
9 are waiting on suppliers, 5 are awaiting customer information, 3 have exceeded the internal review target.
Requests received and completed
September, by week. Select a week for the figures.
| Week | Received | Completed | At risk |
|---|---|---|---|
| 1–7 Sep | 312 | 298 | 3 |
| 8–14 Sep | 338 | 331 | 4 |
| 15–21 Sep | 356 | 322 | 6 |
| 22–28 Sep | 418 | 297 | 4 |
Showing the current queue.
| Request | Category | Priority | State | Track |
|---|---|---|---|---|
| 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 | |
| Equipment replacement | Medium | Waiting on supplier | At risk | |
| Booking change | High | Waiting on supplier | At risk | |
| Invoice query | Medium | Waiting on supplier | At risk | |
| Equipment replacement | High | Waiting on supplier | At risk | |
| Account amendment | Medium | Waiting on supplier | At risk | |
| Equipment replacement | High | Waiting on supplier | At risk | |
| Booking change | Medium | Waiting on supplier | At risk | |
| Account amendment | Medium | Awaiting customer | At risk | |
| Compliance review | Medium | Awaiting customer | At risk | |
| Invoice query | Low | Awaiting customer | At risk | |
| Booking change | Low | Awaiting customer | At risk | |
| Equipment replacement | Medium | Awaiting customer | At risk | |
| Compliance review | High | Human review | At risk | |
| Account amendment | Medium | Human review | At risk |
Open at month close161
Completed1,106
Median response1h 46m
At risk at close11
August is closed. 6 were waiting on suppliers, 3 were awaiting customer information, and 2 had passed the review target. The live queue on this board is September.
| Week | Received | Completed | At risk |
|---|---|---|---|
| 4–10 Aug | 280 | 260 | 2 |
| 11–17 Aug | 290 | 274 | 3 |
| 18–24 Aug | 300 | 281 | 3 |
| 25–31 Aug | 270 | 291 | 3 |
Where September moved
- Equipment replacement, 412 received. The largest share, and the source of the response-time increase.
- Booking change, 318 received.
- Compliance review, 286 received.
- Account amendment, 240 received.
- Invoice query, 168 received.
Those five categories are the 1,424 requests received in September. Completed work was 1,248. The 17 at-risk cases are a stock, not a sixth category.
Median response increased from 1h 46m to 2h 18m. Most of the increase came from equipment replacement requests, where 11 cases waited on supplier confirmation.
- Previous median
- 1h 46m, August close
- Current median
- 2h 18m, September
- Equipment waits
- 11 cases waited on supplier confirmation. 5 of those are still in the at-risk queue.
- What calculated it
- The medians and the 11 are counted from the request records. The sentence only points at them.
September against August
| Measure | August | September | Change |
|---|---|---|---|
| Completed | 1,106 | 1,248 | +142 |
| Median response | 1h 46m | 2h 18m | +32m |
| At risk at period end | 11 | 17 | +6 |
| Open | 161 | 184 | +23 |
Completed work rose. So did the time to respond, and the number of cases sitting outside the target. The commentary a person would attach is the equipment-supplier wait, not a new total.
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.
Related
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.