In our first post a cake got across Lagos without anyone making a phone call. In the second, we looked at the businesses that open up when delivery stops being the hard part.
People keep asking the same follow-up question: what actually happens in between? You press a button, a rider turns up. What goes on in the middle?
So let's slow one delivery right down and watch it.
10:02 a.m. The order is ready
A pharmacy in Wuse 2, Abuja. A customer in Maitama has ordered a repeat prescription, including insulin, which has to stay cold. The pharmacist has done her checks, packed the order, and taps "ready".
The price was settled earlier, when the customer checked out. Relay gave the pharmacy's app a quote, and that price held while the order was being prepared. Nobody haggles at the door, and nobody gets a surprise at the end.
The moment the order is marked ready, it becomes a delivery on Relay, waiting for a rider. The clock starts.
10:02 and one second. Who could take this?
Relay looks around the pharmacy for riders who could do this particular job well. Not just anyone nearby: riders who are online right now, who are rated highly enough, whose vehicle suits the trip, and, because of the insulin, who can keep things cold.
That last part matters. The pharmacy asked for refrigeration when it created the delivery, so a rider without it is never offered the job. It isn't a note someone might forget to read. The rider simply doesn't qualify.
The first two minutes: three waves
Here's the part most people never see. Relay doesn't shout the job to every rider in the city at once. It asks in waves.
The first wave goes to one rider, the best-placed one, who has thirty seconds to accept. One rider, one clear offer, no scramble.
If they don't take it, the second wave goes to up to three riders, for another thirty seconds. Whoever accepts first gets the job.
If it's still open, the third wave widens to up to twenty riders, for a final minute.
Those are the default timings. An urgent delivery moves faster, with shorter windows at every wave. Either way, within about two minutes you know where you stand.
And if nobody accepts? That can happen, especially late at night or in a heavy rainstorm. The delivery is marked as failed, the pharmacy is told straight away, and if the customer paid by card, the amount that was held on it is let go. Nobody's card is charged for a delivery that didn't happen, and the pharmacy isn't left waiting on a promise.
10:03 a.m. Someone says yes
A rider called Musa accepts from a few streets away. The delivery is now assigned to him.
On the customer's phone, the order page changes. It no longer says "preparing". It says a rider is on the way to the pharmacy, and shows him moving on the map.
This is the moment that used to be a string of phone calls. Now it happens without anyone picking up a phone.
10:09 a.m. The pickup
Musa arrives and collects the package. By now the delivery is "in progress", and the pickup is recorded as done, with the time.
If a delivery has several stops, each one is recorded the same way as it's completed. That's what lets the aso-ebi coordinator from our last post see exactly which of her forty guests have their outfits and which are still waiting.
10:10 to 10:24 a.m. The part everyone can see
Musa rides towards Maitama. His position updates live, so the customer can watch him come, and the pharmacy can see him from the counter without asking anyone.
If the customer steps out to buy bread, they can check their phone and know whether to hurry back. If traffic on the way is slow, everyone can see that too. Nobody has to guess, and nobody has to call.
10:25 a.m. Delivered
The insulin arrives cold. The delivery is marked complete.
A few quiet things happen at this moment, and they're the parts businesses end up valuing most.
A card payment is collected now, not before. If the customer paid by card, the amount was only held when the delivery was created. It's charged once the job is actually done.
Musa's earnings are recorded straight away, then held for a short while before they're released. That short wait leaves room to raise a problem if something went wrong, before the money has gone anywhere.
The pharmacy can rate the rider. Ratings are part of how riders are matched, so the next business that asks for well-rated riders benefits from this one's feedback.
And everything is written down. When the order was ready, when it was offered, who accepted, when the pickup happened, when it arrived, what it cost, and when everyone was paid. If a customer calls next week to ask about their order, the answer is a few seconds away.
What didn't happen
It's worth noticing what nobody had to do.
Nobody rang round for a rider. Nobody negotiated a price at the door. Nobody answered "where is it?" three times. Nobody paid cash and tried to remember it at the end of the month. And the pharmacist never stopped being a pharmacist to become a dispatcher for half an hour.
That's the whole idea. The delivery still happens in the real world, on real roads, with a real person on a real bike. Relay just takes the uncertainty out of the middle.
For the developers reading
Everything above maps to a small, predictable set of states and events, so your app can follow along exactly.
- A delivery moves through pending → offered → assigned → in progress → completed. It can also end as failed (no rider accepted) or cancelled.
- Each change arrives as a webhook your server can listen for:
task.status.created,task.status.offered,task.status.assigned,task.status.in_progress,task.status.completed, andtask.status.failedortask.status.cancelled. - Every finished stop sends
task.stage.completed, which is handy for multi-stop runs. - The money has its own events:
payment.pending,payment.released,payment.disputed, andpayment.dispute_resolved. - Live location for maps comes over a WebSocket, so your customer's screen updates without polling.
The part we like most is that you can rehearse all of it before going live. With a test key, you can tell Relay how a delivery should turn out, whether that's a smooth success, a first wave that times out, no riders at all, or a cancellation after the rider accepts, and check that your app handles each one gracefully. The simulation guide lists every outcome, and our Node walkthrough gets you to your first test delivery.
Two minutes, and then some
Most of what makes a delivery feel good to a customer happens in the first two minutes and the last one: someone reliable says yes quickly, and the thing arrives the way it left. Everything in between should be visible, fair, and written down.
That's the job we built Relay to do, so the pharmacist can stay a pharmacist.
If you'd like Relay behind your deliveries in Lagos or Abuja, start at sendrelay.com.ng or write to hello@sendrelay.com.ng.
Illustrations by Relay. The pharmacy, the customer and Musa are an illustrative example, not a real delivery.


Top comments (0)