I've built the FY2025 revenue bridge and written the commentary note. Revenue was essentially flat: $11.2M in FY2025 against $11.2M in FY2024, a change of ($5K), or (0.04%). The script confirmed the bridge adds up to the cent.

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

- **Lost customers:** Losing 4 customers cost ($1.3M). Fenwick Legal accounted for ($686K) and Birchway Foods for ($503K).
- **Upsell:** 23 customers spent more, adding $1.2M. Harbor Freight Partners added the most, $148K.
- **New customers:** 6 new customers added $463K, led by Thistle Gardens at $116K.
- **Declines:** 11 customers spent less, cutting ($443K). Driftwood Media fell the most, by ($113K).

The note names customers and amounts but gives no reasons for the changes, because the data doesn't show any. To explain why Fenwick Legal and Birchway Foods left, you'd need account or CRM records.

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