I wrote the full-year commentary to `output/bva-note.md`. The script's figures are in `output/bva.json`. The script's reconciliation checks passed.

FY2025 revenue was $11.2M against a $11.6M budget, unfavourable by ($362K), or (3.1%). Operating income was $388K against $583K, unfavourable by ($195K), or (33.5%).

The drivers in the note:
- **Revenue miss:** it sits in three months: March at ($123K), July at ($132K) and August at ($105K). Every other month was within $7K of budget. The data doesn't show the cause, so the note asks the sales owners to confirm whether it was lost volume or deferred orders.
- **Operating expenses:** they landed on budget at ($649), but only because savings offset overruns. Marketing was favourable by $38K and Technology by $25K. Salaries and wages were unfavourable by ($38K) and Rent and occupancy by ($23K).
- **Freight and margin:** freight out was unfavourable by ($29K), or (8.3%). COGS was favourable by $196K, but gross margin still came in (0.9) pts below budget.
- **Professional fees:** they peaked at ($31K) over in March and ended the year at ($1K), so that overrun reversed.

December on its own was close to budget: revenue $827K, favourable by $3K, and operating income $8K against $13K.