Finding the right driver! #346
Prithivirajkota1
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
In this post, we are going to explain how a Namma yatri user is matched with an appropriate driver. This step occurs right after a user shows intent in booking a ride after receiving the estimate.
Once a user clicks on “Request ride” on the application, there is an algorithm which decides the list of drivers to whom the ride request is sent. The algorithm is based on both, the proximity of drivers around the search location, and the drivers’ behavior on the platform.
Proximity rules:
The search radius (the area to look for drivers) is based on the ‘trip distance’ which the user is planning to travel.
Search radius starts from a minimum radius of 250m.
If sufficient drivers are not found in the minimum radius, the search radius is incremented in steps of 250-500m.
Eg. A user might want to travel 4km. So, the platform looks for available drivers with a starting radius of 250m and a maximum radius of 750m. Similarly, for a long distance ride, say 15km, the platform looks for available drivers with a starting radius of 400m and a maximum radius of 1.5km in increments of 500m.
Driver behavior based rules:
The platform currently considers two factors based on the driver behavior, namely,
Acceptance rate is defined as the ratio of the number of times a driver accepts a ride request to the number of times a ride request is sent to the driver. This is a positive ratio.
Cancellation rate is defined as the ratio of the number of times a driver canceled the bookings to the number of bookings assigned to the driver. This is a negative ratio.
Each ratio is given a certain weightage and the ratios are considered based on a rolling period of 7 days. The drivers always have the opportunity to improve their app behavior leading to higher ride requests or opportunities.
Note: Driver behavior is only considered once a driver receives a sufficient number of requests over a certain period of time.
Eg. A driver has accepted 20 out of 100 requests, resulting in an acceptance rate of 20%. Assuming the driver received all 20 bookings (the customers agreed to the driver’s quote), say, the driver canceled 2 bookings, resulting in a cancellation rate of 10%. Considering the weightage of 50%-50%, the driver’s effective score is 5% (0.520%-0.510%)
The final step is to bring all these factors together and explain how the ride requests are broadcasted to the drivers.
The pool is constituted with equal proportion of qualified drivers (who have received x ride requests in y days) and new drivers on the platform. This is to ensure equity (enough opportunities) for each driver before the platform starts assessing their application behavior.
There is always a possibility that all the drivers to whom the ride request is sent are busy taking other non-platform rides. In order to solve this problem, we introduced the concept of batching.
Batching is a process of broadcasting the ride request to a set of drivers starting from minimum search radius until there is an acceptance from a driver or a set of drivers.
Batching rules:
All the variables/numbers mentioned in the article are configurable by the platform based on the funnel conversion rates.
This process of driver allocation has proven effective with an increase in driver ride request acceptance from 30% to ~65%.
Factors to be added as part of the product roadmap:
The entire process of finding the right driver is iterative and open for community contribution. Do let us know if you have any comments/suggestions on the same.
Beta Was this translation helpful? Give feedback.
All reactions