Rate this page:

Predictive dialing system

Predictive dialing system, or PDS, is a call center module intended to optimize load on agents. It analyzes the calls statistics, such as load on the active agents and the average call duration, then calls customers predictively and connects the successful calls to agents, avoiding failed calls. You can use PDS with AI voicemail detection to filter voicemails from actual calls. The system is designed so maximum number of agents are busy and the customers receive the call right before the agent is free.

PDS key features:

  • Filters unsuccessful calls and voicemails, so the agents receive only real calls. To filter voicemails, add AI voicemail detection to your scenario.

  • Uses progression statistics to call customers in advance, then connects the successful call to the agent, keeping all the agents productive

  • Uses SmartQueue statistics to know when to call customers so they do not wait long for an agent

  • You can set up initial statistic values, such as call duration and failed calls percentage, and the system constantly updates it during the call list progress.

  • You can set up the multiplier for progressive mode specifying how many customers the system needs to call so agents are constantly busy and the customers do not wait long.

PDS works in two modes: predictive and progressive.

Predictive mode

The predictive mode calculates the time when to call a new customer, depending on the call list statistics.

You can set up initial average call duration and failed calls percentage statistic values at the call list start, and the system adjusts the values depending on the call list progression. You can set up the allowed failed calls percentage. When the percentage is low, the more records from the contact list are reached, but the agents can wait for a customer longer. If you have under 30 agents, we recommend to set the value of failed calls to 10-15%, and if you have 100-200 agents, we recommend to set the value to 5%.

This mode is useful when you make outgoing calls from a big call list and have a big number of agents (30-100 agents). When you load the call list into the application, the system analyzes the number of active agents, the average call time and the percentage of the customers that answer, to call the necessary numbers of customers so they can reach an agent as soon as possible.

Progressive mode

The progressive mode calculates how many calls per agent the system need to call so agents are constantly busy and the customers do not wait long.

Before the call list start, you need to set up the multiplier that specifies how many calls per one agent the system should launch. You can manually correct the multiplier to control the call list efficiency.

This mode is useful for a call lists with decent percentage of answering customers, when you have little number of agents.

How to set up PDS

Copy URL
  1. Set up agents and queues as it is described in the voice contact center article.

For PDS module, the scenario differs from the common contact center scenario. Use the following one:

PDS scenario

PDS scenario

  1. Set up an agent's workspace.

You can set up your own workspace manually as it is described in the voice contact center article or use our ready-to-use voice & video app as a client workspace.

  1. Compile and run the PDS client. You can find the client and the instructions on how to build and run it on our Github. The sample client uses Go programming language.

Passing the phone number list to the PDS client

You can pass the phone numbers list to the PDS client in any desired format. Provide the instructions on how to parse your phone number list source in this function:

taskChan := agent.GetTaskChannel()
go func() {
    defer close(taskChan)
    for {
        // provide instructions for parsing the source
        // send the call list data to the client
        tmpTask := map[string]interface{}{
            "phone_number": "1234567",
        }
        taskChan <- tmpTask
    }
}()

Choosing between predictive and progressive modes

The default PDS mode is predictive. You can specify the initial statistic values in the pdsConfig object. Specify the average call duration in the AvgTimeTalkSec prameter in seconds and the successful calls percentage in the PercentSuccessful parameter as a decimal value from 0 to 1.

pdsConfig := client.PDSConf{
    RuleID:            1, // specify your rule id here
    QueueID:           1, // specify the queue id here
    ReferenceIP:       "69.167.178.4",
    AvgTimeTalkSec:    80.0,
    PercentSuccessful: 0.4,
    MaximumErrorRate:  0.05,
    SessionID:         uuid.NewV4().String(),
    ApplicationID:     1, // specify your application id here
}

A successful call is a call when the customer answers and there is no voicemail prompt after the answer. The system adjusts the values depending on the call list progression automatically.

To enable the progressive mode, specify the multiplier in the pdsConfig.TaskMultiplier parameter. You can adjust the multiplier to control the call list efficiency.

pdsConfig.TaskMultiplier = 1
PDS mode selection

The system selects the mode depending on the presense of the TaskMultiplier parameter. If you specify both the TaskMultiplier and the AvgTimeTalkSec/PercentSuccessful, the system works in the progressive mode, disregarding the average call duration and the successful calls percentage parameters.

If you experience troubles setting up the PDS client, feel free to contact our support. You can find more hints in the PDS client repository.

Frequently asked questions

Copy URL

Q: In predictive mode, PDS recalculates parameters, such as average call duration and failed calls percentage. Can I get these parameters?
A: No, you cannot get the in progress parameters, because they are constantly changing.

Q: How PDS switches between agents? When it decides to call a new agent?
A: PDS does not call a specific agent. The goal of this system is making call just in time when an operator gets free, so the customer and the agent do not wait.

Q: Can I restrict operator from getting calls?
A: No, when an operator gets free, it receives a call. To avoid getting calls, set the status that is not getting calls.

Q: Can I set the dialing timeout for the task?
A: Yes. Use the timeout parameter to limit the timeout for answering the call.