I've built the FY2025 revenue bridge and written the commentary note. I checked the percentages quoted in the note against the segment totals.

Revenue is essentially flat. It moved from 11,243,300 in FY24 to 11,238,378 in FY25, a change of -4,922.

| Step | Amount (USD) |
|---|---:|
| FY24 revenue | 11,243,300 |
| New customers (6) | +462,893 |
| Expansion (23 customers) | +1,210,651 |
| Contraction (11 customers) | (443,322) |
| Churned customers (4) | (1,288,224) |
| Timing items (3 customers) | +53,080 |
| FY25 revenue | 11,238,378 |

The steps add up to the FY25 total with no difference.

Flat revenue hides a shift in mix. Two Enterprise customers, Birchway Foods and Fenwick Legal, left and took about 1.19m with them. Expansion across the base and six new SMB customers made up the gap. Enterprise revenue fell 12%, Mid-Market grew 8.3% and SMB grew 43%.

**Assumption to confirm:** I read `timing_amount` as the timing part of each customer's change. I took it out of that customer's expansion or contraction and showed it as its own step. If it means something else, the timing line and the split between expansion and contraction will change, but total revenue won't.

Files are in /tmp/spb-revenue-bridge-fy25-claude-iepmzdwl:
- revenue_bridge_commentary.md
- bridge.py