File: 2026.10.26 - Lumenwire Audio - 01 Business Requirements.md
Lumenwire Audio: Business Requirements
Test case. Lumenwire Audio is a made-up company. Marcus was played by the case's stakeholder agent. Data is Sample data.
1. Document control
| Field | Detail |
|---|---|
| Version | 1.0 |
| Date | 26-Oct-26 |
| Status | Draft for the Stage 1 gate |
| Author | Gary, business requirements lead (KPI Creator, Stage 1) |
| Stakeholder | Marcus, co-founder and CEO, Lumenwire Audio |
| Sign-off | Marcus confirmed the playback with corrections, 26-Oct-26. Pending: Adam (acting subject matter expert, test mode) at the Stage 1 gate; the Head of Platform Engineering for the telemetry KPI; the CFO for the forecast KPI |
| Source record | 2026.10.26 - Lumenwire Audio - 01 Meeting Script.md |
2. Problem Statement
Revenue fell by about a third in a year, from A$118.4m to A$80.6m, and the board was caught by surprise because nobody puts the Finance, Sales and Engineering numbers together. Nobody can yet show, from one set of numbers everyone trusts, whether the business is still growing underneath the fall.
As stated by Marcus: Revenue went from A$118.4m in FY25 to A$80.6m in FY26, down about a third. The board says they were blindsided, and Ros (chair) wants to see the business properly, not just a quarterly P&L. The board wants revenue back to A$115m within two years and a view it can trust each month. Marcus believes hardware fell because of an industry soft patch (tariffs, interest rates, delayed venue projects, cautious OEMs), while software grew 38% to A$25.7m, gross margin rose from 71% to 77%, and there was a record 1,180 design wins. Q1 FY27 came in at about A$19m.
As Gary understands it: The fall itself is known. What's missing is one joined-up view that tells the board whether the business underneath is healthy or whether more falls are coming. Marcus has a story he wants the board to see, but by his own account: design-win conversion has never been measured, the CRM is bonus-driven, the forecasts aren't trusted, and the telemetry has never been used as an end-customer view. The dashboard has to test that story, not just tell it. The word to come back to is Marcus's own: "growing underneath the fall".
↑ Back to top3. Objectives
| ID | Objective | How it helps solve the Problem Statement |
|---|---|---|
| O1 | Get revenue back to A$115m within two years (date to confirm with the board) | The board's headline measure of recovery |
| O1.1 | Know whether we're still growing underneath the fall (Marcus's words) | The question nobody can answer today |
| O2 | Keep software growing, with gross margin holding up | Shows whether the part Marcus calls "the future" is real |
| O3 | Keep design wins turning into shipping products | Tests the leading indicator Marcus relies on but has never measured |
4. Audience and decisions
| Audience | Decisions | How often | Format |
|---|---|---|---|
| Chair (Ros) and the board | Are we still growing underneath the revenue fall? Do we keep pushing software? | Monthly | One page in the board pack, and on screen between meetings. Phone: unknown |
| CEO (Marcus) and exec team: CFO (Priya Anand), VP Sales (Gemma Lowe), Head of Platform Engineering (Tomasz Wierzbicki) | Where to put sales and engineering effort; whether to keep pushing software; which actions the board hears about each month | Monthly (to confirm) | Screen (to confirm) |
| Sales team | Where to focus, using the same numbers as Finance | Unknown | Unknown |
5. Business Requirements with Data Mapping
Owners are roles. Targets and thresholds are Gary's proposals unless marked "Marcus". Every measure is marked Draft: Kewpie to confirm.
5.1 Top 5 KPIs (what and why)
| KPI | Objective | Type | What do we want to know? | Why? | Action if outside threshold | Action owner | Priority |
|---|---|---|---|---|---|---|---|
| Total revenue, last 12 months, against the path to A$115m (K1) | Revenue back to A$115m (O1) | Lagging | Is revenue tracking towards A$115m, split hardware and software, as a trend | The board's headline target; the board hears from the CEO first | CFO takes the forecast apart OEM by OEM; CEO changes the sales plan and effort and briefs the board early (Marcus) | CEO | Must Have |
| New devices activated in the field, last 12 months against the year before (K2) | Growing underneath the fall (O1.1) | Leading | Are end customers still installing our devices, whatever OEMs are buying now | If installs hold while hardware revenue falls, OEMs are running down stock; if installs fall too, it's demand | VP Sales moves effort to regions and OEMs where installs grow; CEO tells the board whether it's demand or stock (Gary's proposal) | VP Sales | Must Have, pending Head of Platform Engineering; off page one until then |
| Software revenue growth, last 12 months against the year before (K3) | Software growing (O2) | Lagging | Is software growth real and repeatable | Decides whether to keep pushing software | CEO and Head of Platform Engineering check the product; VP Sales checks the sales effort (Marcus) | CEO | Must Have |
| Design wins that ship, as a % of design wins old enough to have shipped (K4) | Design wins to shipping (O3) | Leading | How many design wins actually ship | Never measured; record design wins only matter if they ship | VP Sales refocuses on wins that will ship, not ones that earn a bonus; Head of Platform Engineering checks engineering support (Marcus) | VP Sales | Must Have |
| Forecast accuracy: actual quarterly revenue against the forecast at the start of the quarter (K5) | Revenue back to A$115m (O1) | Leading | Can we trust the forecast, so the board isn't blindsided again | Forecasts aren't trusted; Sales and Finance argue | CFO rebuilds the forecast OEM by OEM, one number for Finance and Sales (Marcus) | CFO | Must Have, pending CFO; off page one until then |
5.2 Targets, thresholds and sign-off
| KPI | Target (SMART) | Evidence | Green | Amber | Red | SME sign-off |
|---|---|---|---|---|---|---|
| Total revenue, last 12 months (K1) | A$115m by 30 Jun 2028 (the board's "within two years"; date to confirm, Q-1) | Observed Fact (value, Marcus); Strong Inference (date) | On or above straight-line path from A$80.6m (FY26) to A$115m | Up to 5% below path | More than 5% below | CEO, 26-Oct-26 |
| New devices activated (K2) | At least 5% growth year on year by 30 Jun 2027 | Working Hypothesis | 5% or more | 0% to under 5% | Falling | Pending Head of Platform Engineering |
| Software revenue growth (K3) | To be agreed by VP Sales and CFO (Q-3). Starting proposal: at least 20% a year by 30 Jun 2027 (FY26 was 38%, Marcus) | Working Hypothesis | 20% or more | 0% to under 20% | Falling | CEO, 26-Oct-26 |
| Design wins that ship (K4) | 80% by 30 Jun 2027 (Marcus's belief, never measured; reset after Kewpie's baseline) | Working Hypothesis | 80% or more | 60% to under 80% | Under 60% | CEO, 26-Oct-26 |
| Forecast accuracy (K5) | Within 5% of actual each quarter by Q4 FY27 (30 Jun 2027) | Working Hypothesis | Within 5% | 5% to 10% out | More than 10% out | Pending CFO |
5.3 How measured (Draft: Kewpie to confirm)
| KPI | How measured | Data source and fields | Filters and conditions |
|---|---|---|---|
| Total revenue, last 12 months (K1) | Sum of revenue over the last 12 months, each month, against a straight line from A$80.6m (Jun-26) to A$115m (Jun-28). R12M = -1 × SUM(gl_monthly.amount_aud) for revenue accounts; path(m) = 80.6m + 34.4m × months since Jun-26 / 24 | gl_monthly.amount_aud, period, account_code and gl_accounts.pl_group: the P&L Marcus trusts, same as the board pack. erp_invoice_lines.product_family as a cross-check | Revenue accounts 4000, 4050, 4100, 4110, 4200, 4210; flip the sign (credits). Rebates (4050) reduce revenue. Hardware = 4000, 4050, 4200; software = 4100, 4110. Reconcile to the stated A$118.4m and A$80.6m. Latest complete month |
| New devices activated (K2) | Devices joining a network for the first time in the last 12 months, against the 12 months before. COUNT(DISTINCT device_serial) by first_seen_ts | device_activations.device_serial, first_seen_ts; oem_id, country_from_ip, module_sku for splits. Engineering telemetry, the source Marcus trusts most | One row per device. Sample data is 1 in 10 devices: counts × 10 (growth % unaffected). Exclude test or beta-firmware devices if the Head of Platform Engineering says so (Q-4). Sample data from Jan-21 |
| Software revenue growth (K3) | Software revenue last 12 months ÷ the 12 months before, minus 1 | gl_monthly accounts 4100 (perpetual licences) and 4110 (subscriptions); software_licences.contract_value_aud as a cross-check | Sign flipped; latest complete month; July to June year |
| Design wins that ship (K4) | Of opportunities that reached design win at least 18 months ago, the share that have reached shipping | crm_opportunities.stage_entered_design_win, stage_entered_shipping, stage, stage_entered_lost; owner, region, oem_id for splits. erp_invoice_lines.oem_id, sku to confirm shipping, since the CRM is bonus-driven | 18-month window (Gary's proposal, Q-11). Exclude rows with no design-win date and report how many. Lost after design win counts as not shipped |
| Forecast accuracy (K5) | Each quarter: ABS(actual - forecast) / actual, for each forecast source | forecast_snapshots.forecast_amount, amount_unit, source, forecast_quarter, snapshot_date, product_family; actuals from gl_monthly revenue accounts | Convert AUD thousands to AUD. Use the snapshot on or before the quarter start (CFO to confirm, Q-5). Match product family to revenue accounts. From FY24 Q1 |
5.4 Sub-KPIs (they explain a Top 5 KPI)
| Sub-KPI | Parent | What it explains | Action and owner | Draft measure and source (Kewpie to confirm) |
|---|---|---|---|---|
| OEM stock on hand, top 40 OEMs (K2.1) | New devices activated (K2) | Whether OEMs are running down stock, which explains installs holding while invoices fall | VP Sales tells the CEO a hardware recovery is likely and plans for it (Gary's proposal). Targets after baseline. Pending with K2 | SUM(oem_inventory_reports.units_on_hand) by calendar quarter; match oem_name to oem_master; compare OEMs reporting in both quarters |
| Share of software revenue from the largest licences (K3.1) | Software revenue growth (K3) | Marcus's "how much of it comes from one big licence" | VP Sales shows growth without the biggest licence and plans the renewal (Gary's proposal). Green under 10%, Amber 10% to 20%, Red over 20% | Largest (and top 5) software_licences.contract_value_aud ÷ total, licences starting in the last 12 months. No customer names on the board page |
| Gross margin %, last 12 months (K3.2) | Software revenue growth (K3) | Marcus's "gross margin holding up" | CFO explains mix, cost or price (Gary's proposal; Marcus gave no action). Green 77% or more, Amber 75% to under 77%, Red under 75% | (revenue - cost of sales) / revenue from gl_monthly by gl_accounts.pl_group |
| Months from design win to first shipment (K4.1) | Design wins that ship (K4) | Marcus's "how long it takes" | Head of Platform Engineering checks engineering support. Thresholds after baseline | Median months between stage_entered_design_win and stage_entered_shipping |
| Design wins per quarter (K4.2) | Design wins that ship (K4) | The count Marcus watches, read against conversion | VP Sales reviews how design wins are logged if the count rises while conversion falls (Gary's proposal) | Count of stage_entered_design_win by financial quarter |
6. Backlog (Nice to Haves)
| Item | Reason |
|---|---|
| Underlying earnings (EBITDA) | No action named; Marcus dislikes "accountant metrics". He isn't sure it's a Nice to Have but agreed to park it. Revisit once the CFO gives the FY27 targets |
| Design wins per quarter as a page-one headline | Reps are paid per design win with no clawback, so it can be inflated. Kept as a sub-KPI under Design wins that ship (K4) |
| Paid software features switched on in the field (telemetry) | Gary's idea; not raised by Marcus, no owner or action. Revisit after the Head of Platform Engineering explains the telemetry |
7. Data inventory
History and refresh for every system are unknown to Marcus (Q-6). Sample data ranges shown for reference only.
| Source (owner) | Tables in the Sample data | Grain | Marcus on trust | Quality notes |
|---|---|---|---|---|
| Finance ERP and ledger: P&L and board pack (CFO) | gl_monthly, gl_accounts, erp_invoice_lines, sales_orders, oem_master | Month by account; invoice line | Trusts the P&L for what it shows | Ledger credits are negative. Sample data Jul-19 to Sep-26 |
| Forecasts (CFO and VP Sales) | forecast_snapshots | Snapshot by source, quarter, product family | Doesn't trust Finance forecasts: built off last year's run rate | Mixed units (AUD and AUD thousands) |
| Sales CRM (VP Sales) | crm_opportunities | Opportunity | Trusted less than the P&L: reps work to a bonus | Some rows have a stage but no stage dates |
| Engineering telemetry, Grafana (Head of Platform Engineering) | device_activations, device_heartbeat_monthly | Device at first join; device by month | Trusts it most; "covers basically everything out there" | Never used as an end-customer view. Sample data is 1 in 10 (activations) and 1 in 200 (heartbeat) |
| OEM stock reports (VP Sales) | oem_inventory_reports | OEM, quarter, SKU | "A bit patchy"; never looked at them | Top 40 OEMs, free-text names, calendar quarters |
| Software licences (CFO, Marcus thinks) | software_licences | Licence contract | Not stated | Not stated |
| Board targets and FY27 budget (CFO) | board_targets, board_plan_fy27, board_budget_fy27 | Target; month by product group or P&L line | Marcus doesn't know the FY27 targets | Not adopted until the CFO walks through them (Q-2) |
| Account manager bonus plan (People team) | sales_incentive_plans | Plan year, role | Context for "reps are working to a bonus" | Reference only |
8. Constraints and chart preferences
- One page, monthly, for the chair and the board; on screen as well as in the board pack
- Things people in the business can act on. No "accountant metrics" (Marcus)
- Sales and Finance use the same numbers
- New devices activated (K2) and Forecast accuracy (K5) stay off page one until the Head of Platform Engineering and the CFO have given their view
- Naming OEMs on the board page: CFO and legal to decide. Be careful naming customers
- Show the trend towards A$115m, not a single point. All three outcomes on one page
- Tools and other chart preferences: ask the VP Sales or CFO
9. Assumptions
| Assumption | Evidence |
|---|---|
| FY25 revenue A$118.4m, FY26 A$80.6m; software A$25.7m (up 38%); gross margin 71% to 77%; 1,180 design wins; Q1 FY27 about A$19m. Stated by Marcus, not yet calculated | Working Hypothesis |
| Financial year runs July to June | Observed Fact |
"Within two years" means the year ending 30 Jun 2028. The Sample data's board_targets lists A$115m for FY28, set by the Board on 26-Aug-26. Marcus asked that the date be confirmed with the board | Strong Inference |
| About 80% of design wins ship (Marcus's belief, never measured) | Working Hypothesis |
| Device activations show what end customers install, not what OEMs buy (Gary's proposal) | Working Hypothesis |
Since FY25, account managers are paid A$400 per opportunity moved to design win, no clawback if later lost (sales_incentive_plans) | Observed Fact |
| All owners, actions, targets and thresholds not marked "Marcus" are Gary's proposals | Observed Fact |
10. Open questions
| ID | Question | Owner | Due |
|---|---|---|---|
| Q-1 | How was the A$115m set, and does "within two years" mean the year ending 30 June 2028? | Chair, via the CEO | 6-Nov-26 |
| Q-2 | What are the FY27 targets for revenue, gross margin, earnings, software and design wins, and where did each come from? | CFO | 6-Nov-26 |
| Q-3 | What target should Software revenue growth (K3) carry? Starting proposal: at least 20% a year | VP Sales with the CFO | 6-Nov-26 |
| Q-4 | What can the telemetry show and not show as an end-customer view: coverage, history, refresh, test devices, link to OEMs? | Head of Platform Engineering | 6-Nov-26 |
| Q-5 | Which forecast should Forecast accuracy (K5) measure, which snapshot is "the start of the quarter", and does the CFO support the measure? | CFO | 6-Nov-26 |
| Q-6 | How far back does each system go, and how often does each refresh? | CFO, VP Sales, Head of Platform Engineering | 6-Nov-26 |
| Q-7 | Can OEMs be named on the board page, and can customers? | CFO with legal | 6-Nov-26 |
| Q-8 | Will the chair look at the page on a phone? | Chair, via the CEO | 6-Nov-26 |
| Q-9 | What tools and chart preferences should we follow? | VP Sales or CFO | 6-Nov-26 |
| Q-10 | What happens if nothing changes in the next six months: what's the forecast view? | CFO | 6-Nov-26 |
| Q-11 | How long after a design win should a product be expected to ship (the window for Design wins that ship, K4)? Starting proposal: 18 months | VP Sales with the Head of Platform Engineering | 6-Nov-26 |
Due dates are Gary's proposal.
↑ Back to top11. Change log
| Version | Date | Change | Reason | Approved by |
|---|---|---|---|---|
| 1.0 | 26-Oct-26 | First version from the Stage 1 interview (7 questions). Playback corrected by Marcus: Problem Statement now says "nobody puts the Finance, Sales and Engineering numbers together"; "see revenue coming before it lands" replaced with his words "know whether we're still growing underneath the fall"; A$115m date left to the board; New devices activated (K2) and Forecast accuracy (K5) kept off page one until the Head of Platform Engineering and CFO give their view; earnings parked | Stage 1 interview | Pending (Adam at the Stage 1 gate) |
File: 2026.10.26 - Lumenwire Audio - 02 KPI Calculation Pack.md
Lumenwire Audio: KPI Calculation Pack
Stage 2 (KPI Development), Kewpie. Version 1.0, 26-Oct-26. Built on Business Requirements v1.0 (approved 26-Oct-26, no changes).
Data label: Sample data. Synthetic data for the test run. Latest complete month: September 2026 (the data ends 30 September 2026). Financial year runs July to June.
Re-run: 03 - Working Files/02_calculations.py reads the 18 CSVs and writes 02_results.json. 02_build_pack.py turns that into this pack, the challenge notes and the Kewpie columns of spec.json. Every number and every root cause test below comes from those two scripts, so any figure can be re-run and checked.
Two things Gary flagged, and where they landed
- Reps are paid per design win with no clawback: the design-win counts sit under the conversion rate, and the Root Cause Findings test whether the bonus changed anything (it changed volume and deal size, not the shipping rate so far).
- Forecast data mixes units: 12 of 84 snapshot rows are in AUD thousands (FY24-Q1, FY24-Q2, FY24-Q3, FY24-Q4, Finance only). All are converted to AUD before any calculation. Left unconverted, Finance's first forecast would be out by 99.9%.
Pending sign-off, built anyway. New devices activated (K2) is pending the Head of Platform Engineering. Forecast accuracy (K5) is pending the CFO. Both are built and tested below and carry that flag. Neither goes on page one until the person named has given their view.
1. Summary: the Top 5
| Top 5 KPI | Baseline (period) | Target | Pace needed | Run rate (last 3 periods) | Status |
|---|---|---|---|---|---|
| Total revenue, last 12 months, against the path to A$115m (K1) | A$80.5m in the 12 months to Sep-26, against a path of A$84.9m (-5.1%) | A$115m by Jun-28 | A$1.64m a month more | -A$0.02m a month | Red |
| New devices activated in the field, last 12 months against the year before (K2) | -1.4% (2,492,460 devices against 2,528,350); last quarter alone +4.9% | At least +5% by Jun-27 | +0.71 pts a month | +0.63 pts a month | Red (pending Head of Platform Engineering) |
| Software revenue growth, last 12 months against the year before (K3) | +19.7% (A$25.1m against A$21.0m); without the A$7.4m licence of Mar-26: -15.6% | To be agreed (proposal: +20% by Jun-27) | A$2.78m a month for the rest of FY27, against A$1.48m a month without the licence | -6.2 pts a month | Amber |
| Design wins that ship, as a % of design wins old enough to have shipped (K4) | 31.5% (672 of 2,131 design wins at least 18 months old) | 80% by Jun-27 | +5.4 pts a month | +0.08 pts a month | Red |
| Forecast accuracy: actual quarterly revenue against the forecast at the start of the quarter (K5) | FY27-Q1: Finance -17.2%, Sales +25.6% (4-quarter average miss: Finance 23.2%, Sales 34.3%) | Within 5% by Jun-27 | Finance -4.1 pts a quarter | Finance -11.3 pts a quarter (Sales -4.5 pts) | Red (pending CFO) |
All five baselines are Observed Fact on the Sample data, except Design wins that ship (K4), which is a Working Hypothesis: 33% of the design wins the CRM knows about have no stage dates and cannot be counted (above the 5% rule).
Reading the pace column. Total revenue (K1) is flat at about A$80.5m, so it needs A$1.64m a month more to reach A$115m. Software growth (K3) looks near target only because of one licence. Without it, the pace needed is about twice the run rate.
What the data says about the story Marcus told
| What Marcus said | What the data shows | Verdict |
|---|---|---|
| Revenue fell from A$118.4m to A$80.6m | Ledger A$118.4m and A$80.6m; invoices reconcile to the ledger to the cent in every year | Confirmed (Observed Fact) |
| Software grew 38% to A$25.7m | A$25.7m, +38.2%. But A$7.4m of it is one licence signed on 2026-03-27: without it FY26 software is -1.6% | Number confirmed; "growth" is one deal (Observed Fact) |
| Gross margin went from 71% to 77% | 71.0% and 77.0%. Without the licence, FY26 is 74.7% (assuming the licence carries no cost of sales) | Number confirmed; the gain is mostly that licence (Strong Inference) |
| A record 1,180 design wins | 1,180 in FY26, confirmed. 31.5% of those old enough have shipped, not 80% | Count confirmed; the 80% belief is not (Observed Fact on dated records) |
| Hardware fell because of an industry soft patch | End-customer installs fell 3.3% in FY26 (A$1.8m of a A$49.8m hardware volume fall). OEMs bought 47% fewer units | Mostly not demand: OEMs stopped buying ahead of installs (Strong Inference) |
| Q1 FY27 about A$19m | A$19.4m (plan A$22.4m) | Confirmed; -13.3% against plan |
2. The Top 5 and their sub-KPIs
Each measure below is Confirmed (Gary's draft ran as written) or Corrected (changed, with the Before and After in section 5, and logged as a challenge note where it affects the target or the data).
Total revenue, last 12 months, against the path to A$115m (K1)
Measure status: Corrected (hardware and other revenue split). Objective: Get revenue back to A$115m within two years (O1). Owner: CEO.
- Plain English: Revenue over the last 12 months, shown each month against a straight line from FY26 actual (A$80.6m) to A$115m by June 2028. Split hardware and software.
- Calculation:
R12M(m) = -1 x SUM(gl_monthly.amount_aud)over the 12 months to month m, for account codes 4000, 4050, 4100, 4110, 4200, 4210.path(m) = 80.6m + (115m - 80.6m) x months since Jun-26 / 24.gap = R12M - path. - Sources and why:
gl_monthly.amount_aud,period,account_codeandgl_accounts.pl_group: the ledger Marcus trusts and the board pack uses. Cross-check:erp_invoice_lines.net_amount_audbyproduct_familyreconciles to the ledger by financial year and family, largest difference A$0.00. - Grain: month by account (summed over cost centres).
- Filters: pl_group 'revenue' (6 accounts); credits flipped to positive; volume rebates (4050, debit) reduce revenue and freight recovered (4210) is included. This reproduces A$118.4m (FY25) and A$80.6m (FY26) exactly. Hardware = 4000 + 4050. Software = 4100 + 4110. Other = 4200 + 4210 (developer kits and freight).
- Baseline: A$80.54m for the 12 months to Sep-26 (hardware A$54.8m, software A$25.1m). Path at Sep-26: A$84.9m. Gap -A$4.36m (-5.14%), just beyond the 5% Red line. Observed Fact. Peak was A$122.1m in 2024-06.
- Pace needed: (A$115m - A$80.54m) / 21 months to Jun-28 = A$1.64m a month. The straight-line path itself rises A$1.43m a month. Run rate over the last 3 months: -A$0.02m a month. Off pace.
- Counter-metric: Gross margin %, last 12 months (K3.2), baseline 76.5%. Revenue can be pulled forward with volume rebates: in FY25, 46% of hardware revenue landed in the four quarter-end months (rebates are only ever booked in those months), against 33% if spread evenly. Watch the margin and the rebate rate (6.7% of hardware sales in FY25, 4.6% in FY26).
- Notes: The R12M contains the A$7.4m licence of Mar-26 (9% of the figure). If the rest of FY27 repeats last year month by month without that licence, the 12 months to Jun-27 would be about A$73.1m, against a path of A$97.8m (an illustration, not a forecast). Hardware has been flat for five quarters (FY26-Q1 to FY27-Q1: A$12.9m, A$14.5m, A$12.6m, A$14.4m, A$13.4m). FY27-Q1 is +3.9% on the year before, the first quarter that is not a fall. No unmapped accounts, no duplicate ledger rows.
Sub-KPIs under Total revenue: none
Gary's list has no sub-KPI under K1. The split by hardware and software is shown inside K1, and the reasons for the movement are in the Root Cause Findings.
New devices activated in the field, last 12 months against the year before (K2)
Measure status: Corrected (repeat serials and OEM backfill). Objective: Know whether we're still growing underneath the fall (O1.1). Owner: VP Sales. Pending sign-off: Head of Platform Engineering (Tomasz Wierzbicki).
- Plain English: Devices that joined a network for the first time in the last 12 months, against the 12 months before.
- Calculation: keep the earliest
first_seen_tsperdevice_serial;activations(R12M) = 10 x COUNT(device_serial)where that first date is in the 12 months to Sep-26;growth = this / prior 12 months - 1. The table is a 1-in-10 sample, so counts are multiplied by 10 (growth % is unaffected). - Sources and why:
device_activations.device_serial,first_seen_ts(engineering telemetry, the source Marcus trusts most);oem_id,country_from_ip,module_skufor the splits. - Grain: device (first activation).
- Filters: one row per serial (5,040 repeat rows dropped, 0.42% of rows); beta-firmware rows are all from 2021-22 and none fall in the window (0); data starts Jan-21; 107,210 rows have no
oem_id(8.9%): 22,024 are recovered throughmanufacturer_code(each code maps to one OEM) and 85,186 stay unassigned. This affects only the OEM split, not the headline. - Baseline: -1.4% for the 12 months to Sep-26 (2,492,460 against 2,528,350). The year before was +3.0%. Observed Fact on the sample. Last quarter alone (Jul to Sep 26 against the same months of 2025): +4.9%.
- Pace needed: (+5.0% - (-1.4%)) / 9 months to Jun-27 = +0.71 pts a month. Run rate: +0.63 pts a month. Slightly off pace, and closing.
- Counter-metric: Share of activations that are repeat serials (a device re-joining counted as new), baseline 0.51% in the 12 months to Sep-26. It guards against re-flashed or test devices inflating the count.
- Notes: Coverage is the open question (Q-4): the sample cannot say what share of installed devices phone home. Telemetry is a clue for end-customer demand, not yet proof. In the data, units invoiced per device activated were 1.91 in Jan to Jun 25 and 1.04 since Jul-25 (see the Root Cause Findings for what that implies). Duplicate-serial share is steady (0.47% before the dip, 0.53% during).
Sub-KPI under New devices activated: OEM stock on hand, top 40 OEMs (K2.1)
Measure status: Corrected (reels, free-text names, 35 reporters not 40). Owner: VP Sales. Pending the Head of Platform Engineering and VP Sales.
- Plain English: Units of our parts the reporting OEMs hold, by calendar quarter, compared only across the OEMs that reported in both quarters.
- Calculation:
SUM(units)byquarter, whereunits = units_on_hand x 500for rows described as reels of 500, otherwiseunits_on_hand. Quarter-on-quarter change uses only OEMs that reported in both quarters. - Sources and why:
oem_inventory_reports.oem_name,quarter,sku_or_description,units_on_hand(Sales; the only stock view we have);oem_master.oem_nameto match names. - Grain: OEM by quarter by SKU line.
- Filters: 235 spellings of OEM names clean up to 35 OEMs (case, spacing, hyphens and company suffixes), and all match
oem_master. 88 rows are reels of 500 (counts of 3 to 117, converted to units). 229 rows are finished goods containing our parts: kept, but they are not loose stock. No duplicate rows. Calendar quarters. - Baseline: 841,883 units reported by 28 OEMs in 2026-Q3. Peak 1,590,583 in 2025-Q2 (31 OEMs). Like for like (OEMs reporting in both quarters), stock fell 17.1% in 2026-Q3 on 2026-Q2, and 45.4% from the 2025-Q2 peak to 2026-Q3 (25 OEMs reporting in both). Observed Fact for the reporters; coverage is 46% of FY26 hardware revenue.
- Pace needed: none yet: Gary's target and thresholds are 'to be agreed after the baseline'. Run rate (average like-for-like quarterly change, last 3 quarters): -12.3% a quarter.
- Counter-metric: not required for a sub-KPI. Reporting is voluntary and uneven (22 to 31 OEMs a quarter), so always show how many OEMs reported.
- Notes: Only 35 OEMs report, not 40. Stock at the reporters is still 9.3 months of their current purchases (it was 7.9 at the peak, because purchases fell faster than stock). A reading of 'destocking is over' is not supported yet. Notes on the reports vary (includes goods in transit: 163, excludes Mexico plant: 162, estimate: 157, as at month end: 123), so definitions differ by OEM.
Software revenue growth, last 12 months against the year before (K3)
Measure status: Confirmed. Objective: Keep software growing, with gross margin holding up (O2). Owner: CEO.
- Plain English: Software revenue over the last 12 months divided by the 12 months before, minus 1.
- Calculation:
-1 x SUM(gl_monthly.amount_aud)for account codes 4100 and 4110 over the 12 months to Sep-26, divided by the same for the 12 months before, minus 1. - Sources and why:
gl_monthly(the P&L). Cross-check:software_licences.contract_value_audbystart_dateequals the ledger within A$27k in any month and A$13k over FY26. The ledger books software at the licence start date, for annual subscriptions as well as perpetual licences. - Grain: month by account.
- Filters: accounts 4100 and 4110 only; sign flipped; latest complete month Sep-26.
- Baseline: +19.7% for the 12 months to Sep-26 (A$25.1m against A$21.0m). FY26 was +38.2%, reproducing Marcus's 38%. Observed Fact. Without the A$7.4m licence of 2026-03-27: -15.6% (-1.6% for FY26).
- Pace needed: to reach +20% for FY27, software must be A$30.8m. With A$5.85m booked in Jul to Sep 26, the other 9 months need A$2.78m a month. Trailing software without the licence runs at A$1.48m a month. Run rate of the growth figure: -6.2 pts a month, because the 12-month base now contains a very large month (the 2026-03 licence stays in the figure until Mar-27, then drops out and growth falls to about -31% by Jun-27 if the rest of the year repeats last year without a new deal like it).
- Counter-metric: Renewal rate of annual subscriptions due in the last 12 months (renewed / (renewed + lapsed)), baseline 88.7% (328 contracts decided; 75 still pending and 88 with no status are left out). Prior 12 months: 88.2%. It guards against growth built on contracts that do not renew.
- Notes: The licence table has 1,750 of 3,096 contracts with no
oem_id. The A$7.4m contract has 0 seats (the only contract in the table with none), is a perpetual licence, and belongs to Corvane (OEM0079), which was our largest hardware customer in FY25 (A$5.4m) and bought 53% less in FY26. What the contract is, is a question for the CFO. This pack is internal; do not name the customer on the board page until the CFO and legal decide (Q-7).
Sub-KPI under Software revenue growth: Share of software revenue from the largest licences (K3.1)
Measure status: Confirmed. Owner: VP Sales.
- Plain English: The largest licence (and the largest five) as a % of all software contract value started in the last 12 months.
- Calculation:
MAX(contract_value_aud) / SUM(contract_value_aud)forsoftware_licenceswithstart_datein the 12 months to Sep-26. Top 5 likewise. - Sources and why:
software_licences.contract_value_aud,start_date,customer_name,licence_type(the contract detail Finance holds). - Grain: licence contract. Filters: start date in the last 12 months (617 contracts). Customer names stay off the board page (Q-7).
- Baseline: largest licence 29.4% of A$25.2m started; top 5 40.5%. Without the Mar-26 licence: largest 4.9%, top 5 18.4%. The year before: 3.9% and 14.6%. In no earlier financial year did the largest licence exceed 6.6%. Observed Fact. Status: Red (10% green line, 20% red line).
- Pace needed: target is below 10% by Jun-27: -19.4 pts. This happens on its own in Mar-27 when the licence leaves the 12-month window, so the figure will not show whether sales behaviour changed. Run rate: not meaningful (one contract).
- Counter-metric: not required for a sub-KPI.
- Notes: Even the second-largest licence is A$864k, so the cliff is one contract.
Sub-KPI under Software revenue growth: Gross margin %, last 12 months (K3.2)
Measure status: Confirmed. Owner: CFO.
- Plain English: (Revenue minus cost of sales) divided by revenue, over the last 12 months.
- Calculation:
(R12M revenue - R12M cost_of_sales) / R12M revenuefromgl_monthlybygl_accounts.pl_group(revenue accounts 4000 to 4210; cost of sales 5000 to 5100). - Sources and why:
gl_monthly,gl_accounts(the P&L). Grain: month by account. Filters: revenue sign flipped; all five cost-of-sales accounts included. - Baseline: 76.5% for the 12 months to Sep-26 (72.3% the 12 months before). FY25 and FY26 reproduce Marcus's 71% and 77%. Observed Fact. Without the Mar-26 licence: 74.1% (assuming the licence carries no cost of sales; at the normal software rate of 4.5% the answer moves by under 0.5 pts). Status: Amber (77% green, 75% amber line).
- Pace needed: holding 77% by Jun-27 needs +0.06 pts a month. Run rate: -0.17 pts a month. When the licence leaves the window in Mar-27, margin falls to about 74.1% unless a similar deal lands.
- Counter-metric: not required for a sub-KPI.
- Notes: Hardware margin is 67.9% (from 66.8%); software 95.5%. Software is 31% of revenue (from 19%). Margin rises because the mix moved to software, not because hardware got cheaper to make.
Design wins that ship, as a % of design wins old enough to have shipped (K4)
Measure status: Corrected (dates required, shipped defined by the date, window kept at 18 months for the CFO and VP Sales to confirm). Objective: Keep design wins turning into shipping products (O3). Owner: VP Sales.
- Plain English: Of the opportunities that reached design win at least 18 months ago, the share that have since reached shipping.
- Calculation:
COUNT(opp WHERE stage_entered_shipping is not blank) / COUNT(opp WHERE stage_entered_design_win <= as-of date - 18 months), among opportunities with a design-win date. Lost after design win counts as not shipped. - Sources and why:
crm_opportunities.stage_entered_design_win,stage_entered_shipping,stage_entered_lost(the CRM is where design wins are logged). Splits:owner,region,oem_id. - Grain: opportunity (one OEM product).
- Filters: design-win date on or before 2025-03-30 (18 months before the data ends). Cohort runs 2023-01-01 to 2025-03-30. 2,932 of 8,990 CRM rows have no stage dates at all (all last edited before 2023): 1,914 of them sit at design win, pre-production or shipping, so they cannot be placed in the cohort. 349 opportunities have a shipping date but no design-win date: counted separately, not in the rate. The 'confirm shipping against invoices' cross-check in the draft cannot be done: the CRM has a product name and the ERP has a SKU, with no key between them.
- Baseline: 31.5% (672 shipped of 2,131). 7.1% were lost and 61.4% (1,308) are neither shipped nor lost. Working Hypothesis, because 33% of design-win-or-later records have no dates. Sensitivity: counting the undated records by their current stage gives 29.7%, so the result holds. Status: Red.
- Pace needed: (80% - 31.5%) / 9 months to Jun-27 = +5.4 pts a month. Run rate (the same measure as at Dec-25, Mar-26, Jun-26, Sep-26: 30.8%, 31.4%, 31.7%, 31.5%): +0.08 pts a month.
- Counter-metric: Share of design wins later lost, baseline 7.1% of the 18-month cohort. This is the clawback test in numbers: reps are paid A$400 per design win with no clawback, so a rising lost share would show wins logged to earn the bonus.
- Notes: Stage dates start in Jan-23, so there is no history before that. Shipped share by age for the Jan to Jun 2023 design wins (430 opportunities): 12 months 7%, 18 months 21%, 24 months 27%, 36 months 32%, 42 months 32%. The curve levels off near a third, so a longer window would not reach 80%. Q-11 (how long a design win should take to ship) is still open.
Sub-KPI under Design wins that ship: Months from design win to first shipment (K4.1)
Measure status: Corrected (only cohorts old enough). Owner: Head of Platform Engineering.
- Plain English: The median number of months from design win to first shipment, for design wins that shipped, grouped by the quarter of the design win.
- Calculation:
MEDIAN(stage_entered_shipping - stage_entered_design_win)in months (days / 30.44), for cohorts at least 18 months old. Younger cohorts are left out because only the fastest have shipped, which makes their median look short. - Sources and why:
crm_opportunitiesstage dates. Grain: opportunity. Filters: both dates present; grouped by financial quarter of the design win. - Baseline: median 15.0 months (middle half 11.9 to 18.9 months, 672 shipped). Including the young cohorts it would read 14.3. Observed Fact on dated records.
- Pace needed: none: target 'to be agreed after the baseline'. Run rate: -0.6 months per cohort over the last 3 cohorts (shorter, but those cohorts are the least mature, so this is not yet a real improvement).
- Counter-metric: not required for a sub-KPI. Notes: by design-win quarter, the median ranges between 13.3 and 16.2 months.
Sub-KPI under Design wins that ship: Design wins per quarter (K4.2)
Measure status: Confirmed. Owner: VP Sales.
- Plain English: Count of opportunities entering design win in the quarter. Calculation:
COUNT(crm_opportunities WHERE stage_entered_design_win in the financial quarter). - Sources and why:
crm_opportunities.stage_entered_design_win. Grain: opportunity, counted once. Filters: financial quarters (July to June). - Baseline: FY27-Q1 260 design wins; FY26 1,180 (reproduces Marcus's 1,180), FY25 1,020, FY24 950. Observed Fact.
- Pace needed: none: no standalone target (read with Design wins that ship). Run rate: +4.3 design wins a quarter over the last 3 full quarters. Rising count with a flat shipping rate is the pattern to watch.
- Counter-metric: not required for a sub-KPI. Notes: reps earn A$400 per design win, with no clawback (FY25 onward). At 1,180 design wins, that is about A$472k for FY26, assuming every dated win was paid (Strong Inference).
Forecast accuracy: actual quarterly revenue against the forecast at the start of the quarter (K5)
Measure status: Corrected (units, snapshot rule, family mapping, signed error). Objective: Get revenue back to A$115m within two years (O1). Owner: CFO. Pending sign-off: CFO (Priya Anand).
- Plain English: For each quarter, the gap between actual revenue and the forecast made at the start of that quarter, as a % of actual. Shown for Finance and for Sales, with the direction of the miss (positive = forecast too high).
- Calculation:
error = (forecast - actual) / actual; accuracy =ABS(error).forecast= sum of the three product families (hardware, software, other) from the latest snapshot on or before the first day of the quarter, converted to AUD.actual= ledger revenue for the same families and quarter. - Sources and why:
forecast_snapshots.forecast_amount,amount_unit,source,forecast_quarter,snapshot_date,product_family(the forecasts as submitted);gl_monthly.amount_aud(actual). - Grain: quarter by source by product family.
- Filters: 12 rows in AUD thousands multiplied by 1,000 (Finance, FY24 quarters). Snapshots sit 2 to 5 days before each quarter starts, so the rule 'on or before the first day' picks one clean snapshot per quarter. One Sales revision dated after the quarter began (13-Oct-25, FY26-Q2) is ignored; its effect is not tested here. The Sales snapshot for FY25-Q3 is missing (sales_crm FY25-Q3): that quarter is excluded for Sales and counted. Family mapping follows the board plan: hardware = 4000 + 4050, software = 4100 + 4110, other = 4200 + 4210 (the plan reproduces FY26 x 1.15 line by line on this mapping). 13 complete quarters: FY24-Q1 to FY27-Q1.
- Baseline: FY27-Q1 (Jul to Sep 26): Finance forecast A$16.1m, Sales A$24.4m, actual A$19.4m. Errors: Finance -17.2%, Sales +25.6%. Average absolute miss over the last 4 quarters: Finance 23.2%, Sales 34.3%. Over all quarters: Finance 18.7% (2 of 13 quarters within 5%), Sales 22.8% (0 of 12). Observed Fact. Status: Red.
- Pace needed: within 5% by FY27-Q4 (3 more quarters): Finance -4.1 pts a quarter from 17.2%. Run rate (change in the miss over the last 3 quarters): Finance -11.3 pts a quarter, Sales -4.5 pts a quarter. The quarterly miss is noisy (Finance: FY26-Q2 51.0%, FY26-Q3 8.1%, FY26-Q4 16.7%, FY27-Q1 17.2%), so one good quarter would not show control.
- Counter-metric: Signed bias (average forecast minus actual, as a % of actual) over the last 4 quarters: Finance +14.6%, Sales +34.3%. It stops a forecast looking accurate by being low-balled or padded in alternate quarters.
- Notes: Which forecast the CFO wants measured is still open (Q-5). Quarters where both forecasts exist: Finance 18.6% average miss, Sales 22.8%, and their simple average 17.8%. A rule that says 'next quarter equals last quarter' would have averaged 12.0% against Finance's 18.7%.
3. KPI tree
Problem: nobody can show, from one set of numbers, whether the business is still growing underneath the fall
O1 Get revenue back to A$115m within two years
K1 Total revenue, last 12 months, against the path to A$115m ........ Red
K5 Forecast accuracy (pending CFO) ................................ Red
O1.1 Know whether we're still growing underneath the fall
K2 New devices activated in the field (pending Head of Platform Eng.) Red
K2.1 OEM stock on hand, top 40 OEMs ........................... no target yet
O2 Keep software growing, with gross margin holding up
K3 Software revenue growth ........................................ Amber
K3.1 Share of software revenue from the largest licences ...... Red
K3.2 Gross margin %, last 12 months ........................... Amber
O3 Keep design wins turning into shipping products
K4 Design wins that ship .......................................... Red
K4.1 Months from design win to first shipment ................. no target yet
K4.2 Design wins per quarter .................................. read with K4
Every sub-KPI rolls up to one of the Top 5, and every Top 5 KPI links to an objective. Backlog (not built, Gary's list): Underlying earnings (EBITDA); Design wins per quarter as a page-one headline; Paid software features switched on in the field.
↑ Back to top4. Root Cause Findings
All five Top 5 KPIs are off target or have moved, so each one has a case file. Method: clues, suspects, tests, ruled out, verdict, solution options. Every test is in 02_calculations.py with its result in 02_results.json. Evidence labels: Observed Fact, Strong Inference, Working Hypothesis. Solution options are suggestions for Gary, the action owner and the subject matter expert. They are not actions or targets.
Case 1: Total revenue, last 12 months, against the path to A$115m (K1)
Clues. The 12-month figure fell from A$122.1m (2024-06) to A$80.5m. It did not slide: hardware revenue halved in one step, from A$25.7m in FY25-Q4 (Apr to Jun 25) to A$12.9m in FY26-Q1 (-50%), then stayed flat for five quarters at A$12.6m to A$14.5m. Software added one A$7.4m licence in Mar-26. The fall is in units: OEMs bought 47% fewer in FY26 (4,883,606 to 2,590,114), at an average price 0.9% higher.
Bridge, FY25 to FY26 (the A$37.8m fall)
| Step | Effect on revenue | What it is |
|---|---|---|
| FY25 revenue | A$118.4m | Ledger |
| End-customer installs fell 3.3% | -A$1.8m | Change in devices activated x FY25 average price per unit |
| OEMs bought fewer units than they installed (sell-in against installs) | -A$48.0m | The rest of the hardware volume change |
| Price and product mix | A$0.4m | SKU by SKU, FY26 units x change in price |
| Volume rebates paid | A$4.5m | Smaller rebates on smaller purchases (helps revenue) |
| The Mar-26 perpetual licence | A$7.4m | One contract |
| Other software | -A$0.3m | Everything else in software |
| Other (developer kits, freight) | A$0.0m | |
| FY26 revenue | A$80.6m | Ledger. Unexplained: A$0.0m |
Suspects and tests
| # | Suspect | Test (all in the script) | Result | Verdict |
|---|---|---|---|---|
| 1 | Industry soft patch: end customers installing less (Marcus's view) | Devices activated, FY26 against FY25 (k2.fy_activations) | Installs -3.3%, which is 4% of the unit fall | Small part only. Real, but explains about A$1.8m of A$49.8m |
| 2 | OEMs buying less than they install (stopped buying ahead / destocking) | Units invoiced per device activated; orders against installs by phase; lead times; OEM stock reports | Ratio 1.91 (Jan to Jun 25) to 1.04 (Jul-25 to Sep-26). Orders ran at 2.0x installs in Jul-24 to Apr-25 and 1.03x since May-25. Reporting OEMs' stock peaked at 1,590,583 units (2025-Q2) and is 45% lower like for like | Supported. The main cause |
| 3 | Lost customers | OEMs buying in FY25 and FY26 | 409 bought in FY25, 408 in FY26; 1 lost. 409 of 409 bought less (median change -52%) | Ruled out |
| 4 | One OEM, tier, region or product | Change by tier, region and SKU; top-10 share | Tiers A -46%, B -46%, C -49%. Regions AMER -53%, APAC -48%, EMEA -52%, GCHINA -35%. All 7 SKUs between -48% and -44% in units. Top-10 OEM share 24.6% to 25.7% | Ruled out. Broad-based. Greater China fell least |
| 5 | Price cuts | Average price per unit, by SKU | +0.9% overall; every SKU between +0.4% and +1.4% | Ruled out |
| 6 | Exchange rates | FY26 non-AUD hardware lines re-priced at FY25 rates | FX added A$607k to FY26 hardware | Ruled out (it helped) |
| 7 | Rebate-driven quarter-end buying unwinding | Share of hardware revenue in quarter-end months; rebate months | Quarter-end months were 46% of FY25 hardware (33% if even), 37% in FY26. Rebates are only ever booked in quarter-end months. Rebate rate 6.7% to 4.6% | Part of the mechanism for suspect 2, not a separate cause (rebates follow volume) |
| 8 | Reporting or cut-off change | Invoices against ledger by year and family; unmapped accounts | Largest difference A$0.00; 0 unmapped rows | Ruled out |
| 9 | Supply: OEMs had to buy ahead because lead times were long | Quoted lead time by month | 48 weeks in Mar-23, 8.5 weeks by Jun-24 and about 8 since | Consistent with 2: once supply was quick, there was less reason to hold a buffer |
Timing check. Quoted lead times fell from about 48 weeks to about 8 between Sep-23 and Jun-24. Orders then collapsed (27,327 units a month in Oct-23 to Jun-24 against 400,190 before) while invoices carried on from the order book. Orders came back at about twice installs (412,052 a month against 210,839) from Jul-24 to Apr-25, and revenue held until Jun-25. From May-25 orders matched installs (214,392 against 207,237), and the revenue step arrived in Jul-25. The cause (OEMs buying more than their installs) came before the effect (revenue stepping down when they stopped).
Verdict.
- Hardware sell-in fell to match installs: about A$48.0m of a A$49.8m hardware volume fall. The bridge adds up to the A$37.8m fall with A$0.0m unexplained. Bridge arithmetic: Observed Fact. The reading that OEMs bought ahead of need for two years and have now stopped: Strong Inference (timing fits and the other suspects are ruled out, but we cannot see the OEMs' own reasons).
- End-customer demand: A$1.8m. Real but small. Observed Fact on the sample, with coverage of the telemetry unconfirmed (Q-4).
- Two offsets hid part of the fall: the Mar-26 licence (A$7.4m) and smaller rebates (A$4.5m).
- How big the stock overhang was is a Working Hypothesis. Units invoiced exceeded units activated by about 6.9 million from Jul-22 to Jun-25. The 35 reporting OEMs held at most 1.6 million at the peak and cover 46% of hardware revenue. Either the other OEMs hold a lot, or the telemetry sees only part of the installed base. The data cannot separate the two.
What it means for the path. Since Jul-25 invoiced units sit close to installs (1.04x), so hardware is no longer being pulled down by a sell-in gap. If installs stay flat, hardware revenue stays near A$13.4m a quarter. Getting back to A$115m then needs growth that no current measure shows. Stock reports still show 9.3 months of cover at the reporting OEMs, so further destocking is possible.
Data that would settle the open parts. The Head of Platform Engineering on telemetry coverage and the share of devices that phone home (Q-4). Stock reports from all Tier A and B OEMs, not 35 voluntary ones (VP Sales). The rebate scheme terms by quarter (CFO). Why OEMs ordered at twice installs from Jul-24 to Apr-25: a direct question to the top 10 OEMs.
Solution options (for the CEO, CFO and VP Sales to weigh).
- Build the hardware forecast and plan from installs and OEM stock rather than last year's invoices (moves Total revenue K1 and Forecast accuracy K5).
- Ask the top 10 OEMs for monthly stock and their own sell-through, to see whether the overhang is gone (moves OEM stock on hand K2.1 and Total revenue K1).
- Review how volume rebates are tiered, because buying piled into quarter-end months (moves Total revenue K1 and its margin counter-metric).
Case 2: New devices activated in the field (K2)
Clues. The 12-month growth is -1.4%, below the +5% target. The monthly detail is sharper: every month from Jul-24 to Jun-25 was up on the year before (average +5.0%); every month from Jul-25 to Jun-26 was down (average -3.3%); Jul to Sep 26 is up again at +4.9%. Quarter by quarter: FY25-Q4 +4.9%, FY26-Q1 -3.2%, FY26-Q2 -3.3%, FY26-Q3 -4.1%, FY26-Q4 -2.7%, FY27-Q1 +4.9%. The 12-month figure still contains nine down months and three up months.
| # | Suspect | Test | Result | Verdict |
|---|---|---|---|---|
| 1 | Seasonality | Share of each year's activations by quarter, FY23 to FY25 | 24.0%, 24.0%, 24.0% in Q1 each year; the four quarter shares are within 0.2 pts of each other across the three years | Ruled out |
| 2 | One country | Dip (Jul-25 to Jun-26) by country | 20 of 21 countries down (-6.3% to +0.8%). Latest quarter: 19 of 21 up | Ruled out. Broad |
| 3 | One product | Dip by product group | Chips -3.4%, modules -3.1%, cards -3.8% | Ruled out. Broad |
| 4 | One or two OEMs | Growth by OEM, 12 months | 130 of 319 OEMs grew; median OEM -1.3% | Ruled out |
| 5 | Repeat serials or test devices counted as new | Repeat-serial share before and during the dip; beta firmware | 0.47% before, 0.53% during. No beta rows after 2022 | Ruled out |
| 6 | A telemetry change that stopped devices reporting | Monthly devices seen in the heartbeat table around Jul-25; firmware release dates | Devices seen 2025-06: 31,183, 2025-07: 31,608 (sample counts, no drop). New firmware 4.5.0 first appears 2025-07, the month the dip starts | Not ruled out. The reporting count held, but the coincident firmware release needs Engineering to confirm |
| 7 | A real change in end-customer demand | None possible with our data | We hold no end-market data | Cannot be tested here |
Verdict. The shortfall is a 12-month dip of about 3.3% that was broad across countries and products, followed by a recovery to +4.9% in the latest quarter. Effect on the 12-month figure: 35,890 fewer devices than the year before (1.4%). The dip and the hardware sell-in reset both start in July 2025. That is a clue, not a confession: the sell-in reset is fully explained without it (installs explain 4% of the unit fall). The cause of the dip is not settled by this data. Dip and recovery facts: Observed Fact. Any cause: Working Hypothesis.
Data that would settle it. The Head of Platform Engineering on whether firmware 4.5.0 changed when a device reports its first activation, and on coverage (Q-4). Sell-through from the top 10 OEMs for H2 2025.
Solution options.
- Ask the Head of Platform Engineering to confirm the firmware and coverage question before the board sees this measure (moves New devices activated K2).
- Show the latest quarter's growth beside the 12-month figure, because the 12-month figure lags a turn by about nine months (a display choice for Viktor and Gary).
- Ask the VP Sales to check with the top 10 OEMs why their end sales dipped in H2 2025 and recovered (moves K2 and the sell-in view).
Case 3: Software revenue growth (K3)
Clues. Growth over the 12 months to Sep-26 is +19.7% (FY26: +38.2%). March 2026 software revenue was A$8.3m; a normal month is A$0.6m to A$2.3m. The licence table shows why: one perpetual licence, A$7.4m, Corvane (OEM0079), signed 2026-03-27, with 0 seats.
Bridge, 12 months to Sep-25 to 12 months to Sep-26
| Step | Effect | What it is |
|---|---|---|
| Software, prior 12 months | A$21.01m | Ledger |
| The 2026-03 perpetual licence | A$7.40m | One contract |
| Other perpetual licences | -A$3.52m | 105 deals to 81 deals; deals under A$500k A$14.1m to A$10.9m |
| Annual subscriptions | A$0.23m | New and renewed contracts started in the window |
| Monthly subscriptions | A$0.05m | |
| Licence table against ledger | -A$0.03m | Small difference between the two sources |
| Software, last 12 months | A$25.14m | Ledger |
| # | Suspect | Test | Result | Verdict |
|---|---|---|---|---|
| 1 | One large deal | Bridge above; growth without the licence | +19.7% with, -15.6% without. The licence is 29% of the 12 months | Supported. The cause |
| 2 | Broad growth across many licences | Perpetual deals ex the big one; subscriptions | Perpetual ex the big one: -20%; subscriptions +6.6% (A$4.1m against A$3.8m) | Ruled out. Only subscriptions grew, and slowly |
| 3 | Subscriptions not renewing | Renewal rate on decided annual contracts | 88.7% now, 88.2% the year before | Ruled out |
| 4 | Bigger deals | Median perpetual deal; deals over A$500k | Median A$120k to A$106k; deals over A$500k 5 to 4 | Ruled out |
| 5 | Reporting or timing | Licence table against ledger, month by month | Within A$27k in any month | Ruled out |
Verdict. Software growth is one contract. It adds A$7.4m, worth 35 points of growth (the figure is 19.7% with it). Without it software is -15.6% over 12 months and -1.6% for FY26. Numbers: Observed Fact. That it will not repeat: Strong Inference (a single contract at 29% of the year's new contract value, 9 times the next largest, in a year when no other licence topped A$864k). What the contract actually is: unknown. The FY27 board plan repeats it (plan software for Mar-27 is A$9.9m, which is last March plus 15%).
Data that would settle it. The contract and its revenue recognition (CFO). Whether any other deal of that kind is in the pipeline (VP Sales).
Solution options.
- Report Software revenue growth (K3) with and without the largest licence, until the CFO says what it is (moves K3).
- Ask the CFO to confirm how the licence is recognised, and whether annual subscriptions are booked in full at the start date (the ledger matches contract start dates), because that decides how repeatable the base is.
- Ask the VP Sales and CFO to set the software target on repeat revenue (subscriptions and small perpetual deals), which grew 5% to 7%, rather than on total software.
Case 4: Design wins that ship (K4)
Clues. 31.5% of design wins old enough have shipped, against Marcus's belief of about 80%. It has been flat across the last four quarter-ends (30.8%, 31.4%, 31.7%, 31.5%). By design-win quarter, none of the first eight cohorts is above 39%. For the Jan to Jun 2023 cohort (430 wins, now 39 to 45 months old), the shipped share levels off at 32%. Of design wins at least 3 years old, 35% shipped, 6% were lost and 60% are still open.
| # | Suspect | Test | Result | Verdict |
|---|---|---|---|---|
| 1 | The bonus: wins logged to earn A$400 each, no clawback (from Jul-24) | Equal-age comparison before and after 1-Jul-24: shipped within 18 months | 21.6% before (1,380 wins), 22.8% after (754 wins) | Not the cause of the low rate. The rate was already about a third before the bonus |
| 1b | The bonus: dilution of quality | Wins per quarter; median estimated annual revenue; lost within 12 months; pre-production within 12 months; wins in the last week of a quarter | Wins per quarter 230 to 273 (+19%); median estimated annual revenue A$50k to A$38k; lost within 12 months 2.5% to 6.5%; pre-production within 12 months 42.3% to 38.8%; last-week share 5.9% to 6.9% (7.7% if spread evenly) | Early warning, not yet a cause. More and smaller wins, more early losses; no clustering at quarter end |
| 2 | Window too short (18 months) | Shipped share by age, Jan to Jun 2023 cohort | 12 months 7%, 18 months 21%, 24 months 27%, 36 months 32%, 42 months 32% | Ruled out. The curve flattens near a third |
| 3 | Missing dates hide the shipped ones | Sensitivity: count undated records by current stage | 29.7% against 31.5% | Ruled out for the level. It does cap the evidence label at Working Hypothesis |
| 4 | A few owners, a region or an OEM tier | Shipped share by owner (14 owners, at least 83 wins each), region and tier | Owners 24% to 41%; regions 29% to 35%; tiers 31% to 34% | Ruled out. Broad |
| 5 | Slow engineering support | No engineering support data | The CRM holds no reason codes or engineering status | Cannot be tested here |
| 6 | The hardware reset (Jul-25) cooling OEM programmes | Pre-production and lost within 12 months, by cohort | Pre-production within 12 months 36% to 47% across cohorts, no break at Jul-25. Lost within 12 months rises from FY25-Q2 | Partly. Lost rises, but the shipped share was low before |
Verdict. The shortfall against 80% is not new and is not explained by the bonus, the window, or missing dates: the ship rate has been about a third for every cohort we can see since Jan-23, and 80% was a belief that had never been measured. Observed Fact for the dated records; Working Hypothesis overall, because a third of the records have no dates. The CRM also holds a large pile of old design wins that are neither shipped nor lost (1,308 in the 18-month cohort, 60% of those 3 years old). Whether they are slow or dead is not recorded. Working Hypothesis. The bonus shows early signs of diluting what counts as a design win (more, smaller, earlier-lost) while the shipping rate has not moved. Effect on K4 so far: 0 pts of the 48.5 pt gap; the rest is unexplained by the data.
Data that would settle it. A reason for each lost or stalled design win. A product to SKU key between the CRM and the ERP, so shipping can be confirmed from invoices. The design-win dates for the undated records.
Solution options.
- VP Sales runs a close-out review of the old open design wins: mark each shipped, lost or live, with a reason (moves K4 and the lost counter-metric).
- VP Sales, CFO and the people team look at paying on pre-production or shipping, or adding a clawback, because the A$400 is paid at design win with no clawback (moves K4 and Design wins per quarter K4.2). The incentive is not a Stage 2 decision.
- Reset the K4 target after the clean-up and the Q-11 window are agreed, using the measured baseline (a suggestion to Gary and the VP Sales).
Case 5: Forecast accuracy (K5)
Clues. Neither forecast has been within 5% since FY24-Q4: Finance was within 5% in 2 of 13 quarters, Sales in 0 of 12. The miss got worse after the hardware step in Jul-25: average miss before FY26-Q1 was 13.8% (Finance) and 14.8% (Sales); from FY26-Q1 it is 26.5% and 33.9%. Over the last 4 quarters (FY26-Q2, FY26-Q3, FY26-Q4, FY27-Q1) actual revenue was A$80.5m; Finance was too high by A$11.3m and Sales by A$27.6m.
| Where the 4-quarter miss sits | Finance | Sales |
|---|---|---|
| Hardware | A$9.1m | A$24.0m |
| Software | A$2.2m | A$3.6m |
| Other | A$0.0m | -A$0.0m |
| Total (forecast minus actual) | A$11.3m | A$27.6m |
| # | Suspect | Test | Result | Verdict |
|---|---|---|---|---|
| 1 | Mixed units (AUD and AUD thousands) | Compare raw and converted FY24 Finance totals | Raw FY24-Q1 total A$26,480 against converted A$26.5m. All thousands rows are FY24; every quarter since is in AUD | Ruled out as a cause of recent misses. A data trap, handled |
| 2 | The hardware step in Jul-25 that no forecast saw | Error before and after FY26-Q1; FY26-Q1 hardware | FY26-Q1 hardware: Finance forecast A$22.5m, Sales A$18.2m, actual A$12.9m. Misses roughly double after the break | Supported |
| 3 | Sales is always optimistic | Sign of the error each quarter | Sales too high in 12 of 12 quarters, average +22.8%; even before the break +14.8% | Supported (the pattern). The reason is not testable here |
| 4 | Finance just rolls the last run rate forward | Finance forecast against the previous quarter's actual and the year-ago quarter's actual | Median gap to the previous quarter 9%, to the year-ago quarter 17%. A plain 'same as last quarter' rule averages 12.0% against Finance's 18.7% | Ruled out as a pure run rate. Finance's numbers differ from a plain roll-forward, and a plain roll-forward would have scored better (why is not testable here) |
| 5 | One-off software deals | Software forecast error in FY26-Q3 (the licence quarter) | Quarter software A$10.5m (A$3.1m without the licence). Finance -36% with it, +117% without; Sales +17% and +297% | Minor on dollars, but it hid that both software forecasts were well above the underlying run rate |
| 6 | Snapshot timing | Days between snapshot and quarter start | 2 to 5 days for every snapshot used | Ruled out |
| 7 | Finance's latest forecast is off the plan | FY27-Q1 hardware: board plan, Finance forecast, Sales forecast, actual | Plan A$14.8m (set 2026-06-15), Finance forecast A$7.1m (2026-06-26), Sales A$17.8m, actual A$13.4m | Open. Finance's forecast is 52% below its own plan 11 days earlier. It looks like the Jul-25 step was applied twice (Working Hypothesis) |
Verdict. The forecasts are off for three stacked reasons. (1) Hardware, and the missed reset, is most of the dollars: 80% of Finance's four-quarter miss and 87% of Sales's. Same cause as Case 1. Strong Inference. (2) Sales has a standing upward bias of about 23%, present before the reset. The pattern is an Observed Fact; why is a Working Hypothesis (it fits a CRM that reps work to a bonus, but this data cannot test that). (3) Finance's latest forecast under-calls hardware by about 47% and is far from its own plan. Working Hypothesis. Software lumps add noise but little dollar error. The effects add up: hardware plus software plus other equals each source's total miss in the table. Unexplained: none by construction; the table splits each source's own miss.
Data that would settle it. How the Finance and Sales forecasts are built (the CFO and VP Sales, Q-5). Why the 26-Jun-26 Finance hardware forecast is half the 15-Jun-26 plan.
Solution options.
- One forecast for Finance and Sales, built from installs and OEM stock (Case 1) and reviewed against a 'same as last quarter' benchmark each quarter (moves K5).
- Report each forecast's bias with its accuracy, and correct Sales's forecast for its historic bias before it is used (moves K5).
- CFO explains the gap between the FY27 plan and the 26-Jun-26 Finance forecast before K5 goes on page one.
5. Corrections to Gary's draft measures, and challenge notes
5a. Corrections (Before and After in full)
| # | KPI | Before (Gary's draft) | After (Kewpie) | Why |
|---|---|---|---|---|
| A1 | Total revenue (K1) | Filters: "Hardware = 4000, 4050, 4200; software = 4100, 4110 (Kewpie to confirm)" | Hardware = 4000 and 4050 (hardware sales less volume rebates). Software = 4100 and 4110. Other = 4200 and 4210 (developer kits and freight recovered). All six accounts stay in total revenue. | Developer kits are not hardware sales, and the board plan and the forecasts treat them as 'other'. The total is unchanged and reproduces A$118.4m (FY25) and A$80.6m (FY26). |
| A2 | New devices activated (K2) | Filters: "First activation only: one row per device_serial"; OEM split from oem_id | First activation only: keep the earliest first_seen_ts per serial (5,040 repeat rows dropped). Fill a blank oem_id from the OEM that owns the same manufacturer_code (22,024 rows recovered; 85,186 stay unassigned). | Repeat serials are devices re-joining a network. The OEM backfill changes only the split by OEM. The 'exclude beta' rule has no effect in the window. |
| A3 | OEM stock on hand (K2.1) | Calculation: "SUM(oem_inventory_reports.units_on_hand) by quarter"; "top 40 OEMs" | SUM(units) by quarter, where units = units_on_hand x 500 for rows described as reels of 500; names cleaned (case, spacing, hyphens, company suffixes); quarter-on-quarter change across OEMs that reported in both quarters. | 88 rows count reels, not units. 235 spellings are 35 OEMs. Only 35 OEMs report, not 40. |
| A4 | Design wins that ship (K4) | Calculation: "COUNT(opp where stage_entered_shipping not blank) / COUNT(opp where stage_entered_design_win <= today - 18 months)"; Sources include "erp_invoice_lines.oem_id, sku (cross-check)" | Same ratio, with 'today' fixed at the end of the data (30-Sep-26), shipped defined by the shipping date, and rows with no stage dates excluded and counted. The invoice cross-check is dropped for lack of a key. | A stage field without dates cannot be placed in a cohort. OEM-level invoices cannot confirm a product shipped: nearly every OEM buys every year. |
| A5 | Months from design win to first shipment (K4.1) | Calculation: "MEDIAN(months_between(stage_entered_design_win, stage_entered_shipping))" for opportunities that shipped | Same median, restricted to design wins at least 18 months old. | Younger cohorts only show their fastest shippers. Median 15.0 months for mature cohorts against 14.3 for all. |
| A6 | Forecast accuracy (K5) | Calculation: "ABS(actual_q - forecast_q) / actual_q; forecast_q = forecast_snapshots.forecast_amount from the snapshot nearest the quarter start" | error = (forecast - actual) / actual, reported as a signed figure and an absolute figure. Forecast = latest snapshot on or before the first day of the quarter, converted to AUD, summed over hardware, software and other. Actual = hardware (4000, 4050), software (4100, 4110), other (4200, 4210). | 'Nearest' could pick a snapshot taken after the quarter began. The sign shows bias. The family mapping matches the board plan. |
Measures confirmed as drafted: Software revenue growth (K3), Share of software revenue from the largest licences (K3.1), Gross margin %, last 12 months (K3.2) and Design wins per quarter (K4.2).
5b. Challenge notes
| # | KPI | Issue | Evidence | Suggested fix | Status |
|---|---|---|---|---|---|
| C1 | Total revenue (K1) | The FY27 board plan is below the straight-line path in Gary's thresholds. Plan A$92.7m (BT-02, Finance, 15-Jun-26) against A$97.8m on the straight line at Jun-27: -A$5.1m (-5.2%). On Gary's thresholds, plan delivery would already be Red against the path. | board_targets, board_plan_fy27 | CFO to explain how the A$115m and FY27 numbers fit together (Q-1, Q-2). Gary to re-check the straight-line path with the CFO. | Open |
| C2 | Total revenue (K1) | The FY27 plan repeats the one-off licence. Every plan line is FY26 x 1.15 (checked line by line: every ratio is 1.15), so Mar-27 software is A$9.9m, which carries A$8.5m for the Mar-26 licence. Without it the plan is A$84.2m. Actual Jul to Sep 26 is A$19.4m against a plan of A$22.4m. | board_plan_fy27, software_licences | Gary to carry this into the target rationale. CFO to confirm whether the plan should repeat it. | Open |
| C3 | Total revenue (K1) | Hardware revenue can be pulled into quarter-end months by volume rebates. In FY25, 46% of hardware revenue landed in quarter-end months (33% if even), and rebates appear only in those months. Gary's draft has no check on this. | erp_invoice_lines, gl_monthly | Gary to consider a rebate-rate or margin counter-metric on the page. Kewpie has used Gross margin % as the counter-metric and noted the rebate rate. | Open |
| C4 | New devices activated (K2) | The measure is only as good as the telemetry's coverage. Units invoiced per device activated were 1.91 to Jun-25 and 1.04 after. Either OEMs held large stocks, or the telemetry sees only part of the installed base. Both cannot be separated. | device_activations, erp_invoice_lines | Head of Platform Engineering to answer Q-4 (coverage, phone-home, firmware 4.5.0 from Jul-25). Keep K2 off page one until then, as Marcus asked. | Open |
| C5 | Software revenue growth (K3) | The target fails the Attainable test. Growth is +19.7% only because of one A$7.4m licence (-15.6% without it). To reach +20% for FY27 software needs A$2.78m a month for 9 months, against A$1.48m a month underneath. | gl_monthly, software_licences | Gary, VP Sales and CFO to set the target on repeat revenue, or to show growth with and without large single licences (Q-3). | Open |
| C6 | Software revenue growth (K3) | Annual subscriptions appear to be booked in full at the contract start date: the licence table (by start date) equals ledger software revenue within A$27k a month. If so, software revenue is not spread over the term, and 'repeatable' needs a different measure. | software_licences, gl_monthly | CFO to confirm revenue recognition for subscriptions and for the Mar-26 licence. | Open |
| C7 | Share of software revenue from the largest licences (K3.1) | The licence is 29% of the year's started contract value and sits Red until it leaves the 12-month window in Mar-27, which fixes the figure without any change in behaviour. The customer is an OEM; naming is for the CFO and legal (Q-7). | software_licences | Gary to add 'with and without the largest licence' to the view. Customer name stays off the board page. | Open |
| C8 | Gross margin % (K3.2) | Gary's target is 77%. The board's own FY27 gross margin target is 76% (BT-03, Finance). Also, 12-month margin includes the licence: 76.5% with, 74.1% without, so the 77% hold-the-line target is Red without it. | board_targets, gl_monthly | Gary and CFO to align the target with BT-03 and agree whether one-offs are shown. | Open |
| C9 | Design wins that ship (K4) | The target fails the Attainable test. Baseline 31.5%; pace needed +5.4 pts a month against a run rate of +0.08 pts. Marcus's 80% was a belief, never measured. The curve for the oldest cohort levels off near a third. | crm_opportunities | Gary and the VP Sales to reset the target once the Q-11 window and the CRM clean-up are agreed. Kewpie has not changed the target. | Open |
| C10 | Design wins that ship (K4) | The data cannot fully support the measure. 2,932 of 8,990 CRM rows (33%) have no stage dates; 33% of design-win-or-later records cannot be placed in a cohort, so the baseline is a Working Hypothesis. The draft's 'confirm shipping against invoices' has no product key between the CRM and the ERP. | crm_opportunities, erp_invoice_lines | VP Sales and Finance to add a shared product or SKU key; VP Sales to back-fill dates. | Open |
| C11 | Design wins that ship (K4) | Reps are paid A$400 per design win with no clawback. FY26: 1,180 wins, about A$472k (assuming every dated win was paid). The counter-metric (share lost after design win) is in place, but the data holds no reason codes, so a win logged only for the bonus cannot be told apart. | sales_incentive_plans, crm_opportunities | Gary to add a 'reason lost' field request to the Requirements. The incentive design is for the VP Sales, CFO and the people team, not Stage 2. | Open |
| C12 | Forecast accuracy (K5) | The measure is not yet one metric (Specific). Finance and Sales forecast differently (19% apart in the median quarter) and the CFO has not said which counts (Q-5). Neither has been within 5% since FY24-Q4, so the 5% target is very far from history: pace needed -4.1 pts a quarter for Finance. | forecast_snapshots, gl_monthly | CFO to choose the forecast and the tolerance (Q-5). Gary to keep K5 off page one until she does. | Open |
| C13 | Forecast accuracy (K5) | Data problems in the forecast table: 12 Finance rows in AUD thousands (fixed); the Sales snapshot for FY25-Q3 is missing; one Sales revision (13-Oct-25) falls after its quarter began. And Finance's 26-Jun-26 hardware forecast (A$7.1m) is 52% below Finance's own 15-Jun-26 plan (A$14.8m). | forecast_snapshots, board_plan_fy27 | Add an 'amount_unit' check to the data load. CFO to explain the gap. | Open |
| C14 | OEM stock on hand (K2.1) | Gary's title says top 40 OEMs. Only 35 report, covering 46% of FY26 hardware revenue, and 235 spellings of the names had to be cleaned. The measure has no target or thresholds yet. | oem_inventory_reports, oem_master | Gary to set thresholds from the baseline, for example on months of cover (9.3 at the reporters now). That would be a new measure, so it is Gary's call. | Open |
| C15 | Design wins per quarter (K4.2) | Design wins have risen from 230 to 273 a quarter since the bonus, with smaller estimated deal size and no change in the shipping rate. It remains a sub-KPI as Gary proposed. | crm_opportunities | No change. Read it with Design wins that ship. | Logged |
6. Data quality log
| Table | Problem | Count | How handled |
|---|---|---|---|
| gl_monthly | Rows with an unmapped account / duplicate month-account-cost-centre rows | 0 / 0 | None needed |
| erp_invoice_lines | Lines with no oem_id / no order_id | 3,161 / 2,200 of 392,709 | Kept in totals. The lines with no OEM are all software subscriptions (none are hardware), so the hardware OEM tests are unaffected; lines with no order are rebates and 1,331 hardware lines |
| erp_invoice_lines | Non-AUD lines with no fx_rate_used | 34,737 (none in the last 24 months) | net_amount_aud is present, so no effect |
| sales_orders | Orders with no quoted lead time | 11,542 of 391,848 | Averages use the rows that have one |
| device_activations | Repeat serials | 5,040 of 1,198,459 (1,611 in the last 24 months) | Earliest kept |
| device_activations | Rows with no oem_id; after backfill from manufacturer_code | 107,210; 85,186 (7.1%) | Affects the OEM split only, not the headline |
| device_activations | Beta firmware rows | 2,197, none after 2022 | No effect on the window |
| device_activations | product_model_string is free text | all rows | Not used |
| device_heartbeat_monthly | Used only to check that devices kept reporting through Jul-25 | 1,236,586 rows, 58,917 devices (sample) | Not a KPI source |
| crm_opportunities | Rows with a stage but no stage dates at all (last edited 2018 to Jan-23) | 2,932 of 8,990; 1,914 past design win | Excluded from K4 and counted; baseline labelled Working Hypothesis |
| crm_opportunities | Shipping date but no design-win date | 349 | Counted separately, not in the rate |
| crm_opportunities | Design win with no design-in date | 245 (none after mid-2023) | Not used in the rate |
| oem_inventory_reports | OEM name spellings / OEMs after cleaning | 235 / 35 | Cleaned; all match oem_master; 0 unmatched |
| oem_inventory_reports | Reel rows (count of reels of 500) / finished-goods rows | 88 / 229 | Reels x 500; finished goods kept and noted |
| oem_master | Same OEM name on two IDs (Gareth Acoustics Ltd, OEM0409 and OEM0410) | 1 name | First match used for stock-report names; neither is among the stock reporters |
| software_licences | Contracts with no oem_id | 1,750 of 3,096 | Not needed for the KPIs |
| software_licences | Licence table against ledger | within A$27k in any month | Ledger used for the KPI, table for the detail |
| forecast_snapshots | Rows in AUD thousands | 12 of 84 | Multiplied by 1,000 |
| forecast_snapshots | Missing Sales snapshot / revision after the quarter began | FY25-Q3 / FY26-Q2 (13-Oct-25) | Quarter excluded for Sales / revision ignored |
If more than 5% of a KPI's population is unmatched or missing, its baseline is labelled a Working Hypothesis. That applies to Design wins that ship (K4) only.
Files: 03 - Working Files/02_calculations.py, 02_results.json, 02_build_pack.py, spec.json (Kewpie's columns).
File: 2026.10.26 - Lumenwire Audio - 02 Challenge Notes.md
Lumenwire Audio: Challenge Notes from Stage 2
From Kewpie to Gary and Adam. 26-Oct-26. Sample data. Full evidence is in the KPI Calculation Pack. Kewpie has not added, dropped or reprioritised any KPI and has not changed a target. Each note is open until Gary or Adam answers it.
Corrections to Gary's draft measures
| # | KPI | Before (Gary's draft) | After (Kewpie) | Why |
|---|---|---|---|---|
| A1 | Total revenue (K1) | Filters: "Hardware = 4000, 4050, 4200; software = 4100, 4110 (Kewpie to confirm)" | Hardware = 4000 and 4050 (hardware sales less volume rebates). Software = 4100 and 4110. Other = 4200 and 4210 (developer kits and freight recovered). All six accounts stay in total revenue. | Developer kits are not hardware sales, and the board plan and the forecasts treat them as 'other'. The total is unchanged and reproduces A$118.4m (FY25) and A$80.6m (FY26). |
| A2 | New devices activated (K2) | Filters: "First activation only: one row per device_serial"; OEM split from oem_id | First activation only: keep the earliest first_seen_ts per serial (5,040 repeat rows dropped). Fill a blank oem_id from the OEM that owns the same manufacturer_code (22,024 rows recovered; 85,186 stay unassigned). | Repeat serials are devices re-joining a network. The OEM backfill changes only the split by OEM. The 'exclude beta' rule has no effect in the window. |
| A3 | OEM stock on hand (K2.1) | Calculation: "SUM(oem_inventory_reports.units_on_hand) by quarter"; "top 40 OEMs" | SUM(units) by quarter, where units = units_on_hand x 500 for rows described as reels of 500; names cleaned (case, spacing, hyphens, company suffixes); quarter-on-quarter change across OEMs that reported in both quarters. | 88 rows count reels, not units. 235 spellings are 35 OEMs. Only 35 OEMs report, not 40. |
| A4 | Design wins that ship (K4) | Calculation: "COUNT(opp where stage_entered_shipping not blank) / COUNT(opp where stage_entered_design_win <= today - 18 months)"; Sources include "erp_invoice_lines.oem_id, sku (cross-check)" | Same ratio, with 'today' fixed at the end of the data (30-Sep-26), shipped defined by the shipping date, and rows with no stage dates excluded and counted. The invoice cross-check is dropped for lack of a key. | A stage field without dates cannot be placed in a cohort. OEM-level invoices cannot confirm a product shipped: nearly every OEM buys every year. |
| A5 | Months from design win to first shipment (K4.1) | Calculation: "MEDIAN(months_between(stage_entered_design_win, stage_entered_shipping))" for opportunities that shipped | Same median, restricted to design wins at least 18 months old. | Younger cohorts only show their fastest shippers. Median 15.0 months for mature cohorts against 14.3 for all. |
| A6 | Forecast accuracy (K5) | Calculation: "ABS(actual_q - forecast_q) / actual_q; forecast_q = forecast_snapshots.forecast_amount from the snapshot nearest the quarter start" | error = (forecast - actual) / actual, reported as a signed figure and an absolute figure. Forecast = latest snapshot on or before the first day of the quarter, converted to AUD, summed over hardware, software and other. Actual = hardware (4000, 4050), software (4100, 4110), other (4200, 4210). | 'Nearest' could pick a snapshot taken after the quarter began. The sign shows bias. The family mapping matches the board plan. |
Challenge notes
| # | KPI | Issue | Evidence | Suggested fix | Status |
|---|---|---|---|---|---|
| C1 | Total revenue (K1) | The FY27 board plan is below the straight-line path in Gary's thresholds. Plan A$92.7m (BT-02, Finance, 15-Jun-26) against A$97.8m on the straight line at Jun-27: -A$5.1m (-5.2%). On Gary's thresholds, plan delivery would already be Red against the path. | board_targets, board_plan_fy27 | CFO to explain how the A$115m and FY27 numbers fit together (Q-1, Q-2). Gary to re-check the straight-line path with the CFO. | Open |
| C2 | Total revenue (K1) | The FY27 plan repeats the one-off licence. Every plan line is FY26 x 1.15 (checked line by line: every ratio is 1.15), so Mar-27 software is A$9.9m, which carries A$8.5m for the Mar-26 licence. Without it the plan is A$84.2m. Actual Jul to Sep 26 is A$19.4m against a plan of A$22.4m. | board_plan_fy27, software_licences | Gary to carry this into the target rationale. CFO to confirm whether the plan should repeat it. | Open |
| C3 | Total revenue (K1) | Hardware revenue can be pulled into quarter-end months by volume rebates. In FY25, 46% of hardware revenue landed in quarter-end months (33% if even), and rebates appear only in those months. Gary's draft has no check on this. | erp_invoice_lines, gl_monthly | Gary to consider a rebate-rate or margin counter-metric on the page. Kewpie has used Gross margin % as the counter-metric and noted the rebate rate. | Open |
| C4 | New devices activated (K2) | The measure is only as good as the telemetry's coverage. Units invoiced per device activated were 1.91 to Jun-25 and 1.04 after. Either OEMs held large stocks, or the telemetry sees only part of the installed base. Both cannot be separated. | device_activations, erp_invoice_lines | Head of Platform Engineering to answer Q-4 (coverage, phone-home, firmware 4.5.0 from Jul-25). Keep K2 off page one until then, as Marcus asked. | Open |
| C5 | Software revenue growth (K3) | The target fails the Attainable test. Growth is +19.7% only because of one A$7.4m licence (-15.6% without it). To reach +20% for FY27 software needs A$2.78m a month for 9 months, against A$1.48m a month underneath. | gl_monthly, software_licences | Gary, VP Sales and CFO to set the target on repeat revenue, or to show growth with and without large single licences (Q-3). | Open |
| C6 | Software revenue growth (K3) | Annual subscriptions appear to be booked in full at the contract start date: the licence table (by start date) equals ledger software revenue within A$27k a month. If so, software revenue is not spread over the term, and 'repeatable' needs a different measure. | software_licences, gl_monthly | CFO to confirm revenue recognition for subscriptions and for the Mar-26 licence. | Open |
| C7 | Share of software revenue from the largest licences (K3.1) | The licence is 29% of the year's started contract value and sits Red until it leaves the 12-month window in Mar-27, which fixes the figure without any change in behaviour. The customer is an OEM; naming is for the CFO and legal (Q-7). | software_licences | Gary to add 'with and without the largest licence' to the view. Customer name stays off the board page. | Open |
| C8 | Gross margin % (K3.2) | Gary's target is 77%. The board's own FY27 gross margin target is 76% (BT-03, Finance). Also, 12-month margin includes the licence: 76.5% with, 74.1% without, so the 77% hold-the-line target is Red without it. | board_targets, gl_monthly | Gary and CFO to align the target with BT-03 and agree whether one-offs are shown. | Open |
| C9 | Design wins that ship (K4) | The target fails the Attainable test. Baseline 31.5%; pace needed +5.4 pts a month against a run rate of +0.08 pts. Marcus's 80% was a belief, never measured. The curve for the oldest cohort levels off near a third. | crm_opportunities | Gary and the VP Sales to reset the target once the Q-11 window and the CRM clean-up are agreed. Kewpie has not changed the target. | Open |
| C10 | Design wins that ship (K4) | The data cannot fully support the measure. 2,932 of 8,990 CRM rows (33%) have no stage dates; 33% of design-win-or-later records cannot be placed in a cohort, so the baseline is a Working Hypothesis. The draft's 'confirm shipping against invoices' has no product key between the CRM and the ERP. | crm_opportunities, erp_invoice_lines | VP Sales and Finance to add a shared product or SKU key; VP Sales to back-fill dates. | Open |
| C11 | Design wins that ship (K4) | Reps are paid A$400 per design win with no clawback. FY26: 1,180 wins, about A$472k (assuming every dated win was paid). The counter-metric (share lost after design win) is in place, but the data holds no reason codes, so a win logged only for the bonus cannot be told apart. | sales_incentive_plans, crm_opportunities | Gary to add a 'reason lost' field request to the Requirements. The incentive design is for the VP Sales, CFO and the people team, not Stage 2. | Open |
| C12 | Forecast accuracy (K5) | The measure is not yet one metric (Specific). Finance and Sales forecast differently (19% apart in the median quarter) and the CFO has not said which counts (Q-5). Neither has been within 5% since FY24-Q4, so the 5% target is very far from history: pace needed -4.1 pts a quarter for Finance. | forecast_snapshots, gl_monthly | CFO to choose the forecast and the tolerance (Q-5). Gary to keep K5 off page one until she does. | Open |
| C13 | Forecast accuracy (K5) | Data problems in the forecast table: 12 Finance rows in AUD thousands (fixed); the Sales snapshot for FY25-Q3 is missing; one Sales revision (13-Oct-25) falls after its quarter began. And Finance's 26-Jun-26 hardware forecast (A$7.1m) is 52% below Finance's own 15-Jun-26 plan (A$14.8m). | forecast_snapshots, board_plan_fy27 | Add an 'amount_unit' check to the data load. CFO to explain the gap. | Open |
| C14 | OEM stock on hand (K2.1) | Gary's title says top 40 OEMs. Only 35 report, covering 46% of FY26 hardware revenue, and 235 spellings of the names had to be cleaned. The measure has no target or thresholds yet. | oem_inventory_reports, oem_master | Gary to set thresholds from the baseline, for example on months of cover (9.3 at the reporters now). That would be a new measure, so it is Gary's call. | Open |
| C15 | Design wins per quarter (K4.2) | Design wins have risen from 230 to 273 a quarter since the bonus, with smaller estimated deal size and no change in the shipping rate. It remains a sub-KPI as Gary proposed. | crm_opportunities | No change. Read it with Design wins that ship. | Logged |
File: 2026.10.26 - Lumenwire Audio - 02 Gary Response to Challenge Notes.md
Lumenwire Audio: Gary's Response to Kewpie's Challenge Notes
From Gary to Adam and Kewpie. 26-Oct-26. Sample data. This answers the 6 corrections and 15 challenge notes in 2026.10.26 - Lumenwire Audio - 02 Challenge Notes.md. I haven't changed the Business Requirements. Every change to a KPI, target or threshold below is a proposal waiting for Adam's sign-off. Every new target and threshold is my proposal, labelled Working Hypothesis, unless it says otherwise.
The short version. Kewpie's numbers test Marcus's story, which is what the dashboard is for. Three things he believed don't hold up: software growth is one licence, about a third of design wins ship (not 80%), and hardware fell mostly because OEMs stopped buying ahead of installs, not because end demand fell. My response keeps all five KPIs. I've proposed new targets where the old ones fail the Attainable test, and I've added "with and without the one-off licence" wherever that licence distorts the picture.
1. Corrections to my draft measures
All six are accepted. They change how a KPI is measured, not what it is or its target. Kewpie's Before and After text stands in full as written in the Challenge Notes.
| # | KPI | Decision | Reason |
|---|---|---|---|
| A1 | Total revenue, last 12 months, against the path to A$115m (K1) | Accept | Developer kits and freight sit under "other" in the board plan and the forecasts. Total unchanged, and it reproduces A$118.4m and A$80.6m |
| A2 | New devices activated in the field (K2) | Accept | Earliest activation per device is what "first joins a network" means. The OEM backfill only affects the split |
| A3 | OEM stock on hand (K2.1) | Accept | Reels counted as units would overstate stock. The name change this leads to is under challenge note C14 |
| A4 | Design wins that ship (K4) | Accept | Rows without dates can't go in a cohort, and OEM-level invoices can't confirm that a product shipped |
| A5 | Months from design win to first shipment (K4.1) | Accept | Young cohorts only show their fastest shippers. Use the same 18-month window as K4 |
| A6 | Forecast accuracy (K5) | Accept | "On or before the quarter start" stops a forecast being taken after the quarter has begun. The signed figure shows bias, which is what Marcus's "arguing about whose number is right" is about |
↑ Back to top
2. Challenge notes
Total revenue, last 12 months, against the path to A$115m (K1)
C1: The FY27 board plan is already below the path. Accept, and Refer to the CFO. Reason: it doesn't make the threshold wrong. It shows the board's two numbers don't agree, which is how people get blindsided. Keep the A$115m path as the threshold, show the FY27 plan as a second line, and ask the CFO which one the board measures against (open questions Q-1 and Q-2).
| Text | |
|---|---|
| Before (K1 thresholds note) | "Gary's proposal, to agree with the CFO" |
| After (K1 thresholds note) | "Gary's proposal, to agree with the CFO. Measured against the straight-line path to A$115m. The FY27 board plan (A$92.7m, Finance, 15-Jun-26) is shown as a second line. It sits 5.2% below the path at Jun-27, so delivering the plan would read Red. CFO to say which line the board measures against (Q-1, Q-2)" |
C2: The FY27 plan repeats the one-off licence. Accept, and Refer to the CFO. Reason: a plan that counts an A$8.5m one-off twice overstates FY27. The board should see that.
| Text | |
|---|---|
| Before (K1 target rationale) | "The board wants revenue back to A$115m within two years. Date read as the year ending June 2028, to confirm with the board (Q-1)" |
| After (K1 target rationale) | "The board wants revenue back to A$115m within two years. Date read as the year ending June 2028, to confirm with the board (Q-1). Note: the FY27 plan is FY26 × 1.15 on every line, so it repeats the Mar-26 one-off licence. Without it, the plan is A$84.2m, not A$92.7m. CFO to confirm whether the plan should repeat it" |
C3: Volume rebates can pull hardware revenue into quarter-end months. Accept Kewpie's counter-metric. No new KPI. Reason: a rebate-rate tile would be an "accountant metric" with no owner action, and Marcus asked for none of those. Gross margin % is the counter-metric, and the quarter-end share goes in the calculation notes so Kewpie can watch for it. If it climbs above FY25's 46%, I'll bring it back as a sub-KPI.
New devices activated in the field (K2)
C4: The measure is only as good as the telemetry's coverage. Accept, and Refer to the Head of Platform Engineering (Q-4). Reason: this is exactly Marcus's condition. No change: K2 stays in the five, stays off page one, and keeps its target until Tomasz answers on coverage and the Jul-25 firmware.
Software revenue growth (K3)
C5: The +20% target fails the Attainable test because of one licence. Accept: change the headline. Refer the target to the VP Sales and CFO (Q-3). Reason: Marcus asked whether growth is "real and repeatable" and "how much comes from one big licence". A headline that includes a one-off A$7.4m licence can't answer that.
| Text | |
|---|---|
| Before (K3 name) | "Software revenue growth, last 12 months against the year before" |
| After (K3 name) | "Software revenue growth without one-off large licences, last 12 months against the year before" |
| Before (K3 measure) | "Software revenue over the last 12 months divided by the 12 months before, minus 1" |
| After (K3 measure) | "The same, leaving out any single licence worth more than A$1m (threshold to agree with the CFO). Total growth including it is shown alongside" |
| Before (K3 target) | "To be agreed (Gary's starting proposal: at least 20% growth year on year) by 30 Jun 2027" |
| After (K3 target) | "To be agreed by the VP Sales and CFO. Gary's starting proposal: back to growth (0% or more, without large licences) by 30 Jun 2027, against -15.6% now. Working Hypothesis" |
| Before (K3 thresholds) | "Green 20% or more; Amber 0% to under 20%; Red falling" |
| After (K3 thresholds) | "Green 0% or more; Amber -10% to under 0%; Red below -10%" |
C6: Annual subscriptions may be booked in full at the start date. Refer to the CFO. Reason: it's a revenue recognition question, and only Finance can answer it. If the CFO confirms it, I'll propose a repeat-revenue measure, such as renewal rate on annual subscriptions, as a sub-KPI. That would be a new measure, so it would come back to Adam.
C7: The largest licence holds Share of software revenue from the largest licences (K3.1) at Red until Mar-27. Accept. Reason: a tile that sits Red for 5 months with nothing anyone can do is noise. Keep the threshold, but say why it's Red. The customer name stays off the board page (Q-7).
| Text | |
|---|---|
| Before (K3.1 thresholds note) | "Gary's proposal" |
| After (K3.1 thresholds note) | "Gary's proposal. Shown with and without the largest licence. While the Mar-26 licence is in the 12-month window (to Mar-27), the tile says so in words. No customer names on the board page" |
C8: The 77% target for Gross margin % (K3.2) differs from the board's 76%. Accept: align to the board's figure. Refer to the CFO to confirm. Reason: two margin targets on one page is the "whose number is right" problem Marcus wants fixed. The board's 76% (BT-03, Finance) is the stronger source.
| Text | |
|---|---|
| Before (K3.2 target) | "At or above 77% by 30 Jun 2027. Hold the FY26 level as stated by Marcus. Working Hypothesis" |
| After (K3.2 target) | "At or above 76% for FY27 (30 Jun 2027), the board's FY27 gross margin target (BT-03, Finance, 15-Jun-26), to be confirmed by the CFO. Shown with and without one-off licences. Observed Fact (source); CFO to confirm" |
| Before (K3.2 thresholds) | "Green 77% or more; Amber 75% to under 77%; Red under 75%" |
| After (K3.2 thresholds) | "Green 76% or more; Amber 74% to under 76%; Red under 74%" |
Design wins that ship (K4)
C9: The 80% target fails the Attainable test (baseline 31.5%). Accept: reset the target. Refer to the VP Sales (with Q-11). Reason: 80% was Marcus's belief, never measured, and he said so. The oldest cohort levels off near a third. A target needing +5.4 points a month against a run rate of +0.08 is a wish, not a target.
| Text | |
|---|---|
| Before (K4 target) | "80% by 30 Jun 2027. Marcus believes about 80% ship but has never measured it. Reset once Kewpie sets the baseline. Working Hypothesis" |
| After (K4 target) | "35% by 30 Jun 2027, from a baseline of 31.5% (Sep-26). Gary's proposal, to agree with the VP Sales once the 18-month window (Q-11) and the CRM date back-fill are settled. Marcus's 80% was a belief, not a measure. Working Hypothesis" |
| Before (K4 thresholds) | "Green 80% or more; Amber 60% to under 80%; Red under 60%" |
| After (K4 thresholds) | "Green 35% or more; Amber 30% to under 35%; Red under 30%" |
C10: A third of CRM rows have no stage dates, and there's no product key to invoices. Accept, and Refer to the VP Sales and CFO. Reason: the data gap belongs in the Requirements, because the KPI can't be trusted without the fix. The baseline stays a Working Hypothesis.
| Text | |
|---|---|
| Before (data inventory, CRM quality notes) | "Design wins are logged here. Trusted less than the P&L because reps work to a bonus. Some rows have a stage but no stage dates" |
| After (data inventory, CRM quality notes) | "Design wins are logged here. Trusted less than the P&L because reps work to a bonus. 33% of rows (2,932 of 8,990) have no stage dates. Data requirements: VP Sales to back-fill stage dates; VP Sales and Finance to add a shared product or SKU key between the CRM and the ERP" |
C11: Reps are paid per design win with no clawback, and there are no reason codes. Accept: add the data request. Refer the incentive design to the VP Sales, CFO and People team. Reason: without a "reason lost" field, nobody can tell a real design win from one logged for the bonus. The bonus plan itself is outside this project.
| Text | |
|---|---|
| Before (Business Requirements, constraints) | (no line) |
| After (Business Requirements, constraints) | "Data request: add a required 'reason lost' field in the CRM for any opportunity lost after design win (owner: VP Sales). The design-win bonus (A$400 per win, no clawback) is referred to the VP Sales, CFO and People team, and is outside this project" |
Forecast accuracy (K5)
C12: Not yet one metric, and 5% is far from history. Accept. Refer the choice of forecast and the tolerance to the CFO (Q-5). Reason: neither forecast has been within 5% since FY24-Q4. I'll show both until the CFO picks one, and ease the starting target so it's hard but not hopeless. K5 stays off page one, as Marcus asked.
| Text | |
|---|---|
| Before (K5 target) | "Within 5% of actual by 30 Jun 2027. Gary's proposal; the CFO to give her view first (Q-5). Working Hypothesis" |
| After (K5 target) | "Within 10% of actual for FY27-Q4 (30 Jun 2027), on the forecast the CFO chooses. Until she chooses, Finance and Sales are both shown. Gary's proposal, CFO to set the tolerance (Q-5). Working Hypothesis" |
| Before (K5 thresholds) | "Green within 5%; Amber 5% to 10% out; Red more than 10% out" |
| After (K5 thresholds) | "Green within 10%; Amber 10% to 20% out; Red more than 20% out" |
C13: Data problems in the forecast table, and Finance's hardware forecast is 52% below its own plan. Accept the data-load check. Refer the gap to the CFO. Reason: that gap is the clearest sign yet that Finance and Sales aren't working from one number. No KPI change.
OEM stock on hand (K2.1)
C14: Only 35 OEMs report, and there's no target or thresholds. Accept: rename and measure as months of cover. Refer the thresholds to the VP Sales. Reason: "top 40" is wrong. Months of cover answers Marcus's question better than raw units: are OEMs still sitting on stock, or about to reorder? This is a new measure, so it needs Adam's sign-off.
| Text | |
|---|---|
| Before (K2.1 name) | "OEM stock on hand, top 40 OEMs" |
| After (K2.1 name) | "Months of stock cover at the OEMs that report (35 today, 46% of FY26 hardware revenue)" |
| Before (K2.1 measure) | "Total units on hand reported by the top 40 OEMs each quarter" |
| After (K2.1 measure) | "Units on hand at reporting OEMs (reels × 500), divided by those OEMs' average monthly units activated or invoiced (Kewpie to confirm which), each quarter. Units on hand shown alongside" |
| Before (K2.1 target and thresholds) | "To be agreed; Green, Amber and Red to be agreed" |
| After (K2.1 target and thresholds) | "Target: 6 months of cover or less by 30 Jun 2027 (9.3 now). Green 6 months or less; Amber over 6 to 9; Red over 9. Gary's proposal, to agree with the VP Sales. Working Hypothesis" |
Design wins per quarter (K4.2)
C15: Design wins have risen since the bonus, with no change in the shipping rate. Accept. No change. Reason: this is why it sits under Design wins that ship (K4), not on top.
↑ Back to top
3. For Adam's sign-off
These change a KPI, target or threshold. None is in the Business Requirements yet.
- Total revenue, last 12 months, against the path to A$115m (K1): add the FY27 plan as a second line in the threshold note (C1), and note in the target rationale that the plan repeats the one-off licence (C2)
- Software revenue growth (K3): rename to "without one-off large licences", show the total alongside, start the target at "back to growth (0% or more)" and move the thresholds to match (C5)
- Share of software revenue from the largest licences (K3.1): show it with and without the largest licence, and explain the Red in words until Mar-27 (C7)
- Gross margin %, last 12 months (K3.2): target from 77% to the board's 76%, thresholds moved down 1 point (C8)
- Design wins that ship (K4): target from 80% to 35% by Jun-27, thresholds 35 / 30 (C9)
- Forecast accuracy (K5): target from 5% to 10%, thresholds 10 / 20, both forecasts shown until the CFO chooses (C12)
- OEM stock on hand (K2.1): rename to "Months of stock cover at the OEMs that report", new measure, target 6 months or less, thresholds 6 / 9 (C14)
- Business Requirements data notes: CRM date back-fill and a shared product key (C10), and a "reason lost" field request (C11)
Referred, no change needed now: CFO on C1, C2, C6, C8, C12 and C13; Head of Platform Engineering on C4; VP Sales on C9, C10, C11 and C14; People team on the bonus (C11).
↑ Back to top