Resiliency planning for contact centres
Plan for the range, not the point.
Every capacity plan commits to one headcount. Demand never lands on one number. Resiliency planning sizes the P10–P90 range of people you will actually need, measures how far your team has really flexed before, and tells you plainly whether the plan survives a bad week.
Is your plan resilient?
Move the inputs. The verdict uses the same rule our engine applies to every week of a capacity plan.
- Demand range P10–P90
- Your flex envelope
- Committed plan
- Coverage ratio
- Headroom
- Bad-week gap
Illustration only: the band here is a lognormal demand factor around your P50. The product runs Erlang C on every Monte Carlo draw, so the √-staffing effect and Poisson arrival noise are in the real number.
Three verdicts. Each one says what to do.
The verdict is never a colour on its own. It's a word, a shape and a rule you can check by hand.
- Resilient
- Flex ceiling clears P90 by
≥ 1.5%of plan - The whole demand range fits inside what your team can already absorb. Hold the plan.
- Tight
- P90 fits, headroom
< 1.5% - You cover a bad week, but only just. One forecast miss eats the buffer. Watch it and line up contingency.
- Exposed
- P90
>plan × (1 + flex up) - A bad week needs more people than your flex has ever delivered, however good the forecast is. Pre-commit overtime, temps or cross-skilling now.
How the band is built
No black box. Every assumption below is visible in the plan and can be overridden.
-
01
Split the uncertainty
Forecast error is shared across the day (one lognormal factor per day). Arrival noise is independent Poisson per interval. Keeping them apart keeps the daily tail honest.
-
02
Erlang C per draw
Each of ~400 draws is sized to your SLA with Erlang C required servers. Staffing is non-linear in volume, so the band isn't just
P50 ± x%. -
03
Measure your flex
Actual vs scheduled staffing and overtime hours from your own history set the envelope:
plan × (1 − down)toplan × (1 + up). -
04
Backcast and calibrate
We replay past forecasts against actuals and check that the P10–P90 band really catches ~80% of outcomes. If it doesn't, the CV is corrected and stored per queue.
Your MAPE is probably flattering you
The usual conversion from forecast accuracy to error spread is CV = MAPE × √(π/2). It's only as good as the MAPE you feed it, and reported MAPE is often in-sample or aggregated. That's why the band is calibrated against what actually happened, not what the forecast report claims.
Run it on your own queues
Resiliency planning is built into Foretelian capacity plans. Every week gets a band, a flex envelope and a verdict.