I've written the FY2025 budget-versus-actual commentary to `output/bva-note.md`, with the script's figures in `output/bva.json`. The script checked that the variances add up across the P&L, and they do. Every figure in the note is copied from the script's output.

**Headline:** FY2025 revenue was $11,238K against a $11,600K budget, unfavourable by ($362K), or (3.1%). Operating income was $388K against $583K, unfavourable by ($195K), or (33.5%).

**Main drivers:**
- **Revenue:** most of the miss fell in three months: March at ($123K), July at ($132K) and August at ($105K). No other month missed by more than ($6K). The file doesn't show why, so the note asks Sales for customer and order detail for those months.
- **Cost of goods sold** was $196K under budget, which offset part of the revenue miss. **Freight out** went the other way, ($29K) over budget even though revenue fell short.
- **Cost overruns:** Salaries and wages was ($38K) over budget and Rent and occupancy ($23K) over. Marketing at $38K under and Technology at $25K under offset them.
- **Professional fees** was ($31K) over budget at its worst, in March, but closed the year only ($1K) over. That overrun was timing, not a real overspend.

The note also has a results table (gross margin was 25.9% against 26.8% budget), a December paragraph and the data notes. Each amount in the table is rounded on its own, so the Gross profit and Operating income rows don't add exactly; the note says this.

To finish the commentary, the line owners need to answer the questions the note asks them, starting with what caused the March, July and August revenue misses.