Delivery in Mexico

DiDi Food Courier App: Promo bundle & Substitutions Workflows

DiDi Food Courier App: Promo bundle & Substitutions Workflows

DiDi Food Courier App: Promo bundle & Substitutions Workflows

COMPANY

DiDi

EXPERTISE

UX/UI Design

YEAR

08.2024-12.2024

TEAM

PM, 3 Engineer,

Marketing,

Data analyst

Delivery in Mexico

DiDi Food Courier App:
Promo bundle & Substitutions

Timeline


4 months · 2024

User


DiDi Food couriers fulfilling retail orders in Mexico

Role


UX Designer

UX Researcher

Illustration Design

Team


2PM

Ops specialist

3 Engineers

1 Data Analyst

COMPANY

DiDi

ROLE

PD

EXPERTISE

UX/UI Design

YEAR

08.2024-12.2024

Overview

I closed a critical gap in DiDi Food’s courier app for retail picking in Mexico. The app supported standard picking flows, but not the complex exceptions of real-store fulfillment.


I designed promo bundle validation and pre-checkout substitution to resolve these cases before checkout and keep orders moving.

I closed a critical gap in DiDi Food’s courier app for retail picking in Mexico. The app supported standard picking flows, but not the complex exceptions of real-store fulfillment.


I designed promo bundle validation and pre-checkout substitution to resolve these cases before checkout and keep orders moving.

Result


Streamlined the end-to-end ecosystem, optimizing the workflow from item picking to exception handling.

Value


Reached 77,000 monthly active couriers —improving courier usability and merchant trust and platform's revenue.

Impact

77K monthly active couriers

Order cancellations ↓ 18%

Average substitute processing time ↓ 43%

Result

Guided exception handling
Clearer in-app decisions
Faster stockout resolution

Product Area

Courier-facing Operations

Retail Fulfillment

Exception Handling

Result


Streamlined the end-to-end ecosystem, optimizing the workflow from item picking to exception handling.

Product Area


Courier-facing operations Retail fulfillment

Exception handling

Impact


77K monthly active couriers
Order cancellations ↓ 18%

Average substitute processing time ↓ 43%

Delivery in Mexico

DiDi Food Courier App:
Promo bundle & Substitutions

COMPANY

DiDi

ROLE

PD

EXPERTISE

UX/UI Design

YEAR

08.2024-12.2024

Feature 01

Buy-X-Get-Y Bundle Validation.

Problem Solved

When a promo bundle item was out of stock, couriers lacked a clear rule to follow, and the system failed to support proper handling.

Feature 02

Out-of-Stock Substitution.

Problem Solved

When an item was unavailable before checkout, couriers had no clear in-app substitution path, causing delays, manual coordination, and lost orders.

Designed the courier-facing experience


Designed UI, interaction patterns, and localized content.

Simplified a high-friction workflow

Reduced friction in issue handling within the picking flow.

Aligned operational logic across teams

Aligned pricing and settlement logic across Ops and Backend

What I Drove

User Problem

DiDi Food's courier app lacked the logic to handle grocery retail exceptions like complex promotions and inventory shortages, leaving couriers no a clear way to resolve orders before checkout.

Objectives

The goal was to create one in-app stockout flow before checkout that guided couriers to the right action—cancel bundle items or substitute regular items—to reduce cancellations and keep orders moving.

Challenge

The challenge was handling one stockout moment with two distinct rules: promo bundles had to be canceled as a whole, while regular items needed a substitution path before checkout.

How might we

How might we design intuitive, reliable exception handling during high-pressure picking so couriers can make accurate decisions and restore trust—while protecting revenue for the platform, profitability for merchants, and earnings for couriers?

What I Drove

What I Drove

Designed the courier-facing experience

Designed UI, interaction patterns, and localized content.

Simplified a high-friction workflow

Reduced friction in issue handling within the picking flow.

Aligned operational logic across teams

Aligned pricing and settlement logic across Ops and Backend

Aligned design decision across Ops and Backend

Before & After Design

Before & After Design

Before & After Design

User Problem

End-to-End fulfillment flow

DiDi Food's courier app lacked the logic to handle grocery retail exceptions like complex promotions and inventory shortages, leaving couriers no clear way to resolve orders before checkout.

Objectives

End-to-End fulfillment flow

The goal was to create one in-app stockout flow before checkout that guided couriers to the right action—cancel the whole bundle or substitute regular items—to reduce order cancellations and keep orders moving.

Challenge

End-to-End fulfillment flow

The challenge was handling one stockout moment with two distinct rules: promo bundles had to be canceled as a whole, while regular items needed a substitution path before checkout.

HMW

End-to-End fulfillment flow

How might we design intuitive, reliable exception handling during high-pressure picking so couriers can make accurate decisions and restore trust—while protecting revenue for the platform, profitability for merchants, and earnings for couriers?

Where the flow breaks

Where the flow breaks

Picking Was the Bottleneck

End-to-End fulfillment flow

Mapping the full flow revealed Picking as the critical bottleneck.

