Capacity Planning: How to Learn to Stop Worrying and Love the Process
Seldon Solutions
2025
Adrien Seldon
About Me
2
Agenda
3
QR Code for Files
seldonsolutions.com
4
Why is this important?
Capacity Planning is typically a longer-term resource demand plan prepared at weekly and/or monthly intervals.
It incorporates inputs such as volume forecasts, handle time forecasts, and other relevant variables, comparing them against your projected supply (headcount).
The output is a plan illustrating the required resource levels and highlighting any expected surpluses or shortages.
5
What is a Capacity Plan made up of?
Capacity planning is essentially a comparison between supply and demand.
It usually covers a longer time horizon, often at a monthly level, and sometimes includes weekly detail.
Typical outputs are inputs to hiring plans and cost projections.
6
Capacity Plan
Staffing
Workload
Attrition
Hiring
Volume
Handle Time
Inputs - Demand
7
Section
12
Capacity Plan
Staffing
Workload
Attrition
Hiring
Volume
Handle Time
Volume Forecasting
Customer Base
Expected Growth
8
Year | 2022 | 2022 | 2022 |
Month | 6 | 6 | 7 |
Week | 6/19 | 6/26 | 7/3 |
Week # | 25 | 26 | 27 |
Customer Base | 10,000,000 | 10,010,000 | 10,025,000 |
CPC | 0.23% | 0.22% | 0.22% |
Volume | 23,000 | 22,022 | 22,055 |
AHT Baseline | 800 | 800 | 800 |
Seasonality | 5 | 5 | (1) |
Total AHT | 877 | 846 | 810 |
Workload Hours | 5,602 | 5,563 | 4,959 |
FTE | 156 | 155 | 138 |
Launch 1 Volume | | 10,000 | |
AHT | | 140 | |
Hours | | 389 | |
Tenured Agents | 130 | 130 | 129 |
Attrition | | | 1 |
Class 1 Agents | 15 | 15 | 15 |
AHT | 1,500 | 1,200 | 900 |
Agent Delta | (11) | (10) | 6 |
Costs | $130,500 | $130,500 | $129,600 |
Volume Forecasting
Contacts per customer (CPC)
9
12
Year | 2022 | 2022 | 2022 |
Month | 6 | 6 | 7 |
Week | 6/19 | 6/26 | 7/3 |
Week # | 25 | 26 | 27 |
Customer Base | 10,000,000 | 10,010,000 | 10,025,000 |
CPC | 0.23% | 0.22% | 0.22% |
Volume | 23,000 | 22,022 | 22,055 |
AHT Baseline | 800 | 800 | 800 |
Seasonality | 5 | 5 | (1) |
Total AHT | 877 | 846 | 810 |
Workload Hours | 5,602 | 5,563 | 4,959 |
FTE | 156 | 155 | 138 |
Launch 1 Volume | | 10,000 | |
AHT | | 140 | |
Hours | | 389 | |
Tenured Agents | 130 | 130 | 129 |
Attrition | | | 1 |
Class 1 Agents | 15 | 15 | 15 |
AHT | 1,500 | 1,200 | 900 |
Agent Delta | (11) | (10) | 6 |
Costs | $130,500 | $130,500 | $129,600 |
Average Handle Time (AHT) Forecasting
Baseline/goal
Add-on layers
10
12
Year | 2022 | 2022 | 2022 |
Month | 6 | 6 | 7 |
Week | 6/19 | 6/26 | 7/3 |
Week # | 25 | 26 | 27 |
Customer Base | 10,000,000 | 10,010,000 | 10,025,000 |
CPC | 0.23% | 0.22% | 0.22% |
Volume | 23,000 | 22,022 | 22,055 |
AHT Baseline | 800 | 800 | 800 |
Seasonality | 5 | 5 | (1) |
Total AHT | 877 | 846 | 810 |
Workload Hours | 5,602 | 5,563 | 4,959 |
FTE | 156 | 155 | 138 |
Launch 1 Volume | | 10,000 | |
AHT | | 140 | |
Hours | | 389 | |
Tenured Agents | 130 | 130 | 129 |
Attrition | | | 1 |
Class 1 Agents | 15 | 15 | 15 |
AHT | 1,500 | 1,200 | 900 |
Agent Delta | (11) | (10) | 6 |
Costs | $130,500 | $130,500 | $129,600 |
Initiatives, sales, & launches
Initiatives/sales/launches
Stay in close contact with the teams managing launches to ensure they have up-to-date actuals available.
Note: For permanent changes (e.g., reducing call time by 25 seconds), coordinate with the project team to decide when these adjustments should be incorporated into baseline assumptions, rather than treated as separate project impacts.
11
12
Year | 2022 | 2022 | 2022 |
Month | 6 | 6 | 7 |
Week | 6/19 | 6/26 | 7/3 |
Week # | 25 | 26 | 27 |
Customer Base | 10,000,000 | 10,010,000 | 10,025,000 |
CPC | 0.23% | 0.22% | 0.22% |
Volume | 23,000 | 22,022 | 22,055 |
AHT Baseline | 800 | 800 | 800 |
Seasonality | 5 | 5 | (1) |
Total AHT | 877 | 846 | 810 |
Workload Hours | 5,602 | 5,563 | 4,959 |
FTE | 156 | 155 | 138 |
Launch 1 Volume | | 10,000 | |
AHT | | 140 | |
Hours | | 389 | |
Tenured Agents | 130 | 130 | 129 |
Attrition | | | 1 |
Class 1 Agents | 15 | 15 | 15 |
AHT | 1,500 | 1,200 | 900 |
Agent Delta | (11) | (10) | 6 |
Costs | $130,500 | $130,500 | $129,600 |
Putting it all together with Workload
Hours
To determine the total workload, you can start with a simple volume x AHT calculation. But to account for arrival patterns and SLA targets, you need Erlang C. Let’s look at how that works. Alternatively, multiply contact volume by handle time. If handle time is measured in seconds, divide the result by 3,600 to convert it to hours.
Full Time Equivalent (FTE)
Workload hours need to be translated into FTEs rather than raw headcount. This conversion accounts for shrinkage and gives a more accurate view of staffing needs. Simply divide the total hours by the number of productive hours an agent works per week.
12
12
Year | 2022 | 2022 | 2022 |
Month | 6 | 6 | 7 |
Week | 6/19 | 6/26 | 7/3 |
Week # | 25 | 26 | 27 |
Customer Base | 10,000,000 | 10,010,000 | 10,025,000 |
CPC | 0.23% | 0.22% | 0.22% |
Volume | 23,000 | 22,022 | 22,055 |
AHT Baseline | 800 | 800 | 800 |
Seasonality | 5 | 5 | (1) |
Total AHT | 877 | 846 | 810 |
Workload Hours | 5,602 | 5,563 | 4,959 |
FTE | 156 | 155 | 138 |
Launch 1 Volume | | 10,000 | |
AHT | | 140 | |
Hours | | 389 | |
Tenured Agents | 130 | 130 | 129 |
Attrition | | | 1 |
Class 1 Agents | 15 | 15 | 15 |
AHT | 1,500 | 1,200 | 900 |
Agent Delta | (11) | (10) | 6 |
Costs | $130,500 | $130,500 | $129,600 |
Why Volume x AHT Isn’t Enough
The simple calculation
Volume x AHT / 3,600 = Workload Hours
Workload Hours / Productive Hours = FTE
The problem
This assumes contacts arrive in a perfectly smooth stream. They don’t. Contacts arrive randomly, creating peaks and valleys within every interval.
A simple workload calculation can understaff by 15-25% during peak intervals because it ignores queuing effects.
13
What Erlang C adds
Erlang C tells you the number of agents needed to meet your SLA, not just cover the workload.
Erlang C in the Spreadsheet
14
Inputs
Output
In the spreadsheet
The Erlang C formula can be implemented as a custom function or a lookup table.
Look at the FTE row in the model. That number already includes the Erlang buffer — it’s not just workload hours divided by productive hours.
This is the row that separates a staffing guess from a staffing plan.
Most WFM platforms (NICE, Verint, Assembled, Genesys) use a version of Erlang under the hood for interval staffing. You can also build it in Excel.
Erlang C: Intraday Tool, Capacity Planning Input
15
Option 1: Roll up from intervals
Run Erlang C at the interval level (30-min or 15-min), then aggregate up to weekly/monthly staffing needs.
Most precise. Use when you have interval-level volume data available.
Option 2: Apply a buffer factor
Use your historical Erlang-based staffing data to derive a shrinkage/concurrency buffer, then apply that factor to monthly workload.
Practical for long-range planning where interval detail isn’t available.
In the model we built
For this capacity plan, we used a roll up approach derived from actual Erlang-based interval calculations.
Either approach works. The important thing is that your capacity plan accounts for Erlang effects — not just raw workload math.
Inputs - Supply
16
12
Capacity Plan
Staffing
Workload
Attrition
Hiring
Volume
Handle Time
Attrition
Annualized
To calculate the annualized attrition rate, take the number of employees who left in the past 12 months and divide by the average headcount during that period. Then divide that result by 12 (for monthly) or 52 (for weekly) to get your interval-based rate.
17
12
Year | 2022 | 2022 | 2022 |
Month | 6 | 6 | 7 |
Week | 6/19 | 6/26 | 7/3 |
Week # | 25 | 26 | 27 |
Customer Base | 10,000,000 | 10,010,000 | 10,025,000 |
CPC | 0.23% | 0.22% | 0.22% |
Volume | 23,000 | 22,022 | 22,055 |
AHT Baseline | 800 | 800 | 800 |
Seasonality | 5 | 5 | (1) |
Total AHT | 877 | 846 | 810 |
Workload Hours | 5,602 | 5,563 | 4,959 |
FTE | 156 | 155 | 138 |
Launch 1 Volume | | 10,000 | |
AHT | | 140 | |
Hours | | 389 | |
Tenured Agents | 130 | 130 | 129 |
Attrition | | | 1 |
Class 1 Agents | 15 | 15 | 15 |
AHT | 1,500 | 1,200 | 900 |
Agent Delta | (11) | (10) | 6 |
Costs | $130,500 | $130,500 | $129,600 |
Hiring
Time to source
Time to train
Time to full productivity
Note: Track each new hire cohort separately, as they’ll be at different tenure stages. For the most accurate view, use a weighted average of their handle times combined with those of your tenured agents.
18
12
Costs
Cost for next year (X timeframe)
Estimate costs by applying the cost per FTE from earlier calculations.
Keep in mind that you're compensating for total hours worked—including shrinkage—typically around 40 hours per week.
If you haven’t converted to FTE, or want an alternate view, you can also multiply the average hourly rate by the total workload hours.
Snapshots and monthly iterations
Regularly save snapshots of your capacity plans. This helps you track changes in hiring and costs over time and pinpoint what specifically drove those shifts between versions.
Use actuals
Track actual values for all inputs in your capacity plans, along with the costs incurred. This helps you respond more quickly to budget changes and assess the accuracy of your original assumptions.
19
12
Questions
?
20