OS1 by Delhivery | Q2:2024-25

Prabhat Raju

OS1 Delivery Driver Mobile App Redesign

Generic driver app was redesigned for last-mile delivery by identifying workflow pain points through field research. Optimised workflows reduced time to interact by 65% and increased app adaption from 85% to 100%

Who is a Delivery Driver

A person who moves goods by driving vehicles between different locations between manufacturing and end customer in a supply-chain.

Manufacturer

First-mile

Storage

Mid-mile

Retailer

Last-mile

Customer

What is OS1 Driver App

OS1 Driver App is a mobile application facilitating day-today operations of driver.

Manufacturer

First-mile

Storage

Mid-mile

Retailer

Last-mile

Customer

What is OS1 Driver App

OS1 Driver App depends on DispatchOne dashboard to receive orders.

Manufacturer

First-mile

Storage

Mid-mile

Retailer

Last-mile

Customer

DispatchOne Dashboard

User: Team Lead / Dispatch Manager

OS1 Driver App

User: Delivery Driver

Opportunity

As demand for quick commerce and same-day deliveries is booming, we want to focus on selling our DispatchOne product to the last-mile businesses.

Manufacturer

First-mile

Storage

Mid-mile

Retailer

Last-mile

Customer

Problem

Last-mile operations being time sensitive current app is over-engineered, slow-loading, unintuitive, which could lead to late deliveries, impacting customer satisfaction at doorstep.

Manufacturer

First-mile

Storage

Mid-mile

Retailer

Last-mile

Customer

Task

The rider mobile app needs to be redesigned to ensure that it can adapt to last-mile use cases. The app is expected be quick and easy for drivers to use.

I was tasked to lead the project.

Tech Limitation

Existing app is built as hybrid of react + Android/iOS

Limit styling to support less development effort.

Business Goals

Working app live in 30 days - deploy in ops within 45 days

App must have least training effort.

Prioritise speedy delivery over delight features

simplified view

Team

Design Lead, 1 Product Manager, 2 Dev (react/iOS & Android), 1 QA

My Role in redesign

Project

Planning

User

Research

Product

Design

App

Development

Dev

QA

On-ground

Testing / UAT

Ops Team

Training

Optimising

Discover and Define

Is the issue real? What are the on ground problems?

Optimising

Mid-mile | Existing Use-case

Storage / FC

Retailer / DC

Image: FC Driver Operations Overview

Last-mile | Opportunity Area

Retailer / DC

Customer

Image: DC Driver Operations Overview

Research Method

Shadowed 12 last-mile and 2 mid-mile drivers & 1 team leads, across fulfilment and distribution centres.

Rode along for 4 hours covering 18 orders to observe real-world friction.

Interviewed 8 riders and 2 supervisors about workflows and pain points.

Ran self-simulations of pickup, drop and EOD flows; timed load speeds and clicks.

Mapping friction in User Journeys

Optimising

Case study presentation for Delightree

OS1 Driver App for last-mile

How would OS1 Driver App fit in this usecase?

Mobile app used: LM Pro (internal)

Last-mile User Journey

User journey at last-mile Distribution Centre (DC)

Mobile app used: LM Pro (internal)

Notes / Observations

From 1. FC Operations; 2. DC Operations; 3. OS1 for DC

Advantages

Shortcomings

Notes

Before assigning dispatches

Driver reach DC with vehicle by 8am* for first shift

DispatchOne route optimisation would save time in sequencing orders and mapping the route.

Orders received from hub are moved to their respective location based groups/zones

TL would choose all the orders to be delivered today and generate dispatch using route optimisation.

Drivers of respective zones sort orders in delivery sequence based on their tribal knowledge of locations.

Adding Orders

Drivers can add orders to their dispatch using mobile app. No dependency on TL

For orders with multiple shipments, even if one shipment is missing/damaged, whole order needs to be Rescheduled.

While riders scan shipments, using HHD, TL creates a trip/dispatch and assign that to driver.

Drivers can choose to add orders.

