Unit 12.03: Writing the summary before the layout
Write the summary sentence, then build only the charts that support a clause of it.
Three charts, three clauses
A plan with the decision, the audience, the summary sentence, and the charts supporting it.
The code prints one.
import json
plan = {
"decision": "whether to extend the Tuesday promotion to Wednesday",
"audience": "retail department head",
"summary_sentence": "Tuesday revenue rose 11% while comparable days were "
"flat, so the effect looks specific to the promotion.",
"supporting_charts": [
"slope chart: Tuesday vs Wed/Thu, before and after",
"weekly revenue, 24 weeks, with the promotion start marked",
"revenue per open hour, to rule out opening-time effects",
],
"explicitly_not_shown": ["margin", "footfall", "other stores"],
"limits": ["one store", "12 weeks either side", "no weather control"],
}
print(json.dumps(plan, indent=2))
print(f"\n{len(plan['supporting_charts'])} charts, each supporting one clause")
print("of the summary sentence. Anything supporting no clause is not built.")
Each chart supports one clause of the sentence. The third - revenue per open hour - exists to rule out an alternative explanation, which is a clause the sentence implies rather than states.
explicitly_not_shown is the field that prevents sprawl. Margin and footfall are interesting and support no clause, so they are not built.
The mistake this prevents
The mistake is building the charts first and writing the summary from what they show. That produces a dashboard whose story is whatever the available data happened to support, which is rarely the decision anyone had.
Takeaway
Write the summary sentence first and build only charts supporting a clause of it. Naming what you will not show is what stops a dashboard sprawling.
