Lesson 1 of 8
Unit · What it is for
The twenty-tile request is a symptom
Somebody asks for a dashboard with every indicator on it. That request is real and the specification in it is wrong, and the useful response is a question rather than a page — because a dashboard that answers no pending decision is one nobody opens twice.
The request as it arrives
“Can you build us a dashboard? We want coverage, admissions, defaulting, stock-outs, staffing, funding burn, beneficiary numbers by district and by month, and the indicators from the logframe.”
That is twenty tiles and it is a real request. Somebody wants to stop asking for numbers by email, and the dashboard is what they have a word for.
It is also a specification that guarantees a page nobody opens twice. Twenty numbers with no ordering is a table with more colours, and the reader has to supply the question the page should have answered.
The question to ask instead
“What decision are you about to make, and what would change it?”
Ask it once and one of three things happens, and all three are useful.
They name a decision. “Which six communities get rehabilitation.” Now you know the page has one job, the ordering is by that job, and most of the twenty tiles are not on it.
They name a recurring meeting. “The monthly cluster call.” Then the dashboard’s job is to make that call shorter, and the design question is what gets argued about every month — which is usually a definition, not a number.
They cannot answer. That is the most common outcome and it is a finding rather than a failure. It usually means the numbers are wanted for assurance rather than for a decision, and the honest response is a monthly one-page summary, not a dashboard.
Write the answer down at the top of the page, in the words they used. Every later argument about what to include is settled by reading it.
What each of the seven dashboards here is for
Every project on this platform states its decision in the entry, and the dashboard is built against it.
| Project | The decision it informs |
|---|---|
| WASH coverage | Which six of eighteen communities get water point rehabilitation |
| Nutrition screening | Where the next screening round and CMAM capacity go |
| Protection pathway | Which gate in the referral pathway to fix first |
| Food security | Which instrument the caseload figure is based on |
| School attendance | Which schools need an attendance response, and which look bad for a reporting reason |
| SMART survey | Whether the survey’s quality permits publishing a prevalence at all |
| Vaccination coverage | Whether a coverage figure reflects service or a denominator |
None of them is “monitor the programme”. Each is a sentence with a verb in it, and the tiles are chosen by whether they move that verb.
Three tiles, not twenty
The rule that survives contact with a real request.
Three headline numbers, at the top, in the size of a headline. They are the ones the decision turns on.
One table underneath, which is the disaggregation the decision needs — by district, by commune, by stage.
One figure, if a shape matters. Most pages need none; a pathway or a trend needs one.
Everything else goes behind a link, or into the report, or nowhere.
TILES = ["households surveyed", "improved source", "basic service", "no E. coli"]
assert len(TILES) <= 4, "if this fails, something has to leave the page"
# An assertion in the build is a more durable specification than an agreement.
Four is the practical ceiling and three is better. A row of tiles is read left to right and then abandoned.
What to do with the other seventeen
They are not worthless — they are the wrong artefact.
| The ask | Where it belongs |
|---|---|
| Every logframe indicator | The quarterly report’s annex table |
| Historic monthly series | A downloadable CSV, linked from the page |
| Beneficiary counts by everything | A pivotable export, not a page |
| Anything updated yearly | The report, not the dashboard |
| Anything nobody could name a use for | Nowhere, and say so |
Offer the alternative in the same sentence as the refusal. “Not on the dashboard, but I will put every logframe indicator in the quarterly annex and send you the CSV” is a different conversation from “no”.
The tile that should not be there
A tile earns its place only if a plausible value would change what somebody does.
def earns_its_place(tile) -> bool:
"""Would any value of this number change a decision this quarter?"""
return tile.decision is not None and tile.threshold is not None
# If you cannot state the threshold, the tile is decoration.
Ask for the threshold. “At what value of this would you do something different?” A tile whose owner cannot answer is a tile that is being watched rather than used, and watching is what a monthly report does more cheaply.
Total beneficiaries is the usual example. It goes up, everybody likes it, and no value of it changes anything. It belongs in the report.
Report it whole
Dashboard scope, WASH coverage project
Question the page answers: which six of eighteen communities receive water
point rehabilitation in the next funding cycle.
On the page: households surveyed, improved source, basic service, share
with no detectable E. coli; the district table; the source-against-service
figure.
Requested and not included: monthly trend (the survey is a single round),
every logframe indicator (quarterly annex), beneficiary totals (no
threshold could be stated), staffing and funding burn (a different
audience and a different page).
Agreed with the WASH coordinator on 2025-02-11. Revisit when the second
survey round exists, which makes a trend meaningful for the first time.
The “requested and not included” paragraph is the deliverable of this conversation, and writing it down is what stops the same twenty tiles being requested again in June by someone who was not in the room.
What comes next
A page with three numbers on it can still bury the one that matters. The next lesson is about the order they are read in, and about what belongs behind a link rather than on the page.