In this post I will talk about Food Delivery Rider Modelling – working out how to ensure that you have enough riders to meet demand whilst not having over supply
By some accounts the food delivery company FoodPanda has more than 20% of its sales in a two hour time window on a Sunday night. This is great for its customers who are looking for something to make themselves feel good before going back to work on Monday. It is also great for the restaurants as it allows them to turn a slow Sunday evening into something almost as good as Friday and Saturday. This leaves them with only four slow days a week and thus has a good impact on sales and thus profitability.
However it is pretty terrible for FoodPanda. 20% of the orders in 1% of the time. If we break it down by actual working hours it works out at about 20% of the orders in about 3% of operation hours. Practically that means if you average out demand over the other working hours they need six times as many food delivery riders on Sunday night.
Variability in Food Delivery
One of the things about food delivery, like many jobs, is that most people want reasonably consistent work on a regular basis so that they have reliable cash flow. In fact most businesses are the same. Pension funds are one extreme. They invest in the most stable risk free cash flow they can find – government bonds – so that they can reliably deliver on their pension liabilities.
Factories with highly variable demand are highly inefficient. Utilisation rates drop right down as does break-even time on machinery and generally the factory climbs the experience curve far more slowly as experience is gained in fits and starts rather than at reliable and consistent pace.
So a company like FoodPanda with highly variable demand is destined to be inefficient. Systems have to be built to scale for that massive peak in Sunday demand and for the rest of the week they are woefully underutilised. Any business that has demand peaks has a similar problem. one of the best examples of this is Amazon which has the twin peaks of Thanksgiving and Christmas in Q4 each year. The infrastructure that it requires to meet this demand is massively underutilised during the rest of the year.
It adopted two solutions firstly it started providing cloud services, AWS, to utilise all the spare supply during the rest of the year. Secondly it sought to moderate demand by such promotions as Amazon prime. Whilst Prime doesn’t shift the needle much in the peak periods, Prime contributes more than 20% of sales overall and that has a significant impact on infrastructure utilisation rates during the rest of the year.
Many food delivery startups find that they have a midweek peak with many more people ordering on Tuesdays and Wednesdays than on Mondays and Fridays. This has a similar impact. This can be as much as 30% of production. The impact of this is that as the delivery part of food delivery is non-scalable the wage costs on the weaker days are far higher than would normally be ideal.
Leading, Lagging and Matching Strategies
Essentially this is because you cannot react instantly to demand. It takes time to recruit and train new riders for a surge in demand. Riders who are underutilised churn very rapidly. So you either have to adopt a leading or a lagging strategy. A leading strategy means having more riders and thus ensuring that you can always meet customer demand. On the other hand it also means that you have excess supply which can really hammer the break-even point.
A lagging strategy means reducing the cost base and never having excess riders, but takes the hit in customer satisfaction when you don’t have the correct number of riders to deliver on time, or indeed at all. A matching strategy – which is basically the principle of load balancing is really only possible if there is a significant excess supply of food delivery riders and as a result people will turn up for work and you can choose enough people for work and give them nothing is you don’t have enough. This passes the risk onto the rider and obviously is not popular.
Food Delivery Rider Modelling
What can you do? Depending on the nature of your food delivery business you can look at your historical records of demand. You can use actual orders or some other proxy that correlates to order, for example web traffic. You can then use this for your period of analysis. With very high demand variability during the week this is often the day, the shift or even the hour. (hourly analysis needs a much larger data set than weekly analysis). Once you know the average for the period of analysis and the standard deviation you can estimate the number of riders that your require.
The problem is that this masks many peaks and troughs in demand. As a result you will find yourself quickly facing over capacity some days and under capacity on others. And indeed you will generally find that there is a tradeoff that you have to make depending on your appetite for risk, the importance of customer satisfaction on growth and the amount of cash you have available for growth.
Monte Carlo Analysis
Taking this a step further you can do Monte Carlo analysis, which is a form of scenario modelling, and this allows you to see what is likley to happen in the future, if the same demand patterns are maintained (it gets a bit more complicated if you have, say, 15% growth a month). You are then able to get fairly precise estimates such that you can estimate the mean time between failure (MTBF) of how frequently you will not have enough riders and the min max for that and thus the cost of foregone orders and customer dissatisfaction. Equally you are able to see the likely wastage cost each day and build that into your financial models.
The way that I normally do this is to:
- Gather the historical data sets in excel and clean them
- Identify the period of measure – this normally means adding a new column and using a formula to create the values. For example =weekday(date) in Excel will give you a number for each day of the week. Sunday =1, Monday =2 etc that rapidly allows you to segment by day of the week
- The use a filter, pivot table or histogram to gather the relevant order data for the period
- Once you have this you can generate the mean and the standard deviation
- Then you can use =rand() with norm.inv to generate random values based on your distribution of orders (assuming that the set is normally distributed)
- Then I tend to use a data table to run a 1000 events for each production value that I am testing
- You can then clearly see the breakeven points for under capacity and over capacity and the transition zone between them where you will have to make your tradeoff
If this sort of analysis sounds useful to you fill in the form below and we can have a chat