A dashboard is not hard to build. Deciding which rows count as evidence is the work, and it is where most operational reporting quietly goes wrong.
What this covers
- Operational measures — receiving throughput, picker productivity, purchase price variance, on-time and in-full.
- Audience separation done properly. Cost-bearing reports refused to floor displays at the report-definition layer, not the render layer, so a number that should not face a public floor cannot reach one by accident.
- Absence of evidence made visible rather than averaged away. Undated lines are not on-time successes, and unmapped rows are shown as unmapped.
- Refresh that is honest about its age, so nobody acts on a figure they think is live.
See it in detail
The KPI console case study is this service in full: two audiences, two trust levels, and the identity chain that had to show its misses.
Who this is for
Operations where two people can pull the same measure and get two answers, and where the meeting to reconcile them happens often enough that somebody has stopped attending. Also anywhere a number faces an audience it was not scoped for — a floor display showing something cost-bearing is the common one.
It is the wrong service if the underlying report already times out. Fix the access path first; a dashboard on a query that cannot finish is a slower way to discover the same thing.
What we would look at first
- Which rows currently count. Open versus posted, credits against the original period, and which of two date columns the business actually means. Almost always unwritten.
- Who is allowed to see what, and whether that is enforced where the report is defined or merely where it is drawn.
- What the number does when data is missing — whether an undated line becomes an on-time success, and whether an unmapped row disappears or is shown as unmapped.
- How old the figure on screen is, and whether the screen says so.
What determines the cost
Overwhelmingly the definitions, not the rendering. If the business has never ruled on what counts as an on-time line, that ruling is a series of conversations with the people who own the answer, and it is the bulk of the engagement. After that: how many audiences need separating and whether the separation has to hold at the definition layer, how many source systems the measure crosses, and whether a trustworthy history exists or has to be rebuilt.
Proof
The KPI console is this service end to end, and it is worth reading for the part that is not the dashboard: two audiences at two trust levels, with the refusal enforced where the report is defined rather than where it is drawn, and an identity chain built to display the rows it could not match instead of dropping them. The measures were the short part. Ruling on which rows counted was the engagement.