food delivery app design for restaurants

i worked at a takeaway recently, and of course we use the home delivery apps. the interfaces on them are all terrible. here are some notes about what i remember there are no screenshots, because it gets so busy that i don't have time to take them..


first, deliveroo doesn't distinguish between scheduled orders and current orders. it displays a single list of all orders that have not yet been collected by a rider. most of these will have a relative time on them, saying that the rider will arrive in three minutes, or nineteen minutes, whatever. some orders will have an absolute time: "to be prepared tonight at 10pm", "to be prepared tomorrow at 11:30am". they're in the same list, however far away they are. so i can complete all orders, then come back and then everytime i check have a panic as i see another order, before realising no, that's for tomorrow. alternatively, at peak times i'll accidentally prepare the order this is the worst time to be doing more than i need to, and then the food will be waste.

the orders in the order list randomly moves around. usually they are sorted by time to collection, but this updates in real time, even if two riders are about the same distance away. that's frustrating enough. even more frustrating is that sometimes orders will be paired up, so one rider will collect two bags, but these will then split apart again, to be paired up with other orders which a moment ago were so far down the list that they were off the screen.

there is no way to mark an order as ready. this would be useful, so that their algorithm could prioritise collection of the food which we've made---see the above point, where i will be told that an order is one minute away, for it to suddenly be twelve minutes away. also if i could mark an order as prepared, it could be dismissed from the list so i don't have to look at it anymore and keep checking that it's not one i've already done.

every time a new order comes in, there is a stressfully long new order notification sound. i looked through the settings and couldn't find a way to change this. it's a series of chimes, but it's repeated three times, so goes on for perhaps six seconds in total. i already know the order has come in, because i'm working exclusively on packing orders. also, if multiple orders come in simultaneously which they do, see the next point., the sound goes on so long i can't tell by ear how many have appeared, and then have to check through the list one by one to see the new ones.

the algorithm appears to drip-feed incoming orders. orders tend to come through in sets of one, two, or three at a time, followed by a pause. when there are twenty orders on the screen, i'm not sure what the benefit of this is, but there is a drawback: when we take something off the menu due to low supply, or if we close the shop, any orders with that item on it will come through. this makes it difficult to plan in advance when to take a limited item off the menu, because i can't know for sure when we won't have enough anymore.

related to the above two points, new orders flash in the list for much too little time. in the next secion, i complain that just eat makes me manually acknowledge each new order, but it'd be nice here if new orders were at least highlighted until i have expanded them, so that it knows that i know that it's there.

deliveroo does not make user comments clear at all. i'm sure you know that you can add user comments to an order, like "not too spicy" or "extra mayo please". at our shop people mostly used it to say they were celiac, because if you marked that as part of the order, we charged an extra pound per wrap. my boss would ring up anyone who did this and tell them to pay an extra pound, but i was happy to oblige. the gluten free wraps were smaller than the usual bread we used, and i thought it was totally unreasonable to charge extra for a smaller wrap, especially when the only reason you would ask for one is because of a health condition. i don't know the rules around health-based discrimination regarding this, but if there is a problem apparently celiacs aren't important enough for it to get called out. the problem was, the user comment is written in grey text at the top, in the same section that there is always a small amount of text written in grey text. stress combined with interface fatigue meant all too often i skipped over this. eventually i got used to running through a checklist out loud, after which i would remember to check, but during peak times i would sometimes still forget until after i'd called an order, which would lead to food waste.

the app does not make good use of horizontal space. the design would work much better in portrait view, but the tablet forces landscape, and then has huge margins either side of the single column in the middle of the screen. i can see about three orders at once, or one if i've expanded it so i can actually see what's in it.

deliveroo does have a function to print an order out, but i couldn't get it to connect to a receipt printer, so it was useless.

just eat

just eat uses a three-stage system which is an improvement on deliveroo's one stage system: orders are marked as "don't prepare", "prepare now", or "ready to collect". this sounds good, and it's not bad, but at peak times it doesn't make sense to have a don't prepare section, because i won't have enough time to prepare everything if i only prepare the things in that section. also, despite giving us about ten minutes to prepare an order, the driver is never on time, leaving the food going cold. if the customer complains, it's us who doesn't get paid, not the driver, and it's me who gets the blame in the shop. i'm not sure how just eat calculates the time to give me to prepare an order, but i couldn't work out how to change it. i wish i could, because i can do an order of chips and a wrap in less than a minute, but we barbeque some things on the menu, which takes more time. i can't say that it will take more time until it tells me that the driver is waiting, at which point i can click "not ready", but still not specify how much longer it will take.

