Case study 04 / Workforce analytics
Workforce capacity & service-level planning
Service level is an average until it fails in a specific hour. I built an hour-by-day view of where SL broke, then used Erlang C to find which of eight call-centre accounts needed more heads — and worked with schedulers and real-time analysts to make it hold.
Employer and client accounts anonymised. The chart is illustrative, not real data.
01 / The question
Where does service level actually break — and do we have enough heads?
A monthly service-level number hides the problem. The average can look acceptable while specific hours fail every week, and the accounts carrying the most volume are not always the ones with the most visible pain. The business needed two answers: which hour, on which day, is failing — and which account needs more headcount to fix it.
The target was 80% service level across eight call-centre accounts. The job was to make that target operational rather than aspirational.
02 / The hour-of-day report
One view: service level, call volume, hour and day.
I designed a report that put the four things decision-makers needed on one screen: which hour in the day service level failed, how many calls came in, and on what day. The pattern was consistent — Mondays carried the highest call volume, and failures clustered in specific hours rather than spreading evenly across the day.
That changed the conversation. Instead of "service level is down", the schedulers and real-time analysts could see exactly where to defend the day — and where extra heads would actually change the outcome.
03 / Erlang C headcount planning
From "we need more people" to "this many, in this interval".
The visual showed where the pressure was; Erlang C sized it. Using forecast call volume, average handling time and the 80% service-level target, I modelled the agents required per interval in Excel, with Power Query handling the volume data preparation. Comparing required agents against scheduled heads exposed the accounts that genuinely needed a headcount increase — not just a busier week.
The recommendation only worked because it was made with the people who run the floor. I worked with the schedulers and real-time analysts to turn the capacity numbers into shifts, intraday adjustments and escalation plans, then tracked whether service level held across all eight accounts.
04 / What changed
Staffing decisions moved from intuition to capacity math.
- Service-level failures became visible by hour and day, not buried in an average.
- Monday peaks and intraday pressure points were anticipated instead of discovered.
- Accounts needing a headcount increase were identified with Erlang C and a stated SL target.
- Schedulers and real-time analysts worked from the same capacity numbers, keeping 80% SL across the accounts.
05 / Limitations
What this model is — and isn't.
Erlang C assumes random arrivals, exponential handling times, no abandonment and independent intervals — real queues break some of those assumptions. Forecast error and intraday variance still matter, and the model needs recalibration as volumes and handling times change. The chart above is illustrative; no client figures, account names or real service-level data are published here.