## Introduction

I’ve seen freshers struggling to solve case studies during interview. Do you also find it difficult ? Yes?

That’s okay. But, since you now have an abundance of resources to enhance your skills, you have no reason to not become a master in it. I myself had struggled a lot during initial days, but with practice I was able to overcome this difficulty. You also CAN!

There is no one shot winning formula in case studies. Let me tell you what helped me to solve case studies during interviews:

- I asked questions. Many questions in fact. Once the case study was given, numerous questions popped up in my mind pertaining to the situation given. Trust me, asking questions help a lot. I realized by asking questions, I was able to solve 40% of the case study.
- I put a structure around the given problem. Yes, structured thinking helps a lot. Also, structuring the problem helped me to solve case studies faster.
- I practiced case studies from different domains like retail, healthcare, technology, sports etc. This made me familiar with their processes and key jargons used. So, during interview I didn’t have to tremble thinking about the type of case study I’ll get.
- I think I’m good with numbers (no bragging!). This helped me to perform mental calculations and do Step 1, if necessary.

Look, my process of solving is simple. If you manage to follow even this much, you would be just fine. You just need practice. And, practice with different types of case studies.

**And if you’re looking for more case studies like this, check out the comprehensive ‘Ace Data Science Interviews‘ course! We have curated it with tons of videos, hundreds of questions and plenty of resources, just for you.**

This article is about a case study on Call Center Optimization. I’m sure this is a new case study type for you. Hence, do it thoroughly and focus on the underlying aspects of how call center works!

## Case Study : Call Center Optimization

What is the biggest turn-off when you call the customer service center for seeking support on any issue?

For me, it is the waiting time. The line : “Your call is important to us” really does not do any consolation to the customer who is waiting on line.

Let’s say, I am looking at comparable Internet Service provider : A, B and C. What will be my main considerations to choose one of them? First, will be the internet speed and second will be the customer support. Customer support is supremely important for any company whether it is a Telecom company, Internet Service Provider, Bank, Insurance company or an E-Commerce Firm. It is the assurance from the company that anything going bad will be resolved as soon as possible.

So, we all understand that Customer Service Center is probably the second most important consideration just after the actual product. Also, customer service is one of the biggest contributors to the cost component for any firm. So, within the same budget can we make the customer service better by using analytics. Let’s try looking at it with a case study. Note that all the numbers are simulated and are used to bring out a concept and does not come from a real case.

## Type of channels used in customer service

All companies provide multiple channels through which customers can reach out / connect with them. Here are a few of these channels :

**Call Center:**This is the most expensive channel which customers use to reach out to companies. Every company wants to minimize this channel’s cost to reduce operational expense, but it’s a necessary evil. Every customer wants a human respondent to truly assure that everything will be resolved. This preference might change over time, but as of now we have to accept the truth that machines are not as good as humans to understand customer’s problem and provide customized assurance.

**IVR:**This is a cheaper channel and is used by almost every company. In general, you get to IVR and if customer’s query is not resolved on IVR, he/she finally reaches the call center.

**Social Media:**This might seem like the cheapest channel to receive complaints from a customer, however is the most deadly channel today. The reason being, everyone who comes on the social media page can see these complaints. You are no longer on a 1-to-1 conversation with the customer.**E-Mail:**This is probably the easiest to handle and cheapest to resolve medium for any company. However, this is one of the least preferred channels for the customer to reach out to the company.

Other channels might include brick and mortar branches / outlets, 1-on-1 customer relationship managers etc. The most important of all is the “call center (calling process)” which every company needs to maintain but at minimum cost possible.

So, how can we optimize the expense for a call center. To optimize this problem, you first need to understand that here we are dealing with two entities : Customers and the caller. And to optimize combination of customer-caller pair, you need to understand how are customer different from each other and how are callers different from each other.

## Customers : What might influence the time a customer takes on Call?

Because customers might not call the *call centers* frequently, more important attributes will be his /her *demographic* and *relationship* with the company. Let’s consider a bank. So, for a bank, these attributes can be :

- Relationship balance of the customer : How valuable is the customer for the bank
- Type of product which a customer holds : Is the product more prone to disputes or are plain vanilla deposit products?
- Region of customer : Customers from rural areas might take longer time to understand the solution provided by the caller.
- Tenure of customer: A new customer might have more number of questions than a tenured customer

Beyond these, there can be past call data which might be useful :

- Last Call duration
- Time difference from the last call
- Reason of last call
- Whether the reason was resolved after the last call or the ticket is still open

**Callers** : What might take a caller higher time than others?

Even though the time taken by callers might not be very different from each other, some level of segmentation can definitely be found. Here are a few variables which can influence the amount of time caller takes :

