There has been a lot written lately about the difficulty third-party delivery companies such as Uber Eats and DoorDash have had making a profit. Any number of analysts have pointed out that profits were elusive (1, 2) for these companies even during the pandemic-driven surge in business, and will presumably be even harder to achieve now that that wave is subsiding. Most of this analysis has focused on Big Delivery’s financial picture however. My aim here is to take a deep dive into their logistics for the purpose of demonstrating their business model is so inefficient that they can never be consistently profitable.
A little about myself: I have been driving for Uber Eats for over a year, and before that I drove for Jimmy John’s, and before that I worked as a driver and dispatcher for a third-party food delivery service in the days before smartphones. My observations at those jobs form the basis for much of my analysis, and I have also drawn insights from the subreddits for UberEats, DoorDash, and Grubhub, and from articles in the technical and business press. I concentrate on UE because that’s the one I know best, but the situation is little different for GrubHub and DoorDash. As GrubHub CEO Matt Maloney recently put it, meal delivery “is and always will be a crummy business”.
UE has multiple problems, and most of them have no solutions. In this post I will take a look at three of the worst ones. For starters, they have no idea what’s going on in the kitchens of their restaurant partners. This matters, because that ignorance makes it impossible to tell how long a particular order will take to prepare, or when to dispatch a driver. Send a driver too soon and she will have to waste time waiting for the order to be cooked, too late and the food will be cold before she even gets there. The enormous differences in capacity and efficiency between restaurants, or even the same restaurant on different nights, make it virtually impossible to hit the right balance consistently. Every UE driver knows the aggravation of getting to a restaurant quickly, only to be told “Oh, we just got the order, you’re going to have to wait.”
This doesn’t mean UE hasn’t tried. A gushing Wired article from a couple of years ago chronicled the company’s efforts to predict food prep time using artificial intelligence to analyze the mountains of historical data gleaned from years of deliveries — without acknowledging the inherent inadequacies of such an approach. A somewhat more technical piece from The New Stack also glosses over the unsolvable aspects of the problem. The part they don’t tell you is that random events, by definition, can’t be predicted, by AI or anything else — and restaurant kitchens can be pretty random places. Changes in management, sudden staff shortages, unexpected surges in demand, kitchen accidents, running out of key ingredients — these are only some of the factors that confound efforts to figure out exactly when a particular meal from a particular restaurant will be ready for pickup. There’s nothing that AI can do about any of them.
UE tries to alleviate this problem by giving restaurants the ability to alert them when an order is ready. In theory this is a good idea. If AI predictions are no substitute for specific knowledge about a particular order, why not try to get that information from the restaurant? Because restaurants can lie, and do so quite often. They have no reason to care how long the driver has to wait, only about how fresh the food is when the customer finally gets it. In consequence, hitting the Ready button as soon as an order lands is standard policy at some establishments. Others do not go this far, but still require UE to delay sending them any order until a driver has claimed it (a Starbucks barista told me this one). Since most restaurants can’t make an order as fast as most drivers can get there to pick it up, this policy also results in unnecessary waiting time. A few places won’t even start making the food until the driver arrives.
UE could stop these practices easily. It would be trivial for them to discontinue the option to delay order notification, and not much more difficult to detect which restaurants regularly lie about order readiness (just mine driver GPS data to see when drivers stay at the restaurant for a suspicious length of time after the order is supposedly ready). They won’t though. UE charges most restaurants up to a 30% fee for each delivery, more than enough to obliterate the restaurant’s profit margin. Letting restaurants ruin the prediction algorithm is a small price to pay to preserve that income stream.
To top it all off, drivers who don’t want to wait for an order have the option to unassign themselves. When this happens, UE’s dispatching algorithm has to try to find another driver, often after the restaurant has begun making the food. The restaurant may then have to choose between giving the new driver stale food, or discarding it and starting over, which risks repeating the cycle anew.
Got all that? It’s just one problem with the third party delivery model. Next I’m going to talk about order stacking. For anyone trying to maximize the productivity of a delivery operation, an obvious move would be to try to have each driver deliver as many orders at once as possible, right? Your local pizza joint routinely loads five or more deliveries at a time on a single driver. Why then does UE limit their drivers to a maximum of two? (Except for Walmart orders, but these are nonperishable and far less time sensitive than meals.) My theory is it’s because Uber is a tech company. Not in the sense that they’re creating any new technology (AI pretensions aside), but attracting all those billions in investments required donning the trappings of a Google or a Facebook, and there’s nothing they can do about it now. Your local pizza joint is stuck in the twentieth century, and nobody expects it to develop an app with real-time driver tracking that lets customers follow the driver around on their phone screen until she arrives. The fifth customer in line is therefore none the wiser that his delivery driver made four other stops first. UE on the other hand has to offer that feature, because they call themselves a tech company, because their competition does it too, and because that’s how they get their customers to supervise their drivers. They can’t stack orders more than two deep because the last guy in line will always think he’s getting screwed.
There’s no reliable way to convince him otherwise. Tell him the other customers placed their orders first, and he may complain (often with justification) that the driver passed within a block of his house and it would only have taken a slight detour to get him his order far sooner. Tell him that his house was at the end of the shortest possible route and he will be angry that other customers jumped the line to get ahead of him. Rejigger the dispatch algorithm to carefully balance the demands of fairness and geographic efficiency, and he will insist that its reasoning be explained to him — a task nearly impossible for AI to accomplish. He will likely give the driver a thumbs down in any event. This is already a problem even with the limited stacking UE currently permits, as many drivers can attest.
UE partners with any number of restaurants that can send five delivery orders in the same direction at the same time. Heck, your local pizza joint might even be one of them. If so, do yourself a favor and order directly from the restaurant. You’ll get your food faster, and even if you’re fifth in line you’ll never know it.
Even UE’s two-order stacking is less than it appears. For one thing it’s a pretty recent development — early last year they were strictly one at a time. For another it’s less efficient than it should be because UE enforces a first ordered, first delivered rule, regardless of how much longer it takes. Every driver who takes doubles has stories of driving miles to drop off the first order, only to reverse direction to deliver the second one a block away from the restaurant. It’s happened to me more than once. This is why if they have the option (it varies by location), customers should pay the extra buck for a solo delivery.
At this point an Uber fan might raise an objection. Who cares about logistical efficiency when UE features economic efficiency? Drivers are paid by the delivery, not the hour, so what difference does it make how many of them there are? That shouldn’t affect Uber’s bottom line. It does though, albeit indirectly. In order to pay their drivers on a per delivery basis without worrying about minimum wage laws, UE classifies them as independent contractors. I believe that this practice is a major factor in UE’s lack of success. True, they don’t have to pay a minimum hourly wage, but it also means drivers have to be allowed to reject deliveries. This is not a good trade. Imagine if you got an email from FedEx saying “Hey, remember that package you sent yesterday? It’s not gonna get there, sorry. Here’s your money back.” What if you ordered a large pepperoni and a two-liter of Sprite from your local pizza joint and they called you back a couple hours later and said “We can’t deliver your food, our driver doesn’t think you’re going to tip her enough.”? You’d never do business with either of them again. Yet similar scenarios happen all the time at UE.
They don’t like it of course. If UE had their way, drivers would be required to accept all orders on pain of being fired (or “deactivated” in Uberspeak). But since drivers are (on paper) independent contractors, federal law says they have to be allowed some meager shred of actual independence. In practice this means the driver gets a notification with the pickup restaurant and address, the total payout including expected tip, the general location (but not the exact address) of the dropoff, and a small map of the projected route with miles traveled and estimated time to deliver. She then has 15 seconds to decide whether to accept the order. If the payout isn’t enough to cover her gas and time, or if the driver thinks she can do better by waiting for a more lucrative order, then she will probably decline it. And as I noted above, if the restaurant is taking too long she can simply unassign herself. My personal MO is to keep declining orders until one finally pops up that meets my standards, and most experienced drivers take a similar approach.
UE’s dirty little secret is that some orders never get claimed. A ten mile delivery with no tip, from a restaurant known to be slow, will very likely be declined by every driver in the area, until the dispatch algorithm finally gives up and pulls the plug on it. In addition to the non-delivery issue, even orders that eventually reach their destination can take far longer to do so than they should have. The first driver to be offered a delivery is presumably, in the estimation of the algorithm, the best positioned one for the job. If she declines, the order will go to the second best situated driver, and so on down the line. By the time it gets to a driver desperate enough to finally hit the Accept button, the poor sap might be a couple of miles further away on the wrong side of a highway from the restaurant. The delivery acceptance problem overshadows all of UE’s operations, and battling it is the main focus of many of their policies.
UE addresses the problem in several ways. For one, there is their infamous surge pricing, a tactic Uber employs for Eats deliveries as well as rideshares. Per supply and demand theory from an Econ 101 textbook, raising the price of a commodity should lure more suppliers into the market while reducing demand, meaning that customers should still get their food quickly even when it’s busy. In real life of course, drivers with families, commitments, lives, and other jobs can’t necessarily drop everything to run out and do deliveries for an extra few dollars apiece, especially since there is no guarantee how long the surge pricing will persist. On the demand end, customers are already paying so much for the food that the increased delivery fee is still only a small percentage of their total order.
UE’s other tactics to prop up acceptance rates are actually more illustrative of market forces than is surge pricing — but it’s a market for labor that UE must participate in, not a (fake) market for a service that they control. Most familiar to drivers are the “quests”, which might more accurately be called “bribes”. Quests are simply bonuses for completing a certain number of deliveries within a certain period of time. Depending on the situation in a particular area, UE might offer a driver anything from four dollars for four deliveries by the end of a lunch rush, to, say, over $100 for 40 orders delivered in a three day weekend. Quests are a great way to get drivers to accept cheap orders they wouldn’t touch otherwise, but unlike surge pricing, the money comes straight out of Uber’s pocket.
Another pricey but obscure motivational trick involves unassigned orders. When a driver takes herself off an order (although not if she merely declines to accept it), UE will bump the payout for the next driver, and repeat the process as necessary until the order is either delivered or canceled permanently. This can lead to more inefficiency and lost time in cases where the order is impossible to complete, such as when a restaurant has to close unexpectedly and the manager forgets to turn off the Uber tablet. Usually though, the escalating payout will eventually persuade a driver to sit in a drive-through line for as long as it takes to collect the food — again at Uber’s expense.
And then there are the recruiting bonuses, something unlikely to be featured prominently in Uber’s annual report. This is when UE pays drivers, not to drive more or accept crummier orders, but to persuade more people to sign up with the platform. The more drivers available, the more likely that one will be desperate enough to accept that $3.50 order the algorithm’s been stuck with for the last half hour. Last winter UE was repeatedly emailing me with offers of as much as $700 for each new driver I could recruit. Granted, this was in middle of the pandemic when demand was at its peak. Granted, the bonus would only have been paid once the new driver had completed a certain number of deliveries in her first few weeks. $700 is still a lot of money to bring on a single unskilled blue collar worker in the middle of the worst unemployment since the Great Depression, especially for a job that is relatively Covid-safe and paid quite well at the time. I can guarantee your local pizza joint has never had to resort to signing bonuses to hire delivery drivers. Recently UE has even been handing out surprise bonuses to new drivers after their first hundred orders, even as business has plummeted, an obvious tactic to get them to stick around.
What’s going on then? Why would Uber not put that recruiting bonus money into more lucrative quests, or just increase the base payout? For one thing, attracting workers with increased compensation only works if they know about it. Driver income at UE can fluctuate so wildly from week to week that no one not already on the platform can keep track. By signing up as many rookies as possible, regardless of expense, UE can spam them with texts and emails every time demand spikes in their area.
Uber likes newbies for another reason though. Rookie drivers are more likely to accept lowball orders in the mistaken belief that UE will punish them for declining too often. This is one of the most common misconceptions that crops up on the ubereats subreddit. Before they either figure it out or give up in disgust, UE needs a new crop of replacements. It is not known how many drivers recruited this way stuck around long enough to recoup the cost of their recruitment, but even the ones who didn’t cleaned up a lot of orders that more experienced drivers wouldn’t have accepted.
Of the problems I’ve looked at so far, this one would seem the easiest to fix. The first two are pretty much just the nature of the beast. UE has zero ability to see deeply enough into restaurant operations to predict reliably when orders will be ready, and if they were to discontinue real time driver tracking at this late date, Doordash and Grubhub would eat their lunch. But they could, in theory, switch to an employee model virtually overnight. This would involve paying drivers an hourly wage plus tips, using their world class AI to predict demand, and scheduling driver shifts accordingly. From that starting point it would be easy enough to do the fine tuning using the same abusive practices found in the fast food industry — forcing some drivers to be on call in case it gets busy, and sending some home early when business slows unexpectedly. The payoff would be that drivers would no longer be allowed to refuse deliveries, but would have to accept whatever they were sent. And since tips would remain part of their compensation, they would still have a reason to deliver orders as promptly as possible. This would greatly simplify UE’s dispatching issues and improve service tremendously.
Despite these advantages Uber not only has refused to classify their drivers as employees, but has invariably fought tooth and nail against being forced to do so by any governmental body. Doordash and Grubhub have been equally adamant, although they too face the issue of drivers declining orders. Their excuse is that even minimum-wage employees cost more than contractors, and therefore they would have to reduce the number of drivers on the road and/or raise their prices, but this is nonsense. As we have seen, employee drivers could make more deliveries in the same time frame simply from being denied the ability to refuse orders, meaning UE could get away with trimming their numbers and still maintain their current (lousy) level of customer service. If further improvements were called for they could always let drivers determine the delivery sequence of double orders, quit letting restaurants abuse the Order Ready button, and get over their irrational phobia of motorcycles and scooters. If they got really hard up they could start reducing the delivery radius of consistently slow restaurants, and even cut off the worst offenders entirely, freeing up a lot of driver time that is currently wasted hanging around in restaurant lobbies. Besides, if all food delivery drivers had to be classified as employees UE’s competition would be in the same boat.
So if the problem isn’t cost what is it? Once again it goes back to Uber’s pretense of being a tech company, but this time it’s a little more complicated than just the necessity of utilizing readily available smartphone features. Let’s look at the classic tech company business model, as explained by the underpants gnomes.
1. Have an idea
2. Get venture capital
3. Sign up millions of users
4. Go public
This is how tech giants like Google, Amazon, and Facebook got started on the path to world domination. The possibility of getting in on the next eBay, or even just the next Pinterest, is what keeps venture capitalists and other seed investors coming back for more. Those guys know most of the ideas they finance will probably fail, but the handful that blow up big will cover their losses and then some. That makes the tech model a great deal for entrepreneurs. Compared to the ordeal of getting seed money to found a boring, old economy business, VC funding looks like manna from heaven to startups. All they have to do is present themselves as being innovative and “disruptive”, and they can access millions in funding that would never be available to start, say, a manufacturer of industrial cleaning supplies. Actually being innovative is optional. Uber would never have gotten off the ground if their pitch to investors had been “We’re starting a taxi company where the drivers bring their own cars.” They needed a hook, and that hook was provided by neoliberal economic theory. According to neoliberalism (which enjoys wide currency among Silicon Valley’s movers and shakers), markets are the most efficient way to allocate resources, and anything that gets in the way of the free market exchange of goods and services should be discarded. Like minimum wage laws and municipal taxi licensing regulations for instance…
Knowing their audience, Uber (after a brief flirtation with owning their own vehicles) pitched themselves, not as a taxi company, but as a market for taxi service, connecting supposedly independent drivers with passengers in exchange for a percentage of the fare, all in accordance with the prescriptions from that Econ 101 textbook. Surge pricing was the cherry on the sundae, and the rest is history. Aided by floods of free publicity from the media, the spinelessness of taxi regulators in major cities, and the admittedly horrible service offered by many old school taxi companies, Uber rocketed through step 3 in a few short years. In that context, when Eats came along it just looked like more of the same, a logical expansion into transporting food as well as people. Never mind that there was no government regulation of food delivery, local pizza joints already expected drivers to provide their own cars, and their service was mostly pretty decent. The point was to generate another revenue stream for Uber, in preparation for step 4, the tech company nirvana of an initial public offering. This is when a company goes public, listing their shares for sale on the New York Stock Exchange and other stock markets, allowing the venture capitalists to cash out their investment. It’s when founders and early investors either get to watch their baby, all grown up, make its first foray into the real world — or unload the hot potato on a fresh batch of suckers, depending.
Uber’s 2019 IPO came off with only minor drama, and despite the oceans of red ink on their books their stock price stands, as of this writing, at about $50 per share. It’s time to consider the possibility then, that Uber’s real business, their true core competency, isn’t transporting passengers, or meals either. Maybe instead it’s convincing investors to keep financing their neoliberal pipe dream. If that’s the case the last thing they can afford is to allow any of their drivers, rideshare or Eats, in any state or city, to be employees. Once drivers are employed directly by Uber the illusion of a free unencumbered market connecting buyers and sellers collapses utterly. Uber would just be the seller. At that point Uber is no longer an innovative tech company with limitless potential, but an overleveraged dinosaur trapped in a low margin commodity service business. Profits will matter all of a sudden, profits large enough to recoup the tens of billions of dollars of investors’ money that Uber has swallowed up over the last dozen years. And to finally return to my point, slightly improved operational efficiency at UE would be woefully insufficient to generate such profits. UE can’t solve the acceptance problem because the only way to do so might crash Uber’s stock price and destroy the whole company.
The bottom line is that due to the inherent limitations of UE’s operations, the average UE driver spends much more time between deliveries, traveling to restaurants, and waiting for orders than does a driver for your local pizza joint, and much less time actually bringing food to customers. This difficulty is exacerbated by the fact that pretty much everyone hates UE. I will explain why in part two.