Our system includes a great fair jobs distribution algorithm. We call it “intelligent queue”.
When an instant order is submitted the system:
searches for the best ranged drivers at any distance up to 100 km
filters and makes a list of all available drivers with suited radius (defined by drivers)
ranges the drivers on the list by reputation, waiting time and distance to pick-up and forms a queue
sends offers to drivers as per their order in line
The algorithm basically distributes the jobs fairly between drivers.
To simplify, it forms a queue of all drivers whose working radius allowance places them within order pick-up. Then, it calculates the priority index for each driver on the list as a medium of three parameters:
a. driver reputation (a score of the driver’s behaviour based on certain actions (reject/ignore/finish/cancel order)).
b. driver waiting time (how long the driver has stayed without a job)
c. driver distance to pick-up :
1 min driver
1-5 min is more important than 5-8,
8+ is less important than others.
After that it sorts drivers by priority index into a queue
Finally, it offers the order to drivers in the queue depending on their place in it (first, second, third) until the order is accepted.
1. Optimised taxi waiting time for the customer, which enhances positive user experience
2. Fair job distribution between drivers based on valid metrics, which keeps all the drivers engaged
3. No need for drivers to literally “stand in line”. Intelligent queue takes care of tracking their order in line automatically.
4. Drivers are motivated to accept job offers, as Ignoring or Rejecting them resets their waiting time to 0 and moves them down the queue for next offers
Let’s simulate an imaginary scenario with 2 drivers located within 5 minutes arrival from the requested pick-up.
In this example the order is within both drivers’ working radius.The drivers are within 5 minutes from the customer, have approximately the same reputation, but the waiting time is different. First driver completed a job 3 minutes ago, the second driver finished his last order 15 minutes ago.
Based on the medium of three parameters (distance to pick-up + reputation + waiting time), the driver who has been waiting for a job for 15 minutes is first in line to get the order. In case this driver fails to accept it, the order is then sent to the first driver (with 3 minutes waiting time). Until the order is accepted, the previous drivers who has not accepted it can still bid for it

In the first round the system sends an order to the drivers whose physical distance from pick-up is within their working radius.
If no drivers are found, the system extends the search to include those drivers whose physical distance from the pick-up is 2x of their working radius. For example, if a driver's radius is 10 km he will receive orders with a 20 km pick up.
If the pick-up is outside a driver’s working radius he will get notified on the new Offer screen:
