File: 2026.10.26 - Lumenwire Audio - 02 KPI Calculation Pack.md

Lumenwire Audio: KPI Calculation Pack

Stage 2 (KPI Development), Kewpie. Version 1.1, 26-Oct-26. Built from Business Requirements v1.1 (Adam approved Stage 2 and the eight changes to the targets, thresholds and measures on 26-Oct-26). Version 1.0 was built on Business Requirements v1.0.

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

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 KPIBaseline (period)TargetPace neededRun 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-28A$1.64m a month more-A$0.02m a monthRed
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 monthRed (pending Head of Platform Engineering)
Software revenue growth without one-off large licences, last 12 months against the year before (K3)-15.6% (A$17.7m against A$21.0m, leaving out the A$7.4m licence of Mar-26); including it: +19.7%0% or more by Jun-27+1.7 pts a month-4.7 pts a monthRed
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)35% by Jun-27+0.39 pts a month+0.08 pts a monthAmber
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 10% by Jun-27Finance -2.4 pts a quarter, Sales -5.2 pts a quarterFinance -11.3 pts a quarter (Sales -4.5 pts)Amber for Finance, Red for Sales (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) is measured without the Mar-26 licence, so it is -15.6% and needs +1.7 pts a month to get back to 0%, while the run rate is -4.7 pts a month. Design wins that ship (K4) is 3.5 pts short of its 35% target: it needs +0.39 pts a month against a run rate of +0.08 pts.

What the data says about the story Marcus told

What Marcus saidWhat the data showsVerdict
Revenue fell from A$118.4m to A$80.6mLedger A$118.4m and A$80.6m; invoices reconcile to the ledger to the cent in every yearConfirmed (Observed Fact)
Software grew 38% to A$25.7mA$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 wins1,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 patchEnd-customer installs fell 3.3% in FY26 (A$1.8m of a A$49.8m hardware volume fall). OEMs bought 47% fewer unitsMostly not demand: OEMs stopped buying ahead of installs (Strong Inference)
Q1 FY27 about A$19mA$19.4m (plan A$22.4m)Confirmed; -13.3% against plan
↑ Back to top

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.

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).

Sub-KPI under New devices activated: Months of stock cover at the OEMs that report (K2.1)

Measure status: Corrected (divisor chosen: units invoiced; reels, free-text names, the number of reporters). Owner: VP Sales. Pending the Head of Platform Engineering and VP Sales.

Software revenue growth without one-off large licences, last 12 months against the year before (K3)

Measure status: Corrected (the one-off exclusion is now in the formula). Objective: Keep software growing, with gross margin holding up (O2). Owner: CEO.

Sub-KPI under Software revenue growth: Share of software revenue from the largest licences (K3.1)

Measure status: Confirmed. Owner: VP Sales.

Sub-KPI under Software revenue growth: Gross margin %, last 12 months (K3.2)

Measure status: Confirmed. Owner: CFO.

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.

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.

Sub-KPI under Design wins that ship: Design wins per quarter (K4.2)

Measure status: Confirmed. Owner: VP Sales.

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).

↑ Back to top

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) ................................ Amber
  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  Months of stock cover at the OEMs that report ............ Red
O2  Keep software growing, with gross margin holding up
    K3  Software revenue growth without one-off large licences ........ Red
        K3.1  Share of software revenue from the largest licences ...... Red
        K3.2  Gross margin %, last 12 months ........................... Green
O3  Keep design wins turning into shipping products
    K4  Design wins that ship .......................................... Amber
        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 top

4. 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)

StepEffect on revenueWhat it is
FY25 revenueA$118.4mLedger
End-customer installs fell 3.3%-A$1.8mChange in devices activated x FY25 average price per unit
OEMs bought fewer units than they installed (sell-in against installs)-A$48.0mThe rest of the hardware volume change
Price and product mixA$0.4mSKU by SKU, FY26 units x change in price
Volume rebates paidA$4.5mSmaller rebates on smaller purchases (helps revenue)
The Mar-26 perpetual licenceA$7.4mOne contract
Other software-A$0.3mEverything else in software
Other (developer kits, freight)A$0.0m
FY26 revenueA$80.6mLedger. Unexplained: A$0.0m

Suspects and tests

