File: 2026.10.26 - Lumenwire Audio - 03 Story and Chart Choices.md
Lumenwire Audio: Story and Chart Choices
Stage 3 (Data Visualisation), Viktor. 26-Oct-26. Built from Business Requirements v1.1 and KPI Calculation Pack v1.1 (with Kewpie's Root Cause Findings). Sample data, data to 30-Sep-26. Test case.
Files
- Standard:
02 - Deliverables/2026.10.26 - Lumenwire Audio - 03 Dashboard Standard.html - Experimental A (dot swarm for the buying-ahead story):
02 - Deliverables/2026.10.26 - Lumenwire Audio - 03 Dashboard Experimental A.html - Experimental B (broadsheet, every page on one scroll):
02 - Deliverables/2026.10.26 - Lumenwire Audio - 03 Dashboard Experimental B.html - Build:
03 - Working Files/viktor_build_dashboard.py(writes all three fromviktor_dashboard_template.html, with the first Why article fromviktor_why1_standard.htmlorviktor_why1_swarm.html),viktor_series.py(longer 12-month series, checked to the cent against02_results.json)
1. The story, in plain sentences (written before any chart)
Beginning (headline and actions)
- Revenue over the last 12 months is A$80.5m, 5.1% below the path to A$115m.
- Most of the fall is OEMs cutting their buying by 47% after two years of buying ahead, and the only software growth is one A$7.4m licence.
- Hardware has held at A$12.6m to A$14.5m a quarter for five quarters: the fall has stopped, but nothing has replaced it. Without the licence, software is down 15.6%, and 31.5% of design wins have shipped against a 35% target. The business isn't yet growing underneath the fall.
- Top 3 actions: the CEO and CFO rebuild the forecast and sales plan (A$115m by 30-Jun-28); the CEO checks the product and sales effort behind software (0% or more by 30-Jun-27); the VP Sales refocuses on design wins that will ship (35% by 30-Jun-27).
Middle (what changed, and why)
- Revenue peaked at A$122.1m in Jun-24 and has been flat at about A$80.5m since Jun-26, while the path rises A$1.43m a month.
- From FY25 to FY26, OEMs buying fewer units than they installed took A$48.0m off revenue. Installs falling 3.3% took only A$1.8m. The licence (A$7.4m) and smaller rebates (A$4.5m) softened the fall.
- OEMs ordered about twice what end customers installed from Jul-24 to Apr-25, once lead times had fallen from about 48 weeks to 8. Since May-25 orders match installs (1.03 times). Strong Inference.
- Software grew only because of the one licence: without it, software fell from A$21.0m to A$17.7m.
- About a third of design wins ship, and the share stops rising after three years. The 80% belief was never measured.
End (what to do)
- Three owners, three targets, from the Business Requirements. Six open decisions the board is waiting on, each with an owner and a due date.
- New devices activated (signed off by the Head of Platform Engineering) and Forecast accuracy (signed off by the CFO) are rated on page one from Business Requirements v1.2. End customers kept installing while OEM buying fell, and neither forecast saw it.
Read-aloud test: the four beats make sense without the charts. Every cause named is in Kewpie's Root Cause Findings; none goes beyond them.
↑ Back to top
2. Pattern
Newspaper (Pattern 5), because the audience is the chair and the board, monthly, in the board pack and on screen: they read rather than scan.
| Page | Contents |
|---|---|
| 1. Front page | Masthead, headline, standfirst, the top 3 action cards, "In brief" with all of the Top 5, each rated (Forecast accuracy shows Finance and Sales on the one tile) |
| 2. What changed | Lead article: revenue against the path to A$115m. Second article: the FY25 to FY26 bridge. Pull quote: A$48.0m |
| 3. Why | Three articles, largest cause first: OEM buying against installs; the software bridge; how many design wins ship |
| 4. What to do | The 3 actions in full (pace needed and trend), and the decisions the board is waiting on |
| 5. Demand and forecasts | New devices activated, Months of stock cover, Forecast accuracy (signed off 27-Oct-26) |
| 6. Back page | Drill-down (collapsed): software sub-KPIs with and without the licence; design wins per quarter and months to ship. Definitions. Business Requirements version |
Page turns: Previous and Next buttons, page counter, arrow keys, swipe. Each page has its own link (#front, #changed, #why, #do, #demand, #back). Print shows every page in order.
Signed off (Business Requirements v1.2): New devices activated (K2) and Forecast accuracy (K5) are now full rated tiles on page one. The earlier "held for sign-off" tiles are gone (see the v1.2 update below).
↑ Back to top
3. Chart for each KPI, from the question it answers
| KPI | Question | Chart | Where |
|---|---|---|---|
| Total revenue, last 12 months, against the path to A$115m (K1) | Will we reach A$115m by the date? | Actual against the required path (target tracking): 12-month revenue from Jul-22, dashed path from Jun-26 to Jun-28, gap labelled at today, FY27 board plan as a marker. Toggle: total, or hardware and software | Tile; page 2 lead |
| Total revenue (K1), root cause | What made it fall? | Bridge (root cause): FY25 A$118.4m to FY26 A$80.6m in 6 effects, adding up exactly | Page 2 |
| Total revenue (K1), root cause | Why did OEMs buy less? | Dumbbell: units ordered against devices installed per month, in 4 phases | Page 3 (Experimental A: hexagonal dot swarm) |
| Software revenue growth without one-off large licences (K3) | Is growth real? | Bridge: 12 months to Sep-25 against 12 months to Sep-26 | Tile; page 3 |
| Design wins that ship (K4) | How many ship, and when? | Line: share shipped by age, Jan to Jun 2023 design wins, with the 35% target and the 80% belief as reference lines | Tile; page 3 |
| Share of software revenue from the largest licences (K3.1), Gross margin % (K3.2) | Where are we against target, with and without the licence? | Bullet chart (target tracking), with a "With / Without the A$7.4m licence" toggle | Back page |
| Design wins per quarter (K4.2), Months from design win to first shipment (K4.1) | Is the count rising while shipping stays flat? How long to ship? | Columns by quarter; dot row of median months by design-win quarter | Back page |
| New devices activated (K2) | Is the dip real, and is it over? | Diverging bars: change on the same quarter a year before | Page 5, flagged |
| Months of stock cover at the OEMs that report (K2.1) | Are OEMs still sitting on stock? | Line with the 6-month target and 9-month red line | Page 5, flagged |
| Forecast accuracy (K5) | Can we trust the forecast? | Two lines (Finance, Sales), signed error by quarter, with the ±10% target band | Page 5, flagged |
Colour: Monochrome blue throughout. No chart has 3 or more categories, so the Charcoal and teal category colours aren't needed. Status colours only on status chips, always with an icon and a word.
Interaction: dark and light mode; page turns; total or hardware and software split on the lead chart; with or without the A$7.4m licence on the software sub-KPIs; hover detail on every chart with a "Why it matters" line from the Business Requirements; "See data" table under every chart; charts play on first view and replay on click; nothing moves with reduced motion. No period toggle: the board reads one period (12 months to Sep-26).
↑ Back to top
4. Side-summary cards, in reading order
- Revenue for the last 12 months is A$80.5m, A$4.36m below the path to A$115m.
- OEMs buying fewer units than they installed took A$48.0m off revenue.
- OEMs ordered about twice what end customers installed, then stopped.
- Software grew to A$25.1m only because of one A$7.4m licence.
- About a third of design wins ship, and the share stops rising after three years.
- Three owners, three targets, and six decisions that unlock them.
- End customers kept installing; it was OEM buying that fell, and neither forecast saw it.
- Installs fell 1.4% over 12 months, but the latest quarter is up 4.9%.
- Reporting OEMs hold 10.9 months of stock, down from 15.4 at the peak.
- Neither forecast called the hardware step, and Sales has been too high in 12 of 12 quarters.
- One licence is 29.4% of new software contract value; without it the largest is 4.9%.
- Design wins rose to 1,180 in FY26 while the share that ships stayed flat.
Full card text is on the page. Each card picks up from the one before.
↑ Back to top
5. Experimental options (never replacing the Standard)
| Version | Zone it changes | Rule it bends | Keeps |
|---|---|---|---|
| A: Dot swarm | Page 3, first article (the buying-ahead cause) | Exact values can't be read: one dot is 50,000 units, rounded, coloured "installed" or "bought beyond installs", one swarm per financial year FY23 to FY26 | Every other chart and number; a "See data" table with the exact units |
| B: Broadsheet | Layout only | Page turns: all six pages run on one scroll in newspaper columns, the way it prints in the board pack | Every chart, card and number of the Standard |
Experimental C: broadsheet front page (from Adam's Stage 3 feedback, 26-Oct-26)
Adam's feedback: Keep: "I like standard and experiment A". Change: "Generate a newspaper style like the Washington Post".
File: 02 - Deliverables/2026.10.26 - Lumenwire Audio - 03 Dashboard Experimental C.html, built by the same viktor_build_dashboard.py with viktor_style_c.css and viktor_c.js. The Standard, A and B files are unchanged.
| Detail | |
|---|---|
| Same as | The Standard's story, numbers, six pages, side-summary cards and charts, with Experimental A's dot swarm as the first "Why" article |
| Look | Inspired by a classic US broadsheet front page, not a copy. Own nameplate, "The Lumenwire Board Edition", centred serif over a thin double rule. A dateline bar (edition, date, period, Sample data, Business Requirements v1.1). Big serif headline with an italic deck in three ruled columns. Small-caps kickers, drop caps on the card story, fine column rules between articles, photo-caption style measure lines under the cards |
| Colour and type | Off-white newsprint (#f6f1e7) and black ink, with one restrained blue (#1f4e8c) for the data. Status chips keep their colours, icon and word. Dark mode is ink-dark newsprint. Georgia or "Times New Roman" for the words, a system sans for the numbers and charts. No web fonts, so the page is self-contained |
| Rule it bends | Layout only. The masthead scrolls away instead of staying sticky, to give the articles room; the page-turn buttons, arrow keys and swipe still work |
| Checks | First screen at 1280 × 800: tiles end at 793px. Phone: first two tiles end at 726 of 812px. No sideways scroll on any page at 375px. Every control at least 44px. Light and dark both switch. No console errors. Figures checked against 02_results.json by the builder |
Experimental D: tech and pro-audio magazine (Adam's request, 26-Oct-26)
Adam's request: "Add another experimental - this time a tech magazine style like Wired, PCMag, Technology Magazine and https://www.audiotechnology.com/".
File: 02 - Deliverables/2026.10.26 - Lumenwire Audio - 03 Dashboard Experimental D.html, built by the same viktor_build_dashboard.py with viktor_style_d.css and viktor_d.js. Standard, A, B and C were checked byte for byte (SHA-256) before and after: unchanged.
| Detail | |
|---|---|
| Same as | Experimental C's content: the Standard's story, numbers, six pages and side-summary cards, with A's dot swarm as the first "Why" article |
| Look | Inspired by tech and pro-audio magazines, not a copy. Cover-style nameplate "LUMENWIRE AUDIO" in heavy condensed capitals with tight leading. Dark-first. A level-meter rule under the masthead (bars in the accent, the last stretch in the warm colour, like a meter going into the red). Thick black rules, a modular grid, numbered section tags ("03 / Why"). KPI tiles as spec sheets: monospace rows and a boxed score-badge number. Each card's finding set as a pull quote |
| Colour and type | Near-black (#0b0b0d) with white type. One electric accent for the data (#22d3ee dark, #0369a1 light). A warm accent only for off track (#ff7a45 dark, #c2410c light). Contrast: accent 10.9:1 and warm 7.6:1 on dark; accent 5.9:1 and warm 5.2:1 on white. Fonts are system stacks only: Impact or Arial Narrow for display, Helvetica or Arial for text, ui-monospace for figures and labels |
| Rule it bends | Layout only. The masthead scrolls away instead of staying sticky; the page turns, arrow keys and swipe still work |
| Checks | First screen at 1280 × 800: tiles end at 754px. Phone: first two tiles end at 607 of 812px. No sideways scroll on any page at 375px. Every control at least 44px. Light and dark both work. Figures checked against 02_results.json by the builder |
Declutter pass (all five versions, 2026.10.27)
Adam kept the charts and side summaries as they were, and asked for less clutter and more whitespace. Changes are in the shared template, so all five versions get them.
| Before | After | |
|---|---|---|
| Space between sections and chart blocks | About half that | 44px on desktop, 32px on a phone |
| Article boxes | Filled panel, border, rounded corners | No box: the side card and chart sit on the page |
| Side card | Blue left bar | No bar, more room between lines |
| Measure line under each card | Ended with "Sample data." | Smaller and lighter; "Sample data" shown once, at the top (plus the footer) |
| Chart notes and caption | Under every chart | Behind "See data" with the table |
| Page 5 pending flags | A tag on every article | One tag on the page's opening card |
| Action cards, decision list, back sections | Boxes, fills and row rules | Plain, with a single rule above each back section |
| Experimental C and D | Rules plus fills | Rules kept (the personality), fills dropped |
No chart, number, side-card text, story line or tile changed. Every figure still passes the builder's check against 02_results.json.
Fix: "Design wins per quarter" (and any chart on a hidden page) drew at zero width, or kept a stale width after a resize. Charts now redraw when they are shown, if their width doesn't match.
Checks after the pass:
| Version | Top 5 tiles end at 1280 x 800 | Phone: second tile ends | Sideways scroll | Targets under 44px | Zero-width charts | Console errors |
|---|---|---|---|---|---|---|
| Standard | 728px (above the fold) | 731px | None | 0 | 0 | 0 |
| Experimental A | 728px | 731px | None | 0 | 0 | 0 |
| Experimental B | 744px | 775px | None | 0 | 0 | 0 |
| Experimental C | 793px (just above the fold) | 735px | None | 0 | 0 | 0 |
| Experimental D | 754px | 607px | None | 0 | 0 | 0 |
Light and dark modes both checked.
Business Requirements v1.2 update (27-Oct-26)
The Head of Platform Engineering signed off New devices activated and the CFO signed off Forecast accuracy, both as written. No targets or thresholds changed.
| Before | After | |
|---|---|---|
| Front page, New devices activated | "Held for sign-off" tile, no number | -1.4%, Off track. Target +5% by 30-Jun-27, gap -6.4 pts, needs +0.71 pts a month, trend +0.63 pts a month. Note: last quarter alone +4.9% |
| Front page, Forecast accuracy | "Held for sign-off" tile, no number | Finance -17.2% (Behind) and Sales +25.6% (Off track) on one tile. Target within 10% by 30-Jun-27, gap 7.2 / 15.6 pts too wide, needs -2.4 / -5.2 pts a quarter, trend -11.3 / -4.5 pts a quarter. The sparkline shows both misses for the last 4 quarters |
| "In brief" label | "the Top 5 · two held for sign-off" | "the Top 5" |
| Page 5 | "Held for sign-off", pending flags on every card | "Demand and forecasts", a normal page: same charts and side cards, no flags. The opening card now links installs, OEM stock and the forecast misses |
| Pending notes elsewhere | Bridge, phases chart and definitions said "pending" | Removed; definitions say who signed off and when. The telemetry question is gone from the open decisions; "which forecast counts" stays |
| Footer and masthead | Business Requirements v1.1, edition 26-Oct-26 | Business Requirements v1.2, edition 27-Oct-26 |
Story: the headline, deck and Top 3 actions are unchanged. The new tiles support the existing story rather than change it: installs fell only 1.4% while OEM buying fell 47%, which is the headline's cause, and the forecast misses are what action 1 (the CFO rebuilds the forecast OEM by OEM) fixes. The CFO is still to choose which forecast counts, so both are shown.
Also fixed: on a phone, the "lead time about…" labels on the Why page's phases chart ran off the right edge. They now sit on their own line under the ratio.
Front-page spacing (Adam): 44px between the headline and deck, the Top 3 actions and "In brief" (32px on a phone), against 6 to 10px inside each block. For C and D the room was won back from line spacing inside the deck and the action cards, with no content cut.
Experimental D fonts (Adam, 27-Oct-26): heavy condensed capitals are now kept only for the nameplate and the big section numbers. Headings, findings, pull quotes and tile titles are in bold sans, sentence case (Segoe UI, Helvetica Neue, Arial, system-ui), body text is 16px with line-height 1.5, and monospace is used only for tile figures and tables. D's first screen ends at 770px and its phone second tile at 679px. Standard, A, B and C are byte-identical.
Why page spacing (Adam, 27-Oct-26): the three findings (OEM buying ahead, the one licence, design wins that ship) are now about 80px apart on desktop and 48px on a phone, with a quiet thin rule halfway (C uses its black rule, D its heavy rule, B a thin column rule). No chart, text or number changed.
Checks after the update:
| Version | Top 5 tiles end at 1280 x 800 | Phone: second tile ends | Sideways scroll | Targets under 44px | Zero-width charts | Console errors |
|---|---|---|---|---|---|---|
| Standard | 770px | 734px | None | 0 | 0 | 0 |
| Experimental A | 770px | 734px | None | 0 | 0 | 0 |
| Experimental B | 786px | 778px | None | 0 | 0 | 0 |
| Experimental C | 787px | 739px | None | 0 | 0 | 0 |
| Experimental D | 784px (770px after the font change) | 631px (679px after the font change) | None | 0 | 0 | 0 |
Light and dark both checked. Every figure is asserted against 02_results.json in the builder, including the new tile figures.
Stage 5 walk-through with Marcus (27-Oct-26, approved by Adam)
| Before | After | |
|---|---|---|
| Why page, third finding (design wins), side-card story | "Of the 430 design wins from Jan to Jun 2023, 21% had shipped at 18 months and 32% at 42 months. The 80% belief was never measured. Today 31.5% of wins old enough have shipped, against a 35% target. The design-win bonus raised the count, not the shipping rate." | "Of 430 design wins from Jan to Jun 2023, 21% had shipped at 18 months and 32% at 42. The 80% belief was never measured. Today 31.5% of wins old enough have shipped, against 35%. Since Jul-24 reps earn A$400 per win with no clawback: wins rose from 230 to 273 a quarter, but the shipping rate stayed flat." (59 words) |
| Front page, Top 3 action cards | Owner label only | Owner label with a quiet "○ No update" at its right, on the same line (no extra height) |
| What to do page, each action | Owner, action, pace line | Adds a last line: "○ Status: no update yet. The CEO gives the first update at the next board meeting." (VP Sales for the third action) |
No status data exists, so nothing is invented: the line says no update yet and who reports. Every figure is from the KPI Calculation Pack (A$400 per design win from FY25, no clawback; 230 to 273 wins a quarter; shipping rate 21.6% to 22.8% at 18 months). I also fixed a bug: the action cards now stack on a phone. First screen at 1280 x 800: Standard 770px, A 770px, B 786px, C 786px, D 770px.
↑ Back to top6. Traceability (every element to a KPI, every KPI shown)
| Element | Traces to |
|---|---|
| Headline, standfirst, action card 1, page 2 | Total revenue (K1), objective O1 |
| Action card 2, software bridge, software detail | Software revenue growth (K3), Share from largest licences (K3.1), Gross margin % (K3.2), objective O2 |
| Action card 3, ship curve, design wins detail | Design wins that ship (K4), Months to first shipment (K4.1), Design wins per quarter (K4.2), objective O3 |
| Page 3 first article | Total revenue (K1) Root Cause Findings |
| Page 5 | New devices activated (K2), Months of stock cover (K2.1), Forecast accuracy (K5), objectives O1.1 and O1 |
| Decisions list | Open questions in the Business Requirements |
| Backlog (EBITDA, design wins as a headline, paid features) | Not shown, as the Business Requirements say |
All 5 Top 5 KPIs and all 5 sub-KPIs are shown. Every number is taken from 02_results.json (the Calculation Pack's source). The only new series (12-month revenue and software growth for more months, for the sparklines and the path chart) repeat Kewpie's method and are checked against every month Kewpie published.
↑ Back to top
7. Checks run
- First screen at 1280 × 800: masthead, headline, standfirst, the 3 action cards and the 5 "In brief" tiles all fit (measured in the browser).
- Phone (375 × 812): headline and the first two tiles show before any scroll; no sideways scrolling; every control at least 44px.
- Bridges add up: FY25 to FY26 adds to A$80.6m with A$0.0m unexplained; the software bridge adds to A$25.14m with the A$0.03m licence-table difference shown as its own step.
- Light and dark mode both checked. No console errors.
- No codes on their own, no em dashes, Australian English.
8. Notes for Adam
- The pack's Root Cause Findings for Total revenue still say "9.3 months of cover" in one line; the v1.1 measure is 10.9 months. The page uses 10.9 throughout.
- Naming OEMs on the board page is open (CFO with legal), so no OEM or customer is named anywhere on the page.