I've built the FY2025 revenue bridge and written the commentary note. Revenue was basically flat: $11.2M in FY2025 against $11.2M in FY2024, down ($5K), or (0.04%). The bridge script's check confirmed that the six steps add up exactly to FY2025 revenue.

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

The flat total hides a lot of movement:
- **Losses:** 4 lost customers took out ($1.3M). Fenwick Legal accounted for ($686K) of that and Birchway Foods for ($503K).
- **Upsell:** 23 customers spending more added $1.2M, led by Harbor Freight Partners at $148K.
- **New customers:** 6 new customers added $463K, led by Thistle Gardens at $116K.
- **Declines:** 11 customers spending less took out ($443K). Driftwood Media was the largest at ($113K).

All figures are rounded and copied from the script's output. The data shows which customers moved, but not why. Win/loss or churn-reason records would be needed to explain Fenwick Legal and Birchway Foods.

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