Lina's Channel ROMI — Chapter 3 Worked Example ==================================================== The five-channel marketing-attribution dataset behind Lina's clustered-column failure vs the single-encoding Big Idea rebuild in Chapter 3 of The Defensible Decision. Five channels, four metrics each, one audience question — and one chart shape that answers it in three seconds. Wholly synthetic. Any resemblance to a specific real B2B marketing-attribution dashboard is coincidental; the numbers are constructed so ROMI produces a clean sort with a clear top and bottom. Files ----- - lina-channel-romi.csv — flat rows: five channels × four metrics - lina-channel-romi.json — canonical scenario contract with source hash What it represents ------------------ The B2B marketing-attribution snapshot Lina is looking at on Monday afternoon. Five channels (Paid Social, Email, Search, Content, Display) each carry four metrics: leads, cost per lead, conversion rate, and return on marketing investment (ROMI). The VP wants to know where to spend the Q4 budget. Chapter 3 uses the dataset to contrast Lina's first-draft clustered column (five channels × three series × three axes to read) with the single-encoding sorted bar of ROMI (Paid Social top, Display bottom, both accented, ROMI dollars annotated) that answers the VP's question in three seconds. Invariants (locked) ------------------- The scenario carries executable invariants that Chapter 3's release contract enforces: - Exactly five channels: Paid Social, Email, Search, Content, Display. - Every channel carries all four metrics (leads, cost_per_lead_usd, conversion_rate_pct, romi_ratio). - ROMI produces a clean sort with a clear top and bottom: Paid Social $3.40 top, Display $0.80 bottom. - The Big Idea text names both channels and both ROMI values verbatim: "Paid Social returns $3.40 per marketing dollar; reallocate Q4 spend from Display, which returns $0.80." - The clustered-column state carries three series across five channels (series_count: 3), and the argument is not visible in three seconds. - The focused-bar state carries one series (series_count: 1, ROMI ratio), sorted descending, with the argument visible in three seconds and the Big Idea in the title. Why the invariants matter ------------------------- Chapter 3's pedagogical point is that the Big Idea — written before the chart — determines the chart's encoding, its sort order, its accents, and its title. If ROMI produced a muddy sort (e.g., two channels tied at the top), the sorted-bar rebuild would need a tiebreaker, and the Big Idea would need a compound sentence. If Display were not the clean bottom, the reallocation half of the Big Idea would need to name a different source channel. The numbers are locked to keep the three-second read intact. What it does NOT represent -------------------------- - Actual marketing-attribution data from any real company. - The full clustered-column chart's third-axis units (leads, cost per lead, conversion rate are on incompatible axes; that is the point of the failure, not a modelling target). - Q4 spend levels (the chapter's arc closes at the Big Idea; the reallocation math is left to the reader's discipline). Reproducibility --------------- The dataset ships from the book source at AlexBooks/applied-ai/ai-directed-viz/data/lina-channel-romi.json and is re-emitted here by AlexBooks/applied-ai/ai-directed-viz/scripts/generate-lina-channel.mjs --site-root . The generator writes the source SHA-256 into lina-channel-romi.json so drift between the book and this site is detectable. License ------- Released for teaching use alongside The Defensible Decision. Use freely.