I've built the FY2025 bridge and written the commentary note. The script confirmed the bridge adds up to FY2025 revenue to the cent.

**Result:** FY2025 revenue was $11.2M, the same as FY2024's $11.2M once rounded. The change was ($5K), or (0.04%). Gains and losses almost exactly cancelled out:

| Step | Amount |
| --- | --- |
| FY2024 | $11.2M |
| Timing | $53K |
| Loss | ($1.3M) |
| Decline | ($443K) |
| Upsell | $1.2M |
| New | $463K |
| FY2025 | $11.2M |

- **Lost customers:** 4 customers stopped buying, taking ($1.3M). Two account for most of it: Fenwick Legal, ($686K), and Birchway Foods, ($503K).
- **Customers buying more:** 23 customers added $1.2M, led by Harbor Freight Partners at $148K.
- **New customers:** 6 new customers added $463K, the largest being Thistle Gardens at $116K.
- **Customers buying less:** 11 customers fell ($443K), the largest being Driftwood Media at ($113K).
- **Timing:** $53K comes from 3 customers whose renewal dates moved, not from a change in what they buy.

The data doesn't say why any customer was lost or bought less, so the note doesn't give reasons.

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