Week 6 · Deliver BI people trust › Day 38
Day 38. Dashboards people read in ten seconds
By the end of today you can
- Design from the audience's decisions, not from available data
- Lay out a page with KPIs, trend, breakdown and detail
- Choose chart types, colours and labels that don't mislead
- Make reports fast, accessible and honest about freshness
1. Why this matters
A dashboard is judged in its first ten seconds: can a restaurant area manager see whether yesterday was good, why, and what to look at next? Technical depth means nothing if the page doesn't answer that. This is the most visible part of your portfolio.
2. Start from decisions
For each audience, write three questions and the decision each drives:
| Audience | Question | Decision |
|---|---|---|
| Area manager (QSR) | Which restaurants were below same-weekday-last-year yesterday? | Call those managers by 10:00 |
| Revenue manager (hotel) | Where is pace behind for the next 30 days? | Open discounts or push channels |
| Agency account lead | Which campaigns' ROAS fell this week? | Shift budget |
| Finance | Is month-to-date net sales on budget? | Forecast conversations |
One page per audience. If a visual doesn't serve a question on the list, it doesn't go on the page.
3. Page anatomy
┌──────────────────────────────────────────────────────────────┐
│ Title · Data as of 2026-09-14 06:42 · Filters (brand, region)│
├───────────┬───────────┬───────────┬──────────────────────────┤
│ Net sales │ Orders │ Avg check │ Food cost % │ ← KPI tiles: value, vs LY, sparkline
├───────────┴───────────┴───────────┴──────────────────────────┤
│ Trend: net sales by business day vs same weekday LY │ ← one line + reference
├──────────────────────────────┬───────────────────────────────┤
│ Breakdown: by restaurant │ Mix: channel share by week │ ← sorted bars, not pies
│ (sorted, variance coloured) │ │
├──────────────────────────────┴───────────────────────────────┤
│ Detail: table with conditional formatting; drill-through page │
└──────────────────────────────────────────────────────────────┘
People read top-left first. Put the one number that matters there.
4. Visual rules
- Bar for comparison, line for time, table for lookup. Pie/donut only for 2–3 parts of a whole, if ever.
- Sort bars by value. Start bar axes at zero.
- Colour has meaning: one neutral colour for data, one accent for "look here" (below target), consistent brand colours if you show brands. Don't use red/green as the only signal (colour-blind users): add icons or labels.
- Label directly instead of legends where possible. Remove gridlines, borders and 3D.
- Comparisons beside every KPI: vs LY, vs budget, vs last week. A number alone is not information.
- Tooltips for detail, drill-through for "show me this restaurant", bookmarks for saved views.
Maths and principle
Principle: perceptual accuracy varies by encoding. People judge position on a common scale most accurately, then length, then angle and area, and colour saturation least.
Equation: perceived magnitude for area grows sublinearly, roughly \(\psi \propto A^{0.7}\) to \(A^{0.8}\) (Stevens' power law), so a bubble twice the area looks less than twice as big. Position and length are perceived nearly linearly (\(\psi \propto L^{1}\)).
Analogy: measurement instruments with different resolutions; pick the most precise one for the comparison that matters. Where it breaks: maps, where geography carries meaning. Then use a sorted bar chart beside the map for the actual comparison.
Try it: bubble A has area 100, bubble B has area 200. If \(\psi \propto A^{0.7}\), how much bigger does B look? (2^0.7 ≈ 1.62×, not 2×.)
5. Honest freshness and performance
- A "Data as of" label from
ops.load_audit(latest successful load), not the refresh time. If a source is missing, show a banner: "Hotel H3 not received; H3 excluded". - Performance Analyzer in Desktop shows each visual's DAX and render time. Target under 1–2 s per visual; fewer visuals per page; avoid high-cardinality slicers.
- Accessibility: alt text on visuals, tab order, contrast, a mobile layout for the KPI page.
The 5-year lens
Show the draft to a real or role-played user and watch them use it without explaining. Note where they hesitate. Fixing those three spots beats any amount of polish. In your portfolio, include a short "design notes" section: audience, questions, what you removed and why. Hiring managers rarely see candidates explain what they left out.
Lab
- Write the audience/question/decision table for the QSR ops page and the hotel revenue page.
- Build both pages in Power BI following the anatomy. Use your Day 37 measures.
- Add a "Data as of" card from
ops.load_auditand a missing-source banner (a measure returning text when completeness < 100%). - Add a drill-through page for one restaurant and tooltips with the 28-day trend.
- Run Performance Analyzer; fix the slowest visual.
- Ask Claude Code to critique screenshots as a busy area manager. Apply what holds up.
- Export PNG screenshots for the README; record a 60-second walkthrough.
Ship
feat(powerbi): QSR ops and hotel revenue pages with freshness banner.
Check yourself
1. Best chart to compare net sales across 18 restaurants?
Position on a common scale, sorted, is easiest to compare.
2. Where should the "Data as of" time come from?
Refresh can succeed on stale data. Show when the data itself was last loaded.
3. A KPI tile shows "Net sales $48,210". What's missing?
Without a comparison, people can't tell good from bad.