The CEO brief is written to `output/exec-summary.md`. It runs about 280 words, and the figures come from `output/summary.json`. The script's reconciliation checks passed.

**FY2025 in brief**
- **Result:** Revenue was $11.2M against a budget of $11.6M, a ($362K) shortfall. Operating income was $388K against $583K, a ($195K) shortfall.
- **Margin:** Gross margin was 25.9% against 26.8% budgeted, (0.9) points short. Operating expenses landed on budget, with a variance of ($649).
- **Quarterly revenue:** Q3 had the largest miss at ($229K), and Q1 missed by ($121K). Q2 and Q4 were within ($7K) of budget.
- **Offset:** Cost of goods sold came in $196K favourable, which covered most of the revenue gap at gross profit.
- **Watch list:** Days sales outstanding is 51.2 against a target of 45.0. On-time delivery is 93.3% against 95.0%. Active customers are 40 against 42. Each has been off target for two or three months.

I left inventory turns off the watch list because it has only been off target for one month. The brief closes with one question for leadership: why revenue missed while customer count and delivery performance also slipped. The data doesn't show the cause.