I wrote the one-page FY2025 summary for the CFO. It's under 350 words. The script's reconciliation checks passed (quarterly revenue sums to the full-year figure, and operating income ties to the subtotal).

**Headline:** FY2025 revenue was $11.2M against a budget of $11.6M, and operating income was $388K against $583K.

- **Revenue:** The shortfall is ($362K). Q1 (($121K)) and Q3 (($229K)) account for most of it. Q2 and Q4 were within ($7K) of budget.
- **Margin:** Cost of goods sold was $196K favourable, but gross margin was still 25.9% against 26.8% budgeted.
- **Operating expenses:** They finished on budget, with a variance of ($649).
- **Watch list:** Days sales outstanding (51.2 days against a target of 45.0), on-time delivery (93.3% against 95.0%) and active customers (40 against 42).

I left inventory turns off the watch list because it has only been off target for one month. The closing question for leadership asks what is driving the Q1 and Q3 shortfalls. The data doesn't show a cause, so the summary doesn't name one.

Files are in `output/`:
- `exec-summary.md`
- `summary.json`, which holds the script's figures