Forecasts you can defend in the Monday meeting.

From validated historicals to interval-level forecasts to Erlang C requirements — with the full working attached to every number.

Deep dive

Show the math.

Every result the engine returns carries a full calculation trace: the Erlang C inputs, intermediate values, shrinkage applied, occupancy caps, and the engine version that produced it. If a number is on the screen, you can see exactly how it got there.

  • Forward Erlang C — given staff, predict service level, ASA and occupancy
  • Backward Erlang C — given targets, compute required FTE per interval
  • Backlog-aware modeling — deferred work (email, chat, back-office queues) handled with backlog intervals, not voice math forced onto the wrong channel
  • Versioned engine — outputs are stamped with the engine version, so last quarter's numbers reproduce exactly
calculation_trace · engine v2.4.1 · interval 11:00–11:30 volume 489 contacts (revised forecast) aht 312 s workload 84.8 erlangs target 80% in 20s (SL) · ASA ≤ 30s erlang_c raw agents → 91 occupancy_cap 0.88 → 92 shrinkage 0.27 applied → required 126.0 FTE scheduled 119 − OOO 4 → net 115 → predicted SL 72%

Clean data in, defensible numbers out.

The historical data uploader takes interval-level volumes, AHT and staffing, and validates on ingest. Errors are reported row by row — you fix the file, not the forecast.

app.surewfm.com/upload · history_2026_q2.csv
RowIntervalVolumeAHTStatus
1,2042026-06-30 14:00388301valid
1,2052026-06-30 14:30402AHT missing
1,2062026-06-30 15:00−12295volume < 0
1,2072026-06-30 15:30371298valid

2 rows rejected with reasons · 14,382 rows accepted

Locking & versioning: the plan of record, kept honest.

Locked means locked. A locked forecast is immutable — it can't be quietly edited after the fact. New thinking becomes a new version; scheduling always knows exactly which plan it was built against.

Forecasting FAQ

Which channels are supported?

Voice queues via forward and backward Erlang C, plus backlog-aware modeling for deferred work — email, chat, and back-office style queues where work can carry over between intervals.

What granularity do forecasts run at?

Interval level, matching the interval granularity you configure per campaign — so requirements line up one-to-one with your scheduling and intraday views.

What exactly does “locking” a forecast do?

Locking makes that forecast the immutable plan of record. It can no longer be edited, it's the version scheduling generates against, and it's the “Original” your intraday O/R/P/A grid compares reality to.

See the math for yourself.

Bring one of your own intervals to the demo — we'll trace it end to end.

Book a demo