I built the FY2025 bridge and wrote the note. FY2025 revenue was **$11,238K** against **$11,243K** in FY2024, a change of **($5K)**, or **(0.04%)**. The script checks that the bridge adds up to the cent before it writes anything, and that check passed.

| Step | Amount |
| --- | --- |
| FY2024 | $11,243K |
| Timing | $53K |
| Loss | ($1,288K) |
| Decline | ($443K) |
| Upsell | $1,211K |
| New | $463K |
| FY2025 | $11,238K |

- **Lost customers:** 4 customers were lost, worth ($1,288K). Two of them account for most of it: Fenwick Legal at ($686K) and Birchway Foods at ($503K).
- **Growth from existing customers:** 23 customers spent more, adding $1,211K. Harbor Freight Partners added the most, $148K.
- **New customers:** 6 new customers added $463K, led by Thistle Gardens at $116K.
- **Customers who spent less:** 11 customers fell by a total of ($443K). Driftwood Media fell the most, by ($113K).

The note doesn't give reasons for the losses or the falls, because the CSV doesn't show any. Answering "why" would need churn reasons or contract data.

Each amount is rounded on its own, so the rounded rows don't add exactly to the FY2025 total; the note says this.

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