- Vintage of the caller : A new caller might take longer time to resolve the same query
- Training done by the caller : Caller training might help them to understand and resolve the customer queries faster than the others.
- Location of call center : Onshore vs. Off-shore call center might have different resolution time because the callers can easily understand the accent of the customers from the same country and might understand customer issues better.
- Utilization rate of the caller : A caller who is highly utilized might have a lower efficiency compared to others.

## How do start modeling ?

What is the objective function when we are trying to optimize the call center efficiency? Here are a bunch of objective function I can think of:

- Call duration : This directly hits the total cost.
- Customer satisfaction : It might not directly hit the cost or revenue but definitely hits the bottom line in a longer term.

So, how do we solve for two objective function? In general, to make it simpler, we take one of the objective function as a constraint and other as the main objective function. We will try to create a formulation which can be solved using an assignment problem. For simplicity we will not take customer satisfaction in this analysis.

## Sample Problem Statement

You have 7 types of callers and 7 types of customers. Assume that all seven customers call at the same time, how do you assign callers to each of these customers so that the total time of the call center is least.

All numbers shown here represent *time in minutes*. Imagine this problem getting to an extent where 1000s of callers respond and 100000s of customers call. So, we probably need a more scientific way to do this problem.

Let’s first see, what is the time if 1st caller gets assigned to 1st customer and 2nd to 2nd and so on. The total time becomes 23 + 84 + 91 + 82 + 67 + 63 + 6 = 416 which is 59.4 minutes/customer. Now, let’s try to optimize this problem using something called assignment problem solution using Hungarian method. The steps are :

- Reduce every row with the minimum of the same row.
- Reduce every column with the minimum of the same column
- Find a row which has only one zero and make the assignment. Also cancel all the zeros in the same column. In case two rows comes out to have zero in than same column, leave it to be assigned at the end.
- Now select the same cells in the main grid and do the total time calculation.

Doing the calculation, the total time now comes out as 165 which is just 23 minutes/ customer. This is a far better assignment than the random allotment.

## End Notes

A real life call center optimization is far more complex than this scenario. For a real case we will need to consider packing algorithms which can incorporate the fact that different calls come at different time and what is the best packaging. Other level of complexity can be brought in by considering customer satisfaction rate. We will try taking up these pieces in coming articles.

Did you like reading this article ? Can you think of other checks to make this case study mimicking the actual call center in a better way? Do share your experience / suggestions in the comments section below.

Good work. This seems to be inspired by Hungarian algorithm!!

Good day,

Thank you for this, i have few questions? What do the results show/ mean and does does this get implemented to optimize efficiency?

Im learning to understand analytics and how to implement this in my line of work.

Please can you send me more reads/ learning material.

Thank you,

Kersan Pillay

South Africa

Hi Kersan,

This is an over simplistic case to understand how assignment can be done if all calls came together. Real life case will be much difficult and need much more statistical knowledge. We will take it up in coming articles.

Tavish

Hi Tavish, I am not able to understand how you have derived “23 + 84 + 91 + 82 + 67 + 63 + 6” and 165 by Hungarian method. Can you please explain.

Hi Raghvan,

For the initial calculation I am just adding the elements on the diagnol. And for the optimized calculation, I add elements that are highlighted in yellow. Hope this helps. Thanks,

Tavish

Now do can you write an article with a program algorithm solution in R, Python, etc. that can do this?

Is their a Machine Language approach to solving this? Post some possble solution approaches.

I learnt something really cool today (The hungarian method). Thanks Tavish.

BTW, do we have better algorithm than Hungarian to solve such assignments problems?

Thanks for the excellent article Tavish, one of the challenges call centers face is the optimum scheduling of agents: basically how many agents need to be staffed to take the calls. The challenge intensifies when you have your agents going on vaction/sick days or having lot of turnovers.

This is a very interesting domain, one of the metrics i have seen used is the average speed of answer for a call.

Thank you

Ramdas

Sir,

I could not understand the Hungarian algorithm very well from this case study.Can you please help?

Well, I know this is not the right place for this post, but there should be a well developed app for analyticsvidya apps

Hi Tavish,

Good case study.

hi tavish

good work

but

i have also done this in my excel sheet and assigning the work of caller 2 at last i have(assigned work of caller 7 at first) came to conclusion that

22+60+14+3+26+1+6=132 and 132/7=18.85 mins /customer

Hi, Avinash,

I also have the same number. I couldn’t understand why in the example it was picked the pair Caller 2, Customer 1 instead of the pair Caller 2, Customer 5.

Hi, recently i understand this….

