I built the bridge and wrote the commentary note. The script's check passed: the bridge reconciles to the cent.

FY2025 revenue was $11.2M against $11.2M in FY2024, a change of ($5K), or (0.04%).

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

- **Losses:** Fenwick Legal (($686K)) and Birchway Foods (($503K)) are the largest of 4 lost customers.
- **Upsell:** $1.2M across 23 customers offset most of the losses. Harbor Freight Partners added $148K and Ember Analytics added $136K.
- **New:** 6 customers added $463K, led by Thistle Gardens at $116K.
- **Declines:** 11 customers cost ($443K). The data doesn't show why, so the note says account notes or churn reasons would answer it.

All figures are copied from the script's output. The note's data line reads: customers_fy24_fy25.csv, 48 rows, sha256 `742a2059e0fd`.

Files are in `/tmp/spb-revenue-bridge-fy25-claude-q27_fsvu/output`:
- bridge-note.md
- bridge.json