Case Study 2: Rescuing a Dashboard Nobody Could Read

A composite, fictional-but-realistic example. The dashboard below is described in text (this is a Markdown book); the alt-text and the before/after labels are the teaching material.


The situation

A SaaS company's leadership team had a "company health" dashboard projected on a wall screen in every Monday meeting. It was built by a capable data engineer who thought carefully about the data pipeline and not at all about the words. Six tiles, six accurate charts—and every Monday the CEO asked the same question: "So... is that good or bad?" The dashboard answered every question except the only one its viewers had. The data was right. The writing was missing.

Here is what the six tiles said, before.

Dashboard (described), BEFORE. Six tiles in a grid. Tile 1: a line chart titled "MRR" ending at a value of $418K. Tile 2: titled "Churn Rate," showing 5.8%. Tile 3: "Support Tickets," a bar chart of weekly counts. Tile 4: "NPS," showing 32. Tile 5: "Active Users," a flat-ish line. Tile 6: "p99 Latency," showing 820ms. Every value is a bare number; every title is a metric name; the axes are labeled with database column names (mrr_usd, churn_pct, ttfv_days). Alt-text (before): "Six tiles, each showing a metric name and a single number or untitled chart, with no targets, comparisons, or status indicators."

A viewer scanning this for five seconds learns six facts and can interpret none of them. Is $418K of MRR good? Up or down? Is 5.8% churn alarming or fine? Is an NPS of 32 a win? The dashboard makes the viewer go find the context elsewhere—which, in a five-second glance at a wall screen, they never will. Every tile commits the chapter's failure 3: an exhibit dropped without interpretation.


The principle we'll apply

Wherever a number appears, the text must help the viewer know what it means and whether it's good or bad. A dashboard can't carry a full recommendation the way a memo can—but three small surfaces do most of the work:

  • Titles that state the takeaway, or (for changing data) the question the tile answers—not the topic.
  • Labels in the viewer's language, with units and a comparison ("vs. target," "vs. last month").
  • Tooltips that explain anomalies, define the metric, or add the "so what?" that won't fit on the face.

The rewrite, tile by tile

Tile 1 — MRR. - ❌ Before: title MRR, value $418K. - ✅ After: title "Revenue: on pace for the $450K target?"**, value `$418K ▲ 3% vs. last month · 93% to Q-end target`. Tooltip: "Monthly recurring revenue. On pace to hit 93% of the $450K quarter-end target; the gap is driven by slower enterprise renewals this month." - Why: the title asks the question the CEO asks out loud; the value carries direction and distance-to-target; the tooltip explains the gap. A glance now answers "good direction, slightly behind."

Tile 2 — Churn. - ❌ Before: title Churn Rate, value 5.8%. - ✅ After: title "Churn: trending up — watch new accounts", value 5.8% ▲ (target: <4%) ⚠️. Tooltip: "90-day churn. Above our 4% target and rising; the increase is concentrated in accounts under 90 days—see the onboarding analysis." - Why: the ⚠️ and the "▲ (target: <4%)" tell a two-second scanner this is the tile to worry about. The title points to the cause; the tooltip links to the deeper work (Dana's memo, Case Study 1).

Tile 3 — Support tickets. - ❌ Before: title Support Tickets, a bar chart of weekly counts. - ✅ After: title "Support load: where are tickets coming from?", with the bars relabeled by category (Password reset, Billing, Bugs, Other) instead of raw weekly counts, and a callout on the tallest bar: "58% — password reset." Tooltip: "Tickets by topic, last 4 weeks. Password reset is the single largest driver—fixing it would cut volume most." - Why: the original showed how many tickets without showing what they're about—the actionable cut. The takeaway title and the category breakdown deliver the "so what?"

Tile 4 — NPS. - ❌ Before: title NPS, value 32. - ✅ After: title "NPS: recovering since the March fix", value 32 ▲ from 24 (industry avg ~30). Tooltip: "Net Promoter Score. Up 8 points since we fixed onboarding friction in March; now slightly above industry average." - Why: 32 alone is meaningless to most viewers; against last quarter (24) and a benchmark (~30) it reads instantly as "improving, now decent."

Tile 5 — Active users. - ❌ Before: title Active Users, a flat line. - ✅ After: title "Active users: flat for 3 months after a year of growth", with the plateau region shaded and labeled "growth stalled here." Tooltip: "Weekly active users. Growth has stalled since Q1 — worth investigating whether activation or retention is the cause." - Why: the flat line looks fine until you notice it used to climb. The title and shaded plateau make the stall unmissable instead of something a viewer has to spot.

Tile 6 — p99 latency. - ❌ Before: title p99 Latency, value 820ms. - ✅ After: title "API speed: within SLA?", value 820ms ✓ (SLA: <1000ms). Tooltip: "99th-percentile API response time, last 24h. Within our 1-second SLA, with ~180ms of headroom." - Why: 820ms reads as alarming to a non-engineer (it's nearly a second!) until the SLA context shows it's fine, with headroom. The ✓ and the comparison prevent a false alarm.

Also fixed across all tiles: the axis labels changed from database column names (ttfv_days, mrr_usd) to viewer language ("Days to first value," "Monthly recurring revenue (USD)").


The AFTER, described

Dashboard (described), AFTER. Six tiles. Each title is a question or takeaway, not a metric name. Each value carries a direction arrow, a comparison (target, last period, or benchmark), and a status mark (✓ or ⚠️). Two tiles (churn, active users) are flagged for attention; four read as on-track. Tooltips on hover explain anomalies and link to deeper analyses. Axes use plain-language labels. Alt-text (after): "Six tiles, each with a question/takeaway title, a value shown against its target or trend with a status indicator, and an explanatory tooltip; the two tiles needing attention are flagged."

In the next Monday meeting, the CEO didn't ask "is that good or bad?" once. She looked at the wall, said "churn's the problem this week—what's the onboarding plan?", and the meeting started where it should have. The charts were identical to the month before. The words turned a gallery into a guide.


The honesty constraint

Two of the new titles state a claim ("recovering since the March fix," "flat for 3 months"). On a live dashboard, a fixed claim becomes a lie when the data moves—if NPS slips next quarter, "recovering" is false and nobody will notice, because the words don't update. The safe patterns: title for the question ("Is NPS recovering?") rather than a fixed answer, or pair the value with a status indicator (✓/⚠️ or a red/amber/green dot) that updates with the data. The churn and latency tiles above do this correctly—their interpretation lives in an indicator that moves. The interpretation must stay true as the numbers change; that is the "so what?" discipline applied to a surface you don't rewrite every day.


Back to: Chapter 27 · Exercises · Case Study 1 · Key Takeaways