But tour will no longer be optimised.

Starting a Dispatch

Drivers hold up the queue by waiting at TL’s desk until orders are loaded in app.

TL must publish a dispatch through web dashboard.

LM Pro App

Loading list of tasks is taking 40 sec, holding up the driver at TL’s desk.

Drivers crosscheck list of orders from app are matching with shipments in hand.

List of tasks

Picking up for Bagging

Delivery tasks are created only if the shipment is picked-up first.

Drivers bag the shipments in last in first out order.

In OS1 mobile app, bagging can be defined as a ‘Pickup’ task.

This task can be used for picking up return orders from customer location too.

Grouping screen is creating confusion by adding extra screen.

Confirmation screens are adding an extra click.

Informing Customer

9 of 12 drivers use earphones for phone calls.

Drivers prefer skipping a delivery if there is no response from customer.

Driver calls the upcoming customer to inform about upcoming delivery.

Despite calling customer being primary action, there is no option in homepage.

Drivers struggle to discover the order in app when they get call back from customer.

Often customers reject or miss the call, therefore calling back driver.

Delivery with COD

4/5 cash on delivery orders are paid by UPI.

Payment flow has too many screens, additionally loading time is high.

Payment flow has too many screens, additionally loading time is high.

Delivery with PoD

Incase of someone else receiving the delivery, drivers collect id proof and share the same in a whatsapp group as PoD.

OS1 app can be configured such that if driver is delivering order to security, extra flows like ‘signature’, ‘capture image’ can be triggered.

Drivers tend to steer away from app to continue delivering whenever they come across unfamiliar user-flow in app.

New Order Assigned!

2m ago

An Order has been assigned to you.

Ralph Edwards

now

Haha that's terrifying 😂

What's the occasion?

3m ago

Can you bring a big salad? I’m on dessert duty.

9:41

Tuesday, 23 June

9:41

After navigating using maps, drivers go back to home and open OS1 app again

End of Dispatch

End of dispatch flow is to confirm if driver attempted all tasks and TL approving dispatch closure.

At the End of dispatch, driver returns to DC and drops return/undelivered shipments along with cash collected.

OS1 end of dispatch flow. TL must confirm accepting orders brought back by driver along with cash reconciliation.

6 clicks complete the flow.

Drivers finish handing over cash and shipments followed by marking them done in app.

320 seconds to navigate through flow without physically handing over orders and transferring all cash.

Inferences

Grouping of orders is creating confusion by adding extra screen.

Drivers get intimidated whenever there is a new workflow which they don't understand.

Drivers can skip to capture photo as PoD, as per workflow configurations, none of the drivers knew.

Confirmation screens are adding an extra click.

Inconsistent placement of primary action buttons is increasing cognitive load.

Drivers always look for orders by simply scrolling before they use search.

Calling customer is primary action which takes 4 clicks to call.

For orders with multiple shipments, even if one shipment is missing/damaged, whole order needs to be Rescheduled.

Dependency on TL to publish a dispatch through web dashboard is slowing down drivers

Loading list of tasks is taking 40 sec, holding up the driver at TL’s desk.

Drivers struggle to discover the order in app when they get call back from customer.

Payment flow has too many screens, additionally loading time is high.

6 clicks complete the flow.

320 seconds to navigate through flow without physically handing over orders and transferring all cash.

After using other apps like maps and calls, drivers go back home - apps - OS1 app to get back to workflow.

Dispatch bottleneck at Distribution Centre

Inconsistent UI and copy created confusion

Communicating with customer is unsafe & inefficient

App complexity slowed down adoption

Onboarding & churn challenges

End-of-Day (EOD) flow was overwhelming:

Pain-points are grouped into following inferences.

Dispatch bottleneck at Distribution Centre

Inconsistent UI and copy created confusion

Communicating with customer is unsafe & inefficient

App complexity slowed down adoption

Onboarding & churn challenges

End-of-Day (EOD) flow was overwhelming

Prioritising

Dispatch assignment needs to be solved first as the logic flows down to rest of the app.

