I am working on a project to predict the proper staffing needed for a customer service team using historical data.

I am new to machine learning, and I am not sure if my approach to this problem is the right one. First I saw it as a multiple linear regression, but the more I think of the outcome I want, the more I realize regression is not the solution.

I have a sample historical data with these fields:

  • Number of incoming calls per hour/day;
  • Total Talking Time per hour/day;
  • Abandoned Calls per hour/day -- but I can change that to abandonment rate;
  • Average speed of answer per hour/day;

My goal is to build a Python or R model that would allow me to predict:

  • the amount of calls customer service may get in the next weeks/months; and
  • the ideal personnel to handle the workload.

For example, I would like to be able to see something like this:

Day || Expected Calls || Staff number

10/01/2021 || 200 || 10

There are some call-center related software tools that would determine that. But, I wonder if there is a machine learning model that would lead me to what I want to get. What approach should I take, if there is any?

I usually search for models already built, and try to understand and see how it may apply for my case. So far, I have not been able to see a model that would result in multiple forecast outputs. As I said, I am new to machine learning. So, any ideas on what kind of model I should use for the results I want to get?


As I said in the question, I am unsure if my approach to the problem is right. And I think what I was looking for is the ErlangC formula. I only found out about it recently -- and it seems like python has a library pyworkforce that contains the ErlangC function.

After some feedback and brief research, the best way to solve this problem is to break the project in two phases: (1) forecast & (2) the staffing estimation.

This is not finalized, but here is what I may end up doing for this project.

(1) First, I will forecast future number of calls based on historical data that I have got.

(2) Second, when I get the forecast, hopefully, I will be able to apply the results into an ErlangC formula and determine the proper customer service personnel number.

I think using ErlangC, I may be able to factor in the goal of talking (or handling) time desired, ring time, and possibly the working hours per customer service agent. All these factors will help me know the number of agents needed for the number of calls load that was forecasted in the first place.

I will keep reading and updating this question if needed.

  • $\begingroup$ Few questions: For the sample with the historical data, do you also have a column for the Staff? Like who is handling the call? Is the call assignment totally random? How are you planning to identify the 'ideal person'? $\endgroup$ Sep 23, 2021 at 7:26
  • $\begingroup$ @Shibaprasadb, unfortunately I do not. And I know this may be a problem. I have looked at the entire dataset multiple times, and there is no way to get the number of people that handled the calls in my historical data. The output I am thinking is more like "how many calls are we getting in the future" & "how many people will be able to handle the load." $\endgroup$
    – Tony
    Sep 23, 2021 at 13:28
  • 1
    $\begingroup$ I think you need to be more specific about the problem statement. For example: "How many people will be able to handle the load?" will have a different approach than say "Which staff should handle how many calls?". Now, for the first part have a look at ARIMA or SARIMA or any standard forecasting method. I feel I am not getting enough signals from the features you've mentioned to forecast this. A small sample dataset might help here. Now, the 2nd part you may treat as an optimization problem if you know the capacity and other constraints of each staff member. $\endgroup$ Sep 23, 2021 at 18:05
  • $\begingroup$ @Shibaprasadb, you are right. I need to be more specific for sure. The thing is, I am not even sure if my approach to the problem is the right one. I did some research and it seems like ErlangC equation may be the solution to determine the number of customer service employees. I am yet to make the final plan, but it seems like I will need to do this project in two different steps: (1) forecast the number of calls for the future days/months/hours, etc., and (2) hopefully use the forecast results to use in the ErlangC. I found out recently that python has the pyworkforce library with ErlangC. $\endgroup$
    – Tony
    Sep 24, 2021 at 17:28
  • 2
    $\begingroup$ Great. One thing I would suggest is to add your research work and everything in the answer which you can update over the time. Let the Question body only have the problem statement. $\endgroup$ Sep 25, 2021 at 5:16


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.