– First We choose the Rows with only 1 Zero: Caller 2,3,5,6,7…

– In Caller 1 we have 2 Zeros, but the Costumer 6 has been choosed yet, so we select Customer 3.

– In Costumer 7 we have two Zeros (Caller 2 and Caller 7), so we need to choose one of them… The Costumer 1, had no cells selected yet… We have to choose between Cost. 1, Call3 and Cost1, Call7 and because we want to reduce the minutes, we choose 73 ( 73<81)

good work

Hi Tavish, could you please suggest some resources related to operation research and case studies like these. Also , a lucid approach to implement this on R, python etc.

Thank you.

it would be great Tavish , if you share above resources

Guess the crux is to get to the time values..how using customer and call center attributes and historical data you can predict that if X customer is assigned to Y call center guy the time to resolve would be A minutes with a certain degree of confidence…once we have those values, we can optimize using advanced algorithms such as the one you have mentioned here..

Even I have same question. How do you get to the table with estimated numbers is a challenging task. Or is it we have misread the table?

“Utilization rate of the caller : A caller who is highly utilized might have a lower efficiency compared to others.”

can’t understand, plz explain this with a small example

Hi Tsvish,

Step 3 says : Find a row which has only one zero and make the assignment. Also cancel all the zeros in the same column. In case two rows comes out to have zero in than same column, leave it to be assigned at the end.

My first question is what does make the assignment meant here? Does it mean replacing 0 with some value?

In this case we should pick up row 2, which you have highlighted as grey amd then do not take cell(7,7) as it is mentione that we have to cancel seconf 0 cell. It’s bit confusing to me how did you pick up those yellow higlighted cells in step 3.

Could you please expalin that,

Tavish

Excellent explanation and approach. I would however point that, when I implemented the Hungarian algorithm in R using the package “clue”, I could find that the optimal allocation is not what you have mentioned. I understand that your approach was to make people understand the stance one should take. So we definitely can ignore that part. The R model however pointed to the below assignment and I see that its minimum

1 => 5, 2 => 3, 3 => 4, 4 => 1, 5 => 6, 6 => 2, 7 => 7

The total time came as 103 minutes with an average of 14.71.

I used the solve_LSAP method for determining the same.

Hi Tapan,

Thanks for the brief and nice explanation but when I am trying this problem manually, I am getting the point that

1 =>3C,2=>7C,3=>4C,4=>1C,5=>6C,6=>2C,7=>5C

and hence total comes up as 22+11+14+26+30+4 = 107/7 = 15.28.

Why should we go for 3rd customer for 2nd caller if in second row, we only have 1 zero and that too is for customer 7(bcz as per the rule, we need to choose zeros from those rows where there is only one zero)? For 7th caller, I chose 5th customer bcz the cost factor was least for 5th customer (15th it was). And for 1st caller, why did not we choose 3rd customer?

I hope I am able to put forward my queries for these 3 callers.

Hey Tavish, great starting article. I read all your write ups. I saw that you have used Hungarian. I used R to model it and the result I got is better than adding the diagonal values. But I understand that your objective was to explain how to approach the solution. R program gave the below assignment. I used “Clue” package and solve_LSAP method to get this

1 => 5, 2 => 3, 3 => 4, 4 => 1, 5 => 6, 6 => 2, 7 => 7

Cheers .. keep writing.

Hi Tavish, It’s really a nice article. However the answer is still not optimal because you have omitted another step after step 2. Step 3 ->Find the minimum number of horizontal and vertical lines to cover all zero’s. If this is less than order of matrix (in this case it is 3) then note down minimum of costs which are uncovered while drawing the lines. Subtract that cost from uncovered items and add it to those items which are the intersection of horizontal and vertical line. This steps iterates until we reach a point where minimum number of horizontal and vertical lines to cover all zero’s is greater than or equal to order of matrix.

sorry the order of the matrix is 7.

Tavish….Good Case Study…!!!

Can’t exactly get what happened from step 4??

I mean step 3.. Confused with the line which says – select the row which has one zero n do the assignment ?? If the column had more than one zero..leave it to be assigned at the end..

Can I get some more detailed explanation of how to do this ?

P.s. thanks for the great article 🙂

Hi,

Generally, calls allocation to call agent is done by using Queue Theory. Can you please explain its mechanism.

Thankyou!

Thanks Tavish.

This article has motivated me to stepping in to Operational Analytics.

Hi Tavish,

Thanks for the article.I understood the factors you chose for both callers and customers.But how did you convert them into a mathematical matrix.For e.g how can we mathematically prove that if caller 2 calls customer 3 , then the call would last for 24min. Is this based on some market research?