I've written the CFO one-pager to `output/exec-summary.md`. It's 324 words, under the 350-word limit, and the figures came from the reporting script, which saved them to `output/summary.json`. The script's built-in cross-checks passed: the four quarters add up to the full-year revenue, operating income ties to the P&L lines, and December revenue in the KPI file matches the P&L.

**FY2025 results:**
- **Revenue:** $11.2M against a $11.6M budget, a shortfall of ($362K).
- **Operating income:** $388K against a $583K budget, a shortfall of ($195K).
- **Gross margin:** 25.9% against a 26.8% budget, (0.9) points lower.
- **Where the revenue missed:** almost all of it came in Q1 at ($121K) and Q3 at ($229K). Q2 and Q4 were within $7K of budget.
- **Offsets:** cost of goods sold came in $196K under budget, which absorbed part of the revenue gap. Overspends on salaries and freight were roughly matched by savings in marketing and technology, so operating expenses finished only $649 over budget.

**Watch list:** three KPIs that missed target in December:
- **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.

**Decision for you:** I left inventory turns off the watch list. December was 5.33 against a target of 6.50, but it was the first month off target, and the other three have been off for longer. It's a fairly large gap, so if the CFO would want to see it, I can add it back. There's room within the word limit.

The page doesn't explain why Q1 and Q3 missed, because the files don't break revenue down by customer or product. Instead it ends with the question leadership should ask: which customers drove those misses, and whether the same accounts are also paying late.