I've built the FY2025 revenue bridge. Revenue was essentially flat: $11.2M in FY2025 against $11.2M in FY2024, a change of ($5K), or (0.04%). The bridge adds up exactly to FY2025 revenue; the script checked that before writing any figures.

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

**What drove it:**
- **Two lost customers cancel out the growth.** Fenwick Legal ($686K) and Birchway Foods ($503K) make up most of the ($1.3M) Loss, across 4 lost customers in total.
- **Upsell nearly covered the losses.** 23 customers grew, adding $1.2M. Harbor Freight Partners added the most, $148K.
- **New business covered the declines.** 6 new customers added $463K, led by Thistle Gardens at $116K. That offset the ($443K) fall across 11 customers who spent less.

The data doesn't say why Fenwick Legal and Birchway Foods left; the account team or churn records would answer that.

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