Optimal staffing levels depend on service demand, which is volatile. The problem is complicated by the cost of not meeting service, which can vary by call type. In this article, we'll look at and play with a live monte-carlo simulation of staffing levels in a payment collections department.

The Dashboard

In the dashboard below, try entering a different mix of customers, and different collection policies, and click on the "Animate" or "Run" buttons to see the resulting work loads, or "Optimize" to tell the dashboard to come up with the staffing level that optimizes profit. These settings are explained below the dashboard.

The Situation

This dashboard models the following scenario:

Settings you can change

Customer segments:


Staffing levels and productivity:

Customers and other simulation parameters:

Running the Simulation and Viewing Results

Click on the blue "Run" button to run the simulation. The "Animate" button does the same, but updates the graphs during the simulation, which looks cool but takes a bit longer to run.

Click on the line graph to switch between three different views:

  1. Number of bills: sent out per day, paid, reminded by post, chased after by calls, and "shortage" (not acted upon because of insufficient staff on that day)
  2. Cash flow,: amount collected each month, collection costs (staff), and profit (difference between the two)
  3. Staff utilization: the fraction of time that staff are busy; note they are idle until day 45, when the first collection interventions are triggered

The other graphs show gauges of daily utilization, and average bill age, and a bar graph of bills paid, reminders sent, and calls made each day of the simulation. The gauges and bar graph are really only meaningful during the animation, as they show daily values. Note again the idle staff until the calls kick in.


If you click the blue "Optimize" button, the dashboard will try to find the staffing level that results in the highest NPV, given the settings you have chosen for all the other parameters.

This may result in a different number of staff each time you optimize, because of the randomness inherent in each simulation.

The optimizer seems to come up with errant values for extreme values for some settings (to be explored).

Lessons Learned

In exploring this simulation, a few insights become apparent:

Applications for this

This simulation approach could be used in many situations where demand is uncertain or variable, or where the impact of company actions is variable or uncertain.

Some other example applications might include:

Technology Used

This dashboard was written in JavaScript, and uses the D3 library for the graphics.

Add a comment