Ease of implementation & helps in quicker dev cycles.

Order fulfilment flows redesign.

Might include call masking which is part of roadmap.

On ground operations team will solve the issue.

While business impact is high, moved down due to dependency app workflows.

Sorted based on tech inputs & business implications.

are solved below

Dispatch bottleneck at Distribution Centre

&

Communicating with customer is unsafe & inefficient

for case study,

Optimising

Dispatch bottleneck at Distribution Centre

Inference 2

Communicating with customer is

unsafe & inefficient

Inference 4

Overall Impact

Time to Interact:

Training reduced from 4 shifts of doubts (DC) to 3 shifts (quick-commerce)

Force restart instances: 3 sec [-37sec]

Start: 3 sec [-37sec]

Pickup: 26 sec [-44sec]

Drop: 45 sec [-120sec]

Reflections & Gratitude

Optimising

Observation

Manual scanning ~32 orders took 10 min per driver;

Plus 2-4 min of assigning orders to driver mobile app

Before leaving for delivering first order, drivers stay back at TL’s desk until orders appear on the driver app, despite web app showing ‘dispatch assigned to rider successfully’

Calls between customer and driver are getting unsafe as driver has a need to interact with phone while driving.

Calls

45+ / shift

Incoming

~7

Outgoing

~38

App use

yes

Bypassing App

<2 instances

What it takes to ‘call a customer’

Interaction with phone:

Takes 3 clicks to make a call, 3 clicks to come back to app after call.

Communication:

9 of 12 drivers had headphones for hands-free talking.

Language doesn't seem to be a problem as words ‘delivery’ ‘20min’ give picture without a solid sentence.

What it takes to ‘receive customer call’

~7 of 30 calls done by driver are missed and customers call back.

There are 1/2 incoming calls from excited customers who are waiting for order.

Interaction with phone:

On incoming call, drivers had to use 7 clicks to access order details to give update to customer.

Solution Direction: Two

Collect Signature

Clear Signature

Confirm

Collect Payment

₹212.00

Payment Pending

Try another payment mode

Check Payment Status

2130...3049

Lenovo Laptop Skin 13” Blue

3 Shipments

2130...3048

Lenovo Laptop Skin 13” Blue

3 Shipments

Proceed

Manoj Baradwaj

Delivery

COD

2 Orders | 6 Shipments

1094, 4th cross, Opposite Bishop School, RBL Lane, M.G. Road, Bengaluru 560062

Ask Customer for the OTP

OTP is sent on the registered mobile number

0

Resend in

00:22

12:30

78%

Drop Location

Alert Customer?

Sending SMS to customer:

Delivery arriving in 24 minutes.

Send SMS

Quick alert to send ‘order arriving’ update to customers.

Delivery Partner // 12:31 PM

Hi, I am bringing your package with

order no 67996725 in 24 Min. I will

arrive at your doorstep by 12:55 PM

ConfirmBeforeSending: True;

While some of them are excited about

easy of communicating, most of them said:

Lesson learnt:

Customer-driver communications are 2-way

Driver informing about delivery updates.

Customer confirming availability at location.

Talking over call creates certainty and eliminates chances of delivery failure/reschedule.

Adding call button in order list.

Quick launch button to get back to app.


Incoming Call

After iterating on order discovery enhancements, I designed a order details popup on incoming call. (thanks, truecaller).


~7 clicks for incoming call are used to discover the order so that driver can give an ETA to customer.

Reasons for calls

I observed that drivers are calling to inform customer about upcoming delivery.

40 seconds

of loading

Orders list screen took about 40 sec to load.

Ran 8 simulations (data got averaged after 5) on OS1 app with 35 orders


Drivers wouldn't leave from dispatch manager’s desk unless they see the orders, therefore the delay would choke dispatch manager desk.

Why are drivers waiting

Collect Signature

Clear Signature

Confirm

Collect Payment

₹212.00

Payment Pending

Try another payment mode

Check Payment Status

2

12:30