as i mentioned above, the app shouts "you have a new order" at me until i manually acknowledge the order. this is better than deliveroo burying new orders in a long list of old orders, but man does that sound grate. sometimes i walk past another takeaway with the just eat app and i hear it, and it stresses me out even from afar. i would wake up in the night with "you have a new order" ringing in my ears, and that is not hyperbole.

when i expand an order so as to see what the customer has bought, the app will unexpand that box after about five seconds. this is annoying and unhelpful. sometimes i haven't even read through a whole order in that time. and if i leave the box open, that means i want it open so i can prepare the stuff and quickly glance at it without having to touch the screen with greasy hands.

just eat allows people to either order to their home, or come and collect an order. this is a good feature, but on the shop's end, the ui does not clearly distinguish between rider orders and pick up orders. every order is numbered, but the order number isn't made clear to the customer, so there is confusion when they come to pick up.

just eat makes user comments significantly more clear than deliveroo. they get their own section in the ui which is usually blank. but the font is still not as obvious as it could be. generally this isn't such a big deal as just eat does specify allergies separately, but it could be better. it'd be nice if it parsed the comment for information which looks important, like the word allergic and highlighted that for me.

one thing i do like is that just eat provided us with their own console. it's kind of chunky and gets in the way, but it has a built-in receipt printer, so i can print out an order and cross items off as they get packed. props for that.


we didn't get a whole lot of orders through ubereats, so i don't have a lot to say. in general, i think it was the best, although this might just be because i used it the least.

ubereats has a two-stage system: unmade orders, and ready to collect. scheduled orders are kept separate, and colour-coded differently to avoid confusion. in writing this i've only just realised how much i appreciated the colour coding, and how surprising it is that it doesn't feature in the other two apps.

ubereats also has the best system for allergies. there is big red writing at the top of an order saying "this customer has allergies". after that, it could do a better job at highlighting the items in the order that must not contain allergens, but generally it was a good start, and people made good use of the order notes to clarify anything.

however, the algorithm never had a driver ready to collect until between ten minutes and half an hour after we have confirmed an order as ready to collect. once again, this is frustrating as it means food is going cold, and it's us who get the blame for that. i got in the habit of saying that the order was ready as soon as it came so that a rider would turn up at a reasonable time. obviously this loses the advantage of the two-stage system, because every order is just listed as ready to collect. i'm not sure whether this was a driver problem or an algorithm problem, but it was annoying.


there were some things that annoyed me about all three of these apps. they feel like features that really should be added.

none of them had a way to tick off parts of an order as i go through. i mentioned printing off an order on just eat. what would have been even better is if there was a checkbox next to every item that i could tick to go through. it could even grey out the button to mark an order as prepared until every item was ticked.

none of them have a way to specify whether a car is necessary for pickup. we offered a shawarma wrap that was a meter long. obviously having someoen on a bike deliver that is not a great idea, it could easily go wrong and of course we'd get the blame for that. but instead, we'd have to wait for the driver to show up, ask whether they had a bike or a car, and then tell them to reject the order if it was the former. i guess ubereats doesn't need this because everyone has a car, but it would have been great in the other two.

none of them had an easy way to put items on or off the menu. none of them seemed to have a good concept of what an ingredient was. if we run out falafel, i'd have to go through all the menus individually taking off falafel wraps, boxes of falafel, and so on. on just eat, every time you take an item off, a modal popup appears asking whether it should automatically be readded tomorrow, and i can't even just click to answer, i have to click and then click confirm. just eat also doesn't offer a menu search feature, so i'd have to scroll through the whole menu. and it was a pretty extensive menu


i understand that deliveroo was created by a person who also did the deliveries, so it surprises me that the experience wasn't great. perhaps on the rider side, things are more pleasant, but in the shop, there was a notable lack of good ui affordances.

the dream would be an open protocol for orders, so i could aggregate them all in a single app which would hopefully be nicer to user, but unfortunately in our competitive world i don't think that's going to happen.