I've written the FY2025 budget versus actual note for the operating review. It's in `output/bva-note.md`, and the figures behind it are in `output/bva.json`. The house script produced every number, and its reconciliation check passed.

**Headline:** FY2025 revenue was $11,238K against an $11,600K budget, unfavourable by ($362K), or (3.1%). Operating income was $388K against $583K, unfavourable by ($195K), or (33.5%). Gross margin was 25.9% against a 26.8% budget, a gap of (0.9) pts. Operating expenses finished almost exactly on budget, at ($1K).

**Drivers in the note:**
- **Revenue:** the shortfall came almost entirely from three months: March ($123K), July ($132K) and August ($105K). Every other month was close to budget.
- **Cost of goods sold:** favourable by $196K, which partly offsets the revenue miss. The data doesn't show whether that comes from lower volume or better unit cost.
- **Freight out:** unfavourable by ($29K), or (8.3%), even though revenue was below budget.
- **Salaries and wages:** unfavourable by ($38K), or (2.5%), and still widening in December.

The note asks each line owner a question and names no causes, because the P&L doesn't show them.

**Left out to stay within the four-bullet limit:**
- **Marketing:** underspent by $38K, or 28.5%.
- **Technology:** underspent by $25K, or 15.0%.
- **Professional fees:** reached ($31K) over budget in March, then came back to ($1K) by year end. This looks like a timing difference.

I can swap any of these in if they matter more to the review.

The data notes say that some subtotals don't add up exactly because each amount is rounded separately.