I've written the FY2025 one-pager for the CFO to `output/exec-summary.md`. It's 305 words, under the 350-word limit. The figures are in `output/summary.json`. The script that produced them confirmed that the four quarters add up to full-year revenue, that operating income adds up from the line items, and that revenue in the KPI file matches revenue in the P&L.

**Headline:** FY2025 revenue was $11.2M against a budget of $11.6M, and operating income was $388K against $583K. Operating income came in ($195K) below budget, or (33.5%).

- **Drivers:**
  - **Revenue miss:** revenue fell ($362K) short of budget, with most of the gap in Q1 ($121K) and Q3 ($229K).
  - **Cost of goods sold:** came in $196K under budget, which absorbed part of the revenue miss. Gross margin still finished at 25.9% against 26.8%.
  - **Operating expenses:** finished on budget, missing by only ($649). Salaries and wages were ($38K) over, and savings in Marketing and Technology covered that.
- **Watch list:**
  - **Days sales outstanding:** 51.2 against a target of 45.0, off target for 3 months.
  - **On-time delivery:** 93.3% against 95.0%, off target for 3 months.
  - **Active customers:** 40 against 42, off target for 2 months.

**Choices to review:**
- **Inventory turns left off the watch list:** it was also off target, at 5.33 against 6.50, but only for one month. Add it back if the CFO wants all four off-target KPIs.
- **Two cost-of-goods figures:** the cost of goods line shows $196K favourable, but total cost of goods is $167K favourable. The difference is mainly Freight out, which is ($29K) unfavourable.
- **The closing question to the business:** I wrote it as asking what is slowing collections and deliveries, and whether that is costing customers. The data shows these KPIs moving together but not that one causes another.