The one-pager is in `output/exec-summary.md` and runs to about 300 words. The figures it uses are in `output/summary.json`. The script that produced them checked its own totals and found no mismatches: the four quarters add up to the full-year revenue, the P&L lines add up to operating income, and the revenue KPI matches P&L revenue.

**Main results for FY2025:**
- **Revenue:** $11.2M against a $11.6M budget, a shortfall of ($362K). Revenue was below budget in every quarter. Most of the gap came in Q1, ($121K), and Q3, ($229K).
- **Operating income:** $388K against $583K, which is ($195K) below budget. Gross margin was 25.9% against a budget of 26.8%.
- **What helped:** cost of goods sold came in $196K under budget, which offset part of the revenue shortfall. Operating expenses ended essentially on budget, ($649).
- **Watch list:**
  - Days sales outstanding was 51.2 against a target of 45.0.
  - On-time delivery was 93.3% against 95.0%.
  - Active customers were 40 against 42.

**My choices:**
- I left inventory turns off the watch list. It was 5.33 against 6.50 but has only been off target for one month, while the other three have missed for two or three months running. Say if you want it added back.
- The data shows what moved but not why, so the summary doesn't give causes. It ends by suggesting the CFO ask the business whether the three watch-list problems are linked.