I built the FY2025 revenue bridge and wrote the commentary note. FY2025 revenue was $11.2M against $11.2M in FY2024, a change of ($5K), or (0.04%). The script's check that the bridge adds up to the cent passed.

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

- **Flat total, large movements underneath:** Losses of ($1.3M) were offset by upsell of $1.2M and new business of $463K.
- **Losses:** Four customers were lost. Fenwick Legal accounts for ($686K) and Birchway Foods for ($503K).
- **Growth:** Harbor Freight Partners added $148K and Ember Analytics added $136K, two of 23 customers that grew.
- **Why customers moved:** The data doesn't show causes, so the note doesn't name any.

Every figure in the note comes from the script's output, and the data notes line gives the input file, 48 rows and its hash.

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