FY2026 EBITDA runs from **($6K) in Downside to $501K in Upside**, against a **Base of $303K**. The script checked that each scenario's driver changes add up exactly to its EBITDA.

| Scenario | Revenue | EBITDA | vs Base | % |
| --- | --- | --- | --- | --- |
| Base | $11.2M | $303K | n/a | n/a |
| Upside | $11.9M | $501K | $197K | 65.1% |
| Downside | $10.4M | ($6K) | ($309K) | (102.0%) |

**What drives the gap.** Five assumptions change: two in Upside and three in Downside. The script measures them one at a time in a fixed order, so each figure is that assumption's effect given the ones before it, not its share of the total.
- **Downside, ($309K):**
  - Active customers fall from 44 to 41 because 3 credit watch list accounts are lost: ($203K).
  - Gross margin falls from 26.6% to 25.8% because the March vendor cost increase isn't passed on: ($78K).
  - Other opex rises from $946K to $974K on carrier fuel surcharges: ($28K).
- **Upside, $197K:**
  - Active customers rise from 44 to 46 if 2 Enterprise proposals close in January: $135K.
  - Revenue per customer rises if the January price increase holds with no lost volume: $62K.
- Headcount and cost per head are the same in all three cases.

Customer count is the biggest driver in both directions. In Downside, EBITDA turns slightly negative for the year.

**Recommendation:** plan to Base. Watch the January Enterprise signings, the price increase and the credit watch list accounts. Prepare now: retention plans for the at-risk accounts, a way to pass on the March vendor increase, and a review of carrier surcharge terms.

The script doesn't report the width of the range as one figure, so I've given the two ends rather than working it out by hand.

Files are in `output/`:
- `scenario-memo.md`
- `scenarios.json`