This is where digital orders meet shelf reality, so I focused on resolving unavailable items before checkout.

Two Failure Scenarios

Scenario 01

Promo bundle Failure


Partially fulfilled bundles led to unsolvable pricing disputes — ending in manual cancellation of entire bundles.

Scenario 02

Substitution Barrier


Couriers are powerless when items are out of stock. Lacking a digital way to suggest swaps, they waste minutes coordinating with customers via calls and text messages.

Two Failure Scenarios

End-to-End fulfillment flow

Scenario 01

Promo bundle Failure


Partially fulfilled bundles led to unsolvable pricing disputes — ending in manual cancellation of entire bundles.

Scenario 02

Substitution Barrier


Couriers are powerless when items are out of stock. Lacking a digital way to suggest swaps, they waste minutes coordinating with customers via calls and text messages.

Scenario 02

Substitution Barrier


Couriers are powerless when items are out of stock. Lacking a digital way to suggest swaps, they waste minutes coordinating with customers via calls and text messages.

One stockout. Two different fixes. The app had neither.

One stockout. Two different fixes. The app had neither.

Define the Decision Tree

Define the Decision Tree

So I turned those two fixes into one decision tree with two branches:

  • Promo Bundle: incomplete sets cannot be submitted.

  • Substitutes: customer choice first, then system recommendations, then manual search.

Zooming into the Picking Phase: To handle complex edge cases, I designed a "Bifurcated Decision Tree" that separates items into two distinct workflows:

  • The 'Hard Lock' for Promos Bundle: Strict validation for bundles (Buy X Get Y). If any part is missing, the set is cancelled to prevent delivering incomplete offers.

  • The 'Soft Path' for Substitute Items: Flexible substitution logic. The system guides pickers through 3 specific scenarios (e.g., user-specified vs. system-recommended) to find the best alternative.

A correct decision tree still has to survive the shelf.

Execution Constraints

Environmental constraints

Couriers make time-sensitive decisions while moving through crowded stores — often with limited attention and only one free hand. From desk research and remote field visits, I distilled four physical constraints that shaped the interaction design during picking.

Glove Use

Frequent removal is impractical; touch precision remains compromised

Low Attention

Picking is fast and interruption-heavy—couriers can’t read dense screens.

One-Handed Use

Often holding items or a basket, couriers need core actions within easy thumb reach.

Time Pressure

Average in-store time is short; trial-and-error cost is high

In-Store Picking Guardrails

I turned three of the four constraints into a design rule each. Time pressure isn't a fourth rule — it's the reason the other three can't slip.

01

Glove-friendly touch targets


  • Primary CTA buttons ≥ 48×48 dp

  • Button spacing: ≥ 16 dp to reduce mistouch

Glanceable status & rules


  • Keep promo/exception status persistent (chips + icons); details on tap.

  • Surface only critical numbers and the next action.

High Contrast Optimization: for bright outdoor use

  • WCAG AAA (≥7:1)

  • No low-contrast UI

02

Thumb-first, one-handed operation


  • Bottom 1/3 screen: high-frequency core actions

  • Top 1/3 screen: low-frequency actions

Thumb-Optimized: 65% screen coverage


  • Bottom 1/3 screen: high-frequency core actions

  • Top 1/3 screen: low-frequency actions

03

Key Insight

Reliability came from making the decision tree executable under real store constraints — not from defining the rules alone.

From decision tree & guardrails to workflow

Hifi Guided Workflow

To keep the decision tree’s complexity behind the scenes, I used strategic checkpoints.

Normal picking stays uninterrupted; exceptions only appear when the courier can still fix them before checkout.


Promo bundle picking

  1. Detect bundle item

  2. Validate required quantity

  3. Block incomplete submission

Out-of-stock exchange

  1. Detect out-of-stock item

  2. Prioritize customer choice

  3. Guide recommended/manual replacement


Promo bundle picking

  1. Detect bundle item

  2. Validate required quantity

  3. Block incomplete submission

Out-of-stock substitution

  1. Detect out-of-stock item

  2. Prioritize customer choice

  3. Guide recommended/manual replacement

Pre-launch: issues uncovered

Building the hi-fi flow surfaced four real-world issues beyond the happy path—localization, cognitive load, experience gaps, and validation constraints. These became the focus for our next iteration and testing plan.

Risk

Spanish runs ~30% longer than English. Will labels and buttons still fit?

My call

Reserved ~30% extra width up front, so Spanish never overflows.

Risk

How to cut cognitive load during rushed, interrupted picking?

My call

One decision per screen; short, literal copy, details only on tap.

Risk

One UI for everyone, or split by experience level?

My call

One UI for both — in-flow hints guide novices without blocking experts.

Risk

How to validate decisions with limited research bandwidth?

My call

Fast internal rounds with the DiDi ops team as proxy users — not a formal field study.

A flow that works in Figma still has to survive a real store.

From decision tree & guardrails to workflow

Toward the end of the design process

From decision tree & guardrails to workflow

Risks I designed around

Building the hi-fi flow surfaced four real-world issues beyond the happy path—localization, cognitive load, experience gaps, and validation constraints. These became the focus for our iteration and testing plan.

Risk

Spanish runs ~30% longer than English. Will labels and buttons still fit?

My call

Reserved ~30% extra width up front, so Spanish never overflows.

Risk

How to cut cognitive load during rushed picking?

My call

One decision per screen; short, literal copy, details only on tap.

Risk

One UI for all, or split by experience?

My call

One UI for both — in-flow hints guide novices without blocking experts.

Risk

How to validate with limited research bandwidth?

My call

Fast internal rounds with DiDi ops as proxy users — not a formal field study.

Design Trade-offs under limited dev resources

Case A:

Scalability

Problem: Illustrative design couldn't scale with promo complexity

Solution: From high-maintenance one-off design to scalability

Why: Moving from V1 to V2 was a strategic shift to ensure the app could handle complex, dynamic promotions without sacrificing Ul cleanliness or development speed.

Before

After

Before

After

Process Simplification

Problem: The original stockout flow was long, fragmented, and heavily manual.

Solution: Shorten the flow and guide couriers with a clear in-flow resolution path.

Why: A shorter, guided flow reduces effort, lowers decision burden, and helps couriers resolve exceptions more efficiently.

Before

After

Case B:

Error prevention

Problem: Popover hints were easily missed under pressure

Solution: Move bundle guidance from a hidden popover to a persistent footer rule.

Why: This shift prioritizes error prevention over minor space-saving, ensuring a smoother and more reliable checkout experience for all users.

Before

After

Process Simplification

Problem: The original stockout flow was long, fragmented, and heavily manual.

Solution: Shorten the flow and guide couriers with a clear in-flow resolution path.

Why: A shorter, guided flow reduces effort, lowers decision burden, and helps couriers resolve exceptions more efficiently.

Before

After

Case B:

Error Prevention

Problem: Popover hints were easily missed under pressure

Solution: Move bundle guidance from a hidden popover to a persistent footer rule.

Why: This shift prioritizes error prevention over minor space-saving, ensuring a smoother and more reliable checkout experience for all users.

Before

After

Process Simplification

Problem: The original stockout flow was long, fragmented, and heavily manual.

Solution: Shorten the flow and guide couriers with a clear in-flow resolution path.

Why: A shorter, guided flow reduces effort, lowers decision burden, and helps couriers resolve exceptions more efficiently.

Before

After

Case B:

Error prevention

Problem: Popover hints were easily missed under pressure

Solution: Move bundle guidance from a hidden popover to a persistent footer rule.

Why: This shift prioritizes error prevention over minor space-saving, ensuring a smoother and more reliable checkout experience for all users.

Before

After

Verifiable design impact

Impact

How do stakeholders like it?

Substitutions are much smoother now. If the customer already chose a replacement, I use it; if not, the app suggests a solid list—I pick one and send it, no more long back-and-forth.

Lily Au
Sr. Designer of DiDi Global

Substitutions are much smoother now. If the customer already chose a replacement, I use it; if not, the app suggests a solid list—I pick one and send it, no more long back-and-forth.

Lily Au
Sr. Designer of DiDi Global

Default quantities cut down the fiddling. If a Buy X Get Y promo isn’t complete, the app blocks it upfront, so I don’t have to call and explain—much more efficient.

Anoushka Halder
Courier of DiDi

Default quantities cut down the fiddling. If a Buy X Get Y promo isn’t complete, the app blocks it upfront, so I don’t have to call and explain—much more efficient.

Anoushka Halder
Courier of DiDi

What I learned

01

When Design Meets Engineering Constraints

Fixed launch dates and engineering constraints forced me to move away from a waterfall process, using interactive prototypes to surface trade-offs early and align decisions faster.
I learned that good design is not about maximizing flexibility everywhere, but about protecting non-negotiable business rules while creating feasible flexibility where it matters.

01. Fixed launch dates left design with minimal iteration time. I pivoted from waterfall handoffs to interactive prototypes, using them to surface trade-offs early and drive decisions faster.


02. Key trade-off: Maintained strict promo integrity (non-negotiable) while expanding substitute flexibility from "exact match" to "similar products"—balancing quality with feasibility.


02

Systematize the Workflow Before Optimizing the Interface

The core problem was not a bad interface, but an undefined workflow that pushed promo and substitution decisions onto couriers manually.
I learned to design for correctness first: turn messy human judgment into clear system logic, then gradually open up flexibility once the workflow is reliable.

Key Insight: The real problem wasn't "bad interfaces"—it was unstructured workflows. Couriers used calls and messages to manually validate promos and negotiate substitutes, creating unmeasurable inefficiency.


Design Approach: Strong constraints first, flexibility later.

  • Auto-filled promo bundle quantities

  • Blocked incomplete submissions

  • Curated high-quality substitute lists


Philosophy: Guarantee correctness first, then gradually open up flexibility—transforming business breaking points into
verifiable system capabilities.


Impact: Defined 3 pre-launch metrics (promo completion rate, exchange confirmation rate, processing time) to make hidden costs visible and optimizable.

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