#SuspectTest (all in the script)ResultVerdict
1Industry 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 fallSmall part only. Real, but explains about A$1.8m of A$49.8m
2OEMs buying less than they install (stopped buying ahead / destocking)Units invoiced per device activated; orders against installs by phase; lead times; OEM stock reportsRatio 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 likeSupported. The main cause
3Lost customersOEMs buying in FY25 and FY26409 bought in FY25, 408 in FY26; 1 lost. 409 of 409 bought less (median change -52%)Ruled out
4One OEM, tier, region or productChange by tier, region and SKU; top-10 shareTiers 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
5Price cutsAverage price per unit, by SKU+0.9% overall; every SKU between +0.4% and +1.4%Ruled out
6Exchange ratesFY26 non-AUD hardware lines re-priced at FY25 ratesFX added A$607k to FY26 hardwareRuled out (it helped)
7Rebate-driven quarter-end buying unwindingShare of hardware revenue in quarter-end months; rebate monthsQuarter-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)
8Reporting or cut-off changeInvoices against ledger by year and family; unmapped accountsLargest difference A$0.00; 0 unmapped rowsRuled out
9Supply: OEMs had to buy ahead because lead times were longQuoted lead time by month48 weeks in Mar-23, 8.5 weeks by Jun-24 and about 8 sinceConsistent 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.

  1. 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).
  2. End-customer demand: A$1.8m. Real but small. Observed Fact on the sample, with coverage of the telemetry unconfirmed (Q-4).
  3. Two offsets hid part of the fall: the Mar-26 licence (A$7.4m) and smaller rebates (A$4.5m).
  4. 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 10.9 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).

  1. 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).
  2. 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).
  3. 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.

#SuspectTestResultVerdict
1SeasonalityShare of each year's activations by quarter, FY23 to FY2524.0%, 24.0%, 24.0% in Q1 each year; the four quarter shares are within 0.2 pts of each other across the three yearsRuled out
2One countryDip (Jul-25 to Jun-26) by country20 of 21 countries down (-6.3% to +0.8%). Latest quarter: 19 of 21 upRuled out. Broad
3One productDip by product groupChips -3.4%, modules -3.1%, cards -3.8%Ruled out. Broad
4One or two OEMsGrowth by OEM, 12 months130 of 319 OEMs grew; median OEM -1.3%Ruled out
5Repeat serials or test devices counted as newRepeat-serial share before and during the dip; beta firmware0.47% before, 0.53% during. No beta rows after 2022Ruled out
6A telemetry change that stopped devices reportingMonthly devices seen in the heartbeat table around Jul-25; firmware release datesDevices 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 startsNot ruled out. The reporting count held, but the coincident firmware release needs Engineering to confirm
7A real change in end-customer demandNone possible with our dataWe hold no end-market dataCannot 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.

  1. Ask the Head of Platform Engineering to confirm the firmware and coverage question before the board sees this measure (moves New devices activated K2).
  2. 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).
  3. 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

StepEffectWhat it is
Software, prior 12 monthsA$21.01mLedger
The 2026-03 perpetual licenceA$7.40mOne contract
Other perpetual licences-A$3.52m105 deals to 81 deals; deals under A$500k A$14.1m to A$10.9m
Annual subscriptionsA$0.23mNew and renewed contracts started in the window
Monthly subscriptionsA$0.05m
Licence table against ledger-A$0.03mSmall difference between the two sources
Software, last 12 monthsA$25.14mLedger
#SuspectTestResultVerdict
1One large dealBridge above; growth without the licence+19.7% with, -15.6% without. The licence is 29% of the 12 monthsSupported. The cause
2Broad growth across many licencesPerpetual deals ex the big one; subscriptionsPerpetual ex the big one: -20%; subscriptions +6.6% (A$4.1m against A$3.8m)Ruled out. Only subscriptions grew, and slowly
3Subscriptions not renewingRenewal rate on decided annual contracts88.7% now, 88.2% the year beforeRuled out
4Bigger dealsMedian perpetual deal; deals over A$500kMedian A$120k to A$106k; deals over A$500k 5 to 4Ruled out
5Reporting or timingLicence table against ledger, month by monthWithin A$27k in any monthRuled 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.

  1. Report Software revenue growth (K3) with and without the largest licence, until the CFO says what it is (moves K3).
  2. 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.
  3. 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.

