I've built the FY2025 revenue bridge and written the commentary note. The bridge script's check passed: FY2024 plus all the movements equals FY2025 to the cent.

**Headline:** FY2025 revenue was $11,238K, down ($5K) or (0.04%) from $11,243K in FY2024.

| Step | Amount |
| --- | --- |
| FY2024 | $11,243K |
| Timing | $53K |
| Loss | ($1,288K) |
| Decline | ($443K) |
| Upsell | $1,211K |
| New | $463K |
| FY2025 | $11,238K |

Revenue was nearly flat overall, but a lot moved underneath:
- **Lost customers:** 4 customers left, taking away ($1,288K). Fenwick Legal accounts for ($686K) of that and Birchway Foods for ($503K).
- **Upsell:** 23 customers spent more, adding $1,211K. Harbor Freight Partners added the most, at $148K.

The note's Drivers section covers the lost customers, Fenwick Legal, the upsell total and Harbor Freight Partners. The data doesn't explain why customers left, so the note doesn't give a reason.

Each amount is rounded to the nearest thousand on its own, so the table rows don't add exactly to the FY2025 total. The note says this in its data notes, along with the input file name, its 48 rows and its sha256 hash.

Files are in `output/`:
- bridge-note.md
- bridge.json