I wrote the one-page FY2025 board summary, about 280 words against the 350-word cap. The script's reconciliation checks passed, and every figure is copied from its output.

- **Headline:** Revenue was $11.2M against a budget of $11.6M. Operating income was $388K against $583K.
- **Quarterly trend:** Every quarter missed budget on revenue. Q1 missed by ($121K) and Q3 by ($229K), while Q2 (($4K)) and Q4 (($7K)) were close.
- **Drivers:** The revenue shortfall of ($362K) is the main one. Cost of goods sold came in $196K favourable and offset part of it. Salaries and wages (($38K)) and freight out (($29K)) were unfavourable.
- **Watch list:** Days sales outstanding is 51.2 days against a target of 45.0. On-time delivery is 93.3% against 95.0%. Active customers are 40 against 42.
- **Question for the business:** The summary closes by asking what explains the Q1 and Q3 shortfalls, and whether slower collections and late deliveries are linked to them.

I left inventory turns off the watch list because it has been off target for only one month. I also didn't give a cause for the cost of goods sold saving, because the data doesn't show one.

Files are in `/tmp/spb-exec-summary-fy25-v1-claude-blfppt8a/output`:
- `exec-summary.md`
- `summary.json`

The skill's output contract names `exec-summary.md`, and the brand rules say the contract wins over the `IS_<Deliverable>_<period>` file-name pattern. If you want the branded name, `IS_ExecSummary_FY2025.md`, I can rename it.