78%

Home

Pending

6

Completed

0

Failed

0

After exploring the loading time issue developer and checking the network API response time, we identified that following grouping logic is causing a delay.

Locations (lat long) of orders assigned were verified and everything within 1km range are grouped as 1 task before populating on app;

Why this loading

Grouping is removed as it is irrelevant for the last mile use-cases.

18 seconds is still considered slow, and so I wanted to reduce furuther.

Industry average is 8 sec

(from competitor benchmarking)

Solution

Tested the new APK by running 6 simulations.

18 sec

45% faster

One click

removed

New Loading Time

Slow loading is caused by high data transfer as orders, shipments, and respective workflows are loaded in the beginning; as app was developed to work in async, to address no network locations.

Since urban last-mile usecases are fairy good network areas, async feature is moved to config and new ‘load nearby orders’ introduced.

Further enhancement

Option 1

Dispatch loading time is reduced to 3 seconds. Once drivers see list of orders, they start pickup an delivery without blocking TL’s time

Impact

3 sec

93% faster

But we should also know

if customer is at home or not!

customer:

okay, come!

customer:

calling from nallurhalli,

flipkart order for sanjay,

what time will you come?

How to eliminate the need for call?

Validating solution

To verify how drivers would use this feature, a figma prototype is handed over to divers.

Now that we established calls are mandatory,

while keeping the drivers in control of when to trigger message.

Alert Customer?

Sending SMS to customer:

Delivery arriving in...

10 Min

15 Min

20 Min

30 Min

Send SMS

When route is optimised,

time is auto populated

When route is not optimised,

driver can choose time

Delivery Partner // 12:31 PM

Hi, I am bringing your package with

order no 67996725 in 30 Min. I will

arrive at your doorstep by 01:01 PM

Basic ping

Late starts compress route time and hurt fulfilment.

Request customer to sign below.

Skip

Proceed

12:30

78%

Customer Signature

Confirm Order Delivery?

2 Orders with 4 Shipments will be delivered

Cancel

Proceed

Upcoming delivery alert message to next customer is triggered when ongoing order is marked complete.

Delivery Partner // 12:31 PM

Hi, I am bringing your package with

order no 67996725 in 24 Min. I will

arrive at your doorstep by 12:55 PM

Most drivers i.e. 8 out of 12 change the order of deliveries at least once a day. That’s why drivers should choose when to notify each customer about their delivery.

Solution Direction: One

Solution Direction: Three

Outgoing Call

How about we send an default text message on driver trigger, with ETA .

How can we reduce mobile usage while communicating with customer.

2 Orders | 6 Shipments

1094, 4th cross, Opposite Bishop School, RBL Lane, M.G. Road, Bengaluru 560062

Drivers receive calls from customers who would like to know ETA and/or customers who missed the call when driver tried calling.

driver:

delivery from flipkart madam, coming in 20 minutes, okay?

driver:

Wait, let me find your order, order ID?

Sorting time: 40-60 min / route

Avg. loading time: 10-12 min / driver

Avg. orders : 32 / driver

At times last driver leaves 2-hours from shift start

2130...3049

Lenovo Laptop Skin 13” Blue

3 Shipments

2130...3048

Lenovo Laptop Skin 13” Blue

3 Shipments

Proceed

Manoj Baradwaj

Delivery

COD

2 Orders | 6 Shipments

1094, 4th cross, Opposite Bishop School, RBL Lane, M.G. Road, Bengaluru 560062

12:30

78%

Drop Location

Ashish Kumar

2 Orders | 6 Shipments

1094, 4th cross, Opposite Bishop School, RBL Lane, M.G. Road, Bengaluru 560062

Delivery

COD

Mobile use on the job while driving.

Option 2

Alert Customer?

Sending SMS to customer:

Order out for delivery and next in queue!

Send SMS

Delivery Partner // 12:31 PM

Hi, I am bringing your package with

order no 67996725 to your doorstep.

Create a free website with Framer, the website builder loved by startups, designers and agencies.