The memo is at `output/scenario-memo.md`, and the script's figures are in `output/scenarios.json`. The script checked that each case's driver changes add up exactly to the gap between Base EBITDA and that case's EBITDA. All three cases passed.

**Base EBITDA is $303K. The range runs from ($6K) in Downside to $501K in Upside.**

| 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 moves EBITDA between the cases:**
- **Upside** changes only revenue drivers:
  - Active customers go from 44 to 46, adding $135K. The assumption is that two Enterprise proposals close in January.
  - Revenue per customer rises, adding $62K. The assumption is that the January price increase holds with no lost volume.
- **Downside** changes three drivers:
  - Active customers fall from 44 to 41, a change of ($203K). The assumption is that three accounts on the credit watch list are lost.
  - Gross margin falls from 26.6% to 25.8%, a change of ($78K). The assumption is that the March vendor cost increase is not passed on to customers.
  - Other opex rises from $946K to $974K, a change of ($28K), because carrier fuel surcharges go up.
- Headcount and cost per head are the same in all three cases.
- Each change is measured with the earlier drivers already moved, in a fixed order. So the amounts show how far each driver moved EBITDA, not its share of the total.

**Recommendation in the memo:** plan to Base.
- Move toward Upside if both Enterprise deals sign in January and the price increase holds.
- Move toward Downside if any account on the credit watch list leaves. Losing customers is the biggest swing in Downside, and Downside EBITDA is slightly below breakeven.
- Prepare now: plans to keep the watch-list accounts, a position on passing on the March vendor cost increase, and a response to fuel surcharges.

The memo assigns no probabilities to the cases.