#SuspectTestResultVerdict
1The 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 months21.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
1bThe bonus: dilution of qualityWins per quarter; median estimated annual revenue; lost within 12 months; pre-production within 12 months; wins in the last week of a quarterWins 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
2Window too short (18 months)Shipped share by age, Jan to Jun 2023 cohort12 months 7%, 18 months 21%, 24 months 27%, 36 months 32%, 42 months 32%Ruled out. The curve flattens near a third
3Missing dates hide the shipped onesSensitivity: count undated records by current stage29.7% against 31.5%Ruled out for the level. It does cap the evidence label at Working Hypothesis
4A few owners, a region or an OEM tierShipped share by owner (14 owners, at least 83 wins each), region and tierOwners 24% to 41%; regions 29% to 35%; tiers 31% to 34%Ruled out. Broad
5Slow engineering supportNo engineering support dataThe CRM holds no reason codes or engineering statusCannot be tested here
6The hardware reset (Jul-25) cooling OEM programmesPre-production and lost within 12 months, by cohortPre-production within 12 months 36% to 47% across cohorts, no break at Jul-25. Lost within 12 months rises from FY25-Q2Partly. 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.

  1. 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).
  2. 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.
  3. 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 sitsFinanceSales
HardwareA$9.1mA$24.0m
SoftwareA$2.2mA$3.6m
OtherA$0.0m-A$0.0m
Total (forecast minus actual)A$11.3mA$27.6m
#SuspectTestResultVerdict
1Mixed units (AUD and AUD thousands)Compare raw and converted FY24 Finance totalsRaw FY24-Q1 total A$26,480 against converted A$26.5m. All thousands rows are FY24; every quarter since is in AUDRuled out as a cause of recent misses. A data trap, handled
2The hardware step in Jul-25 that no forecast sawError before and after FY26-Q1; FY26-Q1 hardwareFY26-Q1 hardware: Finance forecast A$22.5m, Sales A$18.2m, actual A$12.9m. Misses roughly double after the breakSupported
3Sales is always optimisticSign of the error each quarterSales 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
4Finance just rolls the last run rate forwardFinance forecast against the previous quarter's actual and the year-ago quarter's actualMedian 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)
5One-off software dealsSoftware 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
6Snapshot timingDays between snapshot and quarter start2 to 5 days for every snapshot usedRuled out
7Finance's latest forecast is off the planFY27-Q1 hardware: board plan, Finance forecast, Sales forecast, actualPlan A$14.8m (set 2026-06-15), Finance forecast A$7.1m (2026-06-26), Sales A$17.8m, actual A$13.4mOpen. 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.

  1. 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).
  2. Report each forecast's bias with its accuracy, and correct Sales's forecast for its historic bias before it is used (moves K5).
  3. CFO explains the gap between the FY27 plan and the 26-Jun-26 Finance forecast before K5 goes on page one.
↑ Back to top

5. Corrections to Gary's draft measures, and challenge notes

5a. Corrections (Before and After in full)

#KPIBefore (Gary's draft)After (Kewpie)Why
A1Total 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).
A2New devices activated (K2)Filters: "First activation only: one row per device_serial"; OEM split from oem_idFirst 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.
A3Months of stock cover at the OEMs that report (K2.1)Divisor left open: "average monthly units activated or invoiced (Kewpie to confirm)"; stock "SUM(units_on_hand, reels x 500)" at reporting OEMsDivisor = average monthly units invoiced to the same OEMs in the same quarter (erp_invoice_lines.qty, chip, module, card). Stock = units_on_hand, reels x 500, from OEMs that reported in that quarter; names cleaned to match oem_master.Invoiced units are the same unit as the stock, full scale and carry an OEM on every hardware line. Activations are a 1-in-10 sample with 7% of devices unassigned. Result in 2026-Q3: 10.9 months (Gary's draft said 9.3).
A4Software revenue growth (K3)Formula (v1.1 draft): "leaving out any single licence worth more than A$1m (threshold to agree with the CFO)" with the calculation -1 * SUM(gl_monthly.amount_aud) for accounts 4100 and 4110, R12M over prior R12M, minus 1 (no exclusion in the calculation)Calculation now includes the exclusion: (software R12M less licences over A$1m started in R12M) / (software prior R12M less licences over A$1m started in prior R12M) - 1. Growth including them is shown alongside.The calculation had to match the plain English. Result -15.6% (1 licence removed).
A5Design 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.
A6Months from design win to first shipment (K4.1)Calculation: "MEDIAN(months_between(stage_entered_design_win, stage_entered_shipping))" for opportunities that shippedSame 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.
A7Forecast 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: 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

#KPIIssueEvidenceSuggested fixStatus
C1Total 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_fy27CFO 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.Noted in v1.1 (target rationale and threshold note)
C2Total 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_licencesGary to carry this into the target rationale. CFO to confirm whether the plan should repeat it.Noted in v1.1 (target rationale)
C3Total 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_monthlyGary 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
C4New 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_linesHead 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
C5Software 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_licencesGary, VP Sales and CFO to set the target on repeat revenue, or to show growth with and without large single licences (Q-3).Resolved in v1.1 (K3 now excludes one-off licences, target 0%)
C6Software 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_monthlyCFO to confirm revenue recognition for subscriptions and for the Mar-26 licence.Open
C7Share 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_licencesGary to add 'with and without the largest licence' to the view. Customer name stays off the board page.Noted in v1.1 (shown with and without the licence)
C8Gross 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_monthlyGary and CFO to align the target with BT-03 and agree whether one-offs are shown.Resolved in v1.1 (target 76%, with and without one-offs)
C9Design 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_opportunitiesGary 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.Resolved in v1.1 (target 35%)
C10Design 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_linesVP Sales and Finance to add a shared product or SKU key; VP Sales to back-fill dates.Actioned in v1.1 (data notes: date back-fill, shared product key)
C11Design 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_opportunitiesGary 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.Actioned in v1.1 (reason lost request; bonus referred out)
C12Forecast 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 even the 10% line is far from history: to reach the new 10% line Finance needs -2.4 pts a quarter.forecast_snapshots, gl_monthlyCFO to choose the forecast and the tolerance (Q-5). Gary to keep K5 off page one until she does.Partly resolved in v1.1 (10% and 20% bands; CFO still to choose the forecast)
C13Forecast 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_fy27Add an 'amount_unit' check to the data load. CFO to explain the gap.Open
C14OEM 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_masterGary to set thresholds from the baseline, for example on months of cover (10.9 at the reporters now). That would be a new measure, so it is Gary's call.Resolved in v1.1 (replaced by Months of stock cover, 6 and 9 month lines)
C15Design 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_opportunitiesNo change. Read it with Design wins that ship.Logged
↑ Back to top

6. Data quality log

TableProblemCountHow handled
gl_monthlyRows with an unmapped account / duplicate month-account-cost-centre rows0 / 0None needed
erp_invoice_linesLines with no oem_id / no order_id3,161 / 2,200 of 392,709Kept 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_linesNon-AUD lines with no fx_rate_used34,737 (none in the last 24 months)net_amount_aud is present, so no effect
sales_ordersOrders with no quoted lead time11,542 of 391,848Averages use the rows that have one
device_activationsRepeat serials5,040 of 1,198,459 (1,611 in the last 24 months)Earliest kept
device_activationsRows with no oem_id; after backfill from manufacturer_code107,210; 85,186 (7.1%)Affects the OEM split only, not the headline
device_activationsBeta firmware rows2,197, none after 2022No effect on the window
device_activationsproduct_model_string is free textall rowsNot used
device_heartbeat_monthlyUsed only to check that devices kept reporting through Jul-251,236,586 rows, 58,917 devices (sample)Not a KPI source
crm_opportunitiesRows with a stage but no stage dates at all (last edited 2018 to Jan-23)2,932 of 8,990; 1,914 past design winExcluded from K4 and counted; baseline labelled Working Hypothesis
crm_opportunitiesShipping date but no design-win date349Counted separately, not in the rate
crm_opportunitiesDesign win with no design-in date245 (none after mid-2023)Not used in the rate
oem_inventory_reportsOEM name spellings / OEMs after cleaning235 / 35Cleaned; all match oem_master; 0 unmatched
oem_inventory_reportsReel rows (count of reels of 500) / finished-goods rows88 / 229Reels x 500; finished goods kept and noted
oem_masterSame OEM name on two IDs (Gareth Acoustics Ltd, OEM0409 and OEM0410)1 nameFirst match used for stock-report names; neither is among the stock reporters
software_licencesContracts with no oem_id1,750 of 3,096Not needed for the KPIs
software_licencesLicence table against ledgerwithin A$27k in any monthLedger used for the KPI, table for the detail
forecast_snapshotsRows in AUD thousands12 of 84Multiplied by 1,000
forecast_snapshotsMissing Sales snapshot / revision after the quarter beganFY25-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).

↑ Back to top