The story of how we smartly select search results to enhance user experience at BlaBlaCar
BlaBlaCar provides a platform facilitating carpooling in 22 countries worldwide. It allows drivers to publish their trips and fill the empty seats of their cars, sharing the price of the trip while reducing the emissions of CO2.
Our AI plays a game of hide-and-seek with our passengers and drivers. It hides rides that drivers prefer not to point out, while looking for the most effective ones for passengers. Smartly playing that hide-and-seek game, it increases the variety of matches between passengers and drivers.
At BlaBlaCar, our users can play two roles:
- The drivers publish their trips and aim to share the road with potential passengers.
- The passengers seek for rides and are offered trips matching their search criteria.
When passengers are taken with a visit, they send a request. On average, 70% of the drivers manually review the passengers’ booking requests they usually resolve whether to refuse it or (hopefully) accept it.
One in all our goals is to enhance the standard of the matching suggested to the passengers. We want passengers to seek out essentially the most relevant rides and drivers to simply accept the requests they receive. Higher matching alleviates frustrations, as drivers get annoyed when receiving requests they don’t find worthy and passengers don’t appreciate the rejection.
Damaging the user experience and undermining their retention is dangerous for our business. BlaBlaCar generates a fancy marketplace that thrives when each drivers and passengers are successful and repeatedly return to the platform.
Drivers coming to our platform publish trips which are as convenient as possible for them, often choosing only their origin and arrival location. To extend their probability of finding passengers, we developed what we call “Boost rides”: we create potential rides that might match the passengers’ requirements at the price of adding short detours to what the driving force published.
As a concrete example, a driver going from Paris to Lyon could receive a “Boost request” from a passenger also going to Lyon but needing to be picked up in Auxerre.
Boost rides allow us to seek out more potential matches for each drivers and passengers, thus increasing their possibilities of successfully carpooling.
Boost rides play a fundamental role in our marketplace:
- In France they amount to roughly 45% of the outcomes displayed they usually generate
- It enables passengers on the lookout for rides that should not explicitly popular, but that intersect more popular ones.
- publishing rides that should not popular but that intersect more popular ones to seek out passengers.
This feature enables passengers to seek out rides from any countryside town to Paris as an illustration!
Nonetheless, all that glitters just isn’t gold: . This value is low in comparison with the 80% of acceptance rate for other requests. This drop is anticipated and perfectly comprehensible, as sometimes drivers are on a decent schedule and detours may not be convenient for them.
Not all of the Boost requests are the identical and never all of the drivers react to them in the identical way. There are very appealing Boost requests and drivers inclined to take detours in addition to inconvenient requests and drivers never diverting from their route.
Now, imagine what we could do if we could predict whether a driver would accept a Boost request or not: we could then remove the superfluous Boost trips from the search results, thus vastly improving the user experience (each for drivers and passengers). After all, we have no idea what a driver would do upon receiving a selected Boost request. We will nevertheless use machine learning and train a model to predict drivers’ behaviour, using that forecast as a proxy for the knowledge we don’t have!
Forecasting a driver’s response is an ideal task for machine learning as it will probably be modeled as a binary classification problem on a dataset generated by the past Boost requests that were sent. The goal of our model would simply be the driving force response: the accepted or refused request. We will leverage years of historical data to grasp what are the possibilities that a Boost ride needs to be accepted.
This can be a XGBoost model, taking in input temporal and geographical features in addition to the drivers’ past behaviour. Note that this model has to run live in a production environment and to offer scores instantaneously every time a possible passenger makes a search.
Although our model cannot read drivers’ minds, it provided interesting insights in agreement with common sense:
- Drivers are less willing to simply accept Boost requests because the requested ride gets shorter
- Drivers are less willing to simply accept Boost requests because the departure time approaches
- Drivers that already accepted Boost requests usually tend to do it again
Now that now we have the drivers acceptance scores, how can we resolve which ends up ought to be hidden and which ought to be displayed?
Product and business set the edge to either show more or fewer results. More results mean more possibilities for drivers to seek out passengers but more likely for passengers to be rejected, fewer results mean the other.
A vital remark is that . Actually, passengers whose ideal offer is hidden, might still find rides matching their criteria and find yourself requesting a ride with a better probability of being accepted. Principally, we would barely reduce the variety of requests sent out, but the higher quality of requests received by the drivers compensate for that.
Finding the sweet spot between not hiding enough and hiding an excessive amount of is vital to success here. The brink must adapt to how “redundant” Boost rides are and the way a lot of them can thus be safely hidden without impacting the amount of the marketplace. A difficult task, but extremely worthwhile!
The methodology suggested has been rolled out in France in September 2022, and in 14 more countries since then. We observed positive results in every single place. The acceptance rate of Boost requests has increased by roughly 30% and the general variety of passengers increased!
Listed here are a couple of final takeaways:
- Hiding results is bringing advantages to each the user experience and the quantity of bookings we realise. If there may be already a fantastic ride available, why should we create a recent one less prone to be accepted?
- however it is key to supply them to our users at the appropriate time and in the appropriate way. In this text we discussed resolve whether to display them or not, but many other challenges should be faced: price them? select the meeting points?
- still we are able to play a job in understanding and influencing it. Yet, every motion taken might generate a cascade of effects on each drivers’ and passengers’ experiences, each within the short and the long run. This makes coping with these topics stimulating and all the time interesting.
from data collection to retraining, from monitoring data drifts to running A/B tests…. You should have to attend for the following episode, and until then “Completely satisfied carpooling!”
Your article helped me a lot, is there any more related content? Thanks! https://accounts.binance.com/zh-CN/register-person?ref=DB40ITMB
I may need your help. I tried many ways but couldn’t solve it, but after reading your article, I think you have a way to help me. I’m looking forward for your reply. Thanks.
winter night
coffee work jazz
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article. https://www.binance.info/en/join?ref=V2H9AFPY