I built the FY2025 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 reconciled to the cent: FY2024 plus Timing, Loss, Decline, Upsell and New equals FY2025. The movements, all as the script prints them:

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

- **Losses:** 4 lost customers took out ($1.3M). Fenwick Legal was the largest at ($686K), then Birchway Foods at ($503K).
- **Offsets:** 23 upsell customers added $1.2M, led by Harbor Freight Partners at $148K. 6 new customers added $463K, led by Thistle Gardens at $116K.
- **Cause not in the data:** The CSV doesn't show why Fenwick Legal and Birchway Foods left, so the note doesn't give a reason. Contract or CRM data on those two accounts would answer it.

The note's data line records the input as `customers_fy24_fy25.csv`, 48 rows, sha256 `742a2059e0fd`.

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