The questions your role asks, and the reports that answer them.
Pick your function. Each question shows the example report that answers it or the part it answers, or says we have not built one yet.
Every report on this page is an example built on generated data. The company names, sites and figures are invented.
How we treat performance on your data
A feature that feels instant on a thousand rows proves nothing about fifty million. So we test performance-sensitive features on a reference model of about 49 million rows before we recommend them for your data. When your volume calls for it, we start with aggregations, incremental refresh and, on Microsoft Fabric, Direct Lake. DirectQuery comes last, for sources in the billions of rows, because each interaction then queries your database. Some features will not earn their place on your data. We make that call with you. Every engagement starts from your questions and your data, never from this page.
In September 2026 we timed eight features that recur across the reports on this page. Each ran on the 49M-row reference model beside the same page without it, five times, on a first view with nothing cached. Generated data and our own hardware: the table shows which features to test first on your data, not how fast your report will be.
First view of one report page, 49M rows, median of five runs
Feature
With it
Without it
What we found
Matrix with subtotals, against a flat table
270 ms
230 ms
Slower in all 5 runs
A sort order the reader picks
320 ms
270 ms
Slower in all 5 runs
Columns the reader picks (field parameters)
260 ms
270 ms
No consistent difference over 5 runs. The slicers add 6 small queries, about 30 ms each, sent together
Row-level security
310 ms
260 ms
Slower in all 5 runs
Period comparisons, such as the same month last year
310 ms
340 ms
No consistent difference over 5 runs
Top N, such as the five largest customers
310 ms
290 ms
Slower in all 5 runs
A rank on every row
260 ms
260 ms
No consistent difference over 5 runs
Median or percentile
570 ms
290 ms
Slower in all 5 runs, about 2 times as long at the median
A median over millions of rows is the one to plan for. On your data we measure it before we recommend it.
What and how are the easy half.
A report shows what a number is, and how it is built, with little extra work. A why is harder: the report has to be built around the split that answers it, and many reports are not. Each card says which kind of question it is.
What
What the number is, and where it sits.
How
How the figure is built, and how you would know it is right.
Why
Why it moved. The report splits the change into its causes.
Example
A page in the report answers the question.
Partial
A page answers part of it. The card names the part it leaves out.
No example yet
No report on our shelf answers it today. We show at most two per function.
These are the questions each role usually asks, as we understand them. They are a starting list, and no survey produced them. Discovery tests them with your own people.
Or start from where the money leaks.
Five places where margin and cash usually go missing. Each points to cards already on this page and names the half we have not built. This page cannot size your leak: every figure on it comes from generated data, and only your own data says how big the leak is in your business.
Price leakage
Between the price you publish and the money you keep: the drop that policy allows, the drop outside it, and the drop where no policy exists.
Our cash cycle improved 17 days. Did we get more efficient, or did someone squeeze the suppliers?
Example, generated data
Cash cycle · What changed
This page splits the move into receivable, inventory and payable days with no remainder. A gain bought by paying suppliers later shows as exactly that.
Our Thai plant costs 40% more than the Polish one for the same product. Is my plant worse at this?
Example, generated data
Cost to make · 02 Why it moved
This page traces most of the gap to sourcing. Two plants make the main polymer in-house, and the others buy it in. The gap is mostly structural and passes no judgement on the plant.
Between the price we publish and the money we keep, how much do we give away, and how much of it did we authorise?
Example, generated data
Price realisation · 01 Where the money goes
This page splits the drop from list price to pocket price into three parts. Policy allows some, some falls outside policy, and some has no policy at all.
Downtime hours are flat on last year. So maintenance is under control?
Example, generated data
Maintenance and reliability · By asset
Flat hours hide the difference between an asset repaired once and one patched every six weeks. This page keeps corrective and preventive work apart for each asset.
When a machine breaks down, is the spare part on the shelf, or do we wait for it?
Example, generated data
Maintenance and reliability · Spare parts
The page replays 96 breakdown part requests through one assumed stocking policy. Three run out, all on the two impellers with a 90-day lead time, while a seal kit used 14 times never runs short. Availability follows demand and lead time, not the breakdown count.
We re-plan every week to catch up. Doesn't that help?
Example, generated data
Plan attainment · 01 Frozen against latest
The page scores the plan as frozen three weeks ahead beside the latest re-plan. On this generated data the re-plan scores lower, because last week's output does not predict this week's. The size of the gap is a setting of the generated data, and the report prints it.
Are we paying every statutory contribution the payroll says we owe, and on time, in every country?
Screenshot in preparation
Example, generated data
Labour cost · Statutory filings
Owed comes from the payroll and filed from the filing records, two separate sources. Seven of eight entities reconcile to the cent and one files 3.00% short. Another files the right amount late three times, so late filings are counted apart from the gap.
Four people once vanished from every manager's view. How do you know there is no fifth blind spot?
Example, generated data
Headcount · Reconciliation
Every person now sits in a unit someone owns. The four sit in an Unassigned row on the Reconciliation page, with a named owner. The page shows the fix and does not prove there is no fifth gap.
We run a lot of overtime on the line. Is it covering for people off sick, or for jobs we never filled?
Headcount
Not built. Headcount holds no absence or overtime records, and the labour cost bridge shows how much overtime moved cost, not why. Telling sickness from vacancy needs your absence records and open positions.
Claims spiked this quarter. Which production month do I send the team to investigate?
Example, generated data
Claims · Same claims, two answers
Claims by build month sit beside the naive claim rate. Over 40 generated runs, the build-month view found the planted months every time and the naive rate none.
Our TRIR is down again. Are we safer, or are people reporting less?
Example, generated data
HSE leading indicators · 2 Safer, or reporting less?
The verdict reads three figures together: the recordable rate, the recordable share of injuries and the near-miss rate. Its hit rate on planted cases is printed on the first page.
Energy is one of our biggest costs. Where do we cut it: peak hours, the CHP, or the tariff?
Scope 1-2 emissions
Not built. The emissions report holds monthly energy quantities with no price or tariff. Where to cut needs your utility bills and interval meter readings: peak and off-peak rates, the demand charge and the Ft adjustment.
Two reports so far: one on your Power BI tenant itself, one on the state of your data. The scale card borrows a finance report. Read the function page →
HowExample
My month-end pack is opened on the second working day. How do I know your 28-day window did not catch it asleep?
Example, generated data
Report sprawl · 1 The census
The never-viewed count never stands alone. It sits beside the reports whose rhythm is unknown, which no one should act on directly.
Our data quality score is 99.1%. Is the data fit to use?
Example, generated data
Data quality · 01 The scorecard
Not on that number alone. Two invoice-line rules hold 97.7% of the records checked, so they decide the score. The page prints the population and its unit beside every percentage.
We score every data rule. Which fix do we start with?
Example, generated data
Data quality · 02 What it costs
The page ranks the same six rules by the baht their failures move, instead of by pass rate. In this example the worst-scored rule moves the second-smallest amount.
The scorecard says 677 records failed. What do I hand the data owners?
Example, generated data
Data quality · 03 The register
The register turns those records into 97 findings, each with an entity, a detail line and an owner. A duplicated customer fails on two codes and counts as one merge.
Every customer is under its credit limit. Is any buyer over it without us seeing?
Example, generated data
Data quality · 03 The register
One legal entity holds two customer codes. Each code is under the limit alone and the two together are over it. The register lists it for credit control.
In thirty minutes we sort your questions into three piles. A report answers some on your data. Some need a split built for them. Your data cannot settle the rest yet.