I wrote the FY2025 budget-vs-actual commentary to `output/bva-note.md`. The script's figures are in `output/bva.json`. The script's checks passed, and every figure in the note is copied from its output.

- **Revenue:** Full-year revenue was $11.2M against a $11.6M budget, unfavourable by ($362K), or (3.1%).
- **Operating income:** It was $388K against $583K, unfavourable by ($195K), or (33.5%).
- **Gross margin:** It was 25.9% against 26.8%, (0.9) pts below budget.
- **December:** Revenue was $3K above budget. Operating income was ($5K) below.

The note has five sections: Headline, Results, Month, Drivers and Data notes. The Drivers section covers these points:
- **Revenue miss:** It sits in March at ($123K), July at ($132K) and August at ($105K). The data doesn't show why, so the note asks the account owners.
- **Cost lines:** COGS was favourable by $196K, but freight out was unfavourable by ($29K) and salaries and wages by ($38K).
- **Underspend:** Marketing was favourable by $38K and technology by $25K. The note asks whether that spend was cut or pushed into FY2026.
- **Professional fees:** The variance peaked at ($31K) in March and ended at ($1K).

The note names no causes beyond what the data shows. The questions to line owners are open questions, not conclusions.