How I redesigned multi-item search on Zepto so grocery ordering could keep up with how users actually think

How I redesigned multi-item search on Zepto so grocery ordering could keep up with how users actually think

Speeding up multi-item ordering by ~70% through list-based search, lifting Search → ATC for active users

Speeding up multi-item ordering by ~70% through list-based search, lifting Search → ATC for active users

Category

B2C Mobile App

Deliverables

UX & Interaction

Context

Concept project

Year

2025

2025

Before: serial searches

Before: serial searches

After: one input, full cart

After: one input, full cart

For frequent grocery shoppers, building a multi-item cart on Zepto requires repeated, serial searches — adding friction to what should be a fast, habitual task.

Active users don't think in products or SKUs when ordering groceries. They think in lists. But Zepto's search experience expects users to approach the same task the way a first-time shopper might: one item at a time, with full attention on each query.

That mismatch is where the friction lives.

The goal of this concept was to improve how active Zepto users build carts when ordering multiple items — without changing how search fundamentally works. This work focused on reducing friction in everyday grocery ordering, where speed matters more than precision. The core challenges were:

A search flow designed for single-item intent

users had to re-enter search for every additional item

Noisy results at every step

users had to scan through variants repeatedly before adding anything

No concept of a "list" in the system

each item was treated as an isolated, fresh intent

I started with how users actually think about groceries

I started with how users actually think about groceries

The fundamental mismatch in Zepto's search wasn't a UI problem — it was a mental model problem. The existing experience was designed around a single unit of intent: one search query, one result set, one item added. But active Zepto users carry a full list in their heads before they even open the app.

Zepto's search expected users to:

  • Look for items one by one

  • Scan through noisy results repeatedly

  • Re-enter search for every additional item

    This creates unnecessary effort during what should be a fast, habitual task. The design couldn't just add a "multi-search" button on top of the existing system — the underlying assumption of single-item intent ran through the entire flow.

Zepto's search flow before — serial, stateless, no list awareness

Zepto's search flow before — serial, stateless, no list awareness

Separate search per item

Re-enter query each time

No list context carried ove

The solution couldn't change how search fundamentally works — it had to extend search to support multi-item intent natively. Instead of treating each item as an isolated query, the redesigned flow accepts a user's full list in one input and builds the cart from there.

SmartList after — one input field, full list resolved, cart prepared

SmartList after — one input field, full list resolved, cart prepared

Every constraint pointed to the same rule: add no friction

Every constraint pointed to the same rule: add no friction

This problem existed inside Zepto's most critical funnel — search to cart. The design space was narrow because the cost of getting it wrong was real: any solution that added complexity risked slowing users down more than the original problem did.

The solution had to work within hard boundaries:

  • Work within the existing search system — no new infrastructure assumed

  • Avoid disrupting familiar behaviors — users who prefer item-by-item search shouldn't be forced out

  • Handle real-world, messy input — "2 Amik 1l mylk", "iphine 513 gl"

  • Stay fast during peak usage moments — the feature had to be faster than the current flow, not just different

Users could not be expected to

Search patiently, item by item

Type perfectly structured queries

Spend time resolving variants repeatedly

The system could not assume

Clean language input

Single-item intent per session

Extra time or attention from repeat users

Any added complexity risked slowing users down instead of helping them. This constraint — that the solution had to be faster than the current flow, not just different — governed every single design decision that followed.

The experience was designed to feel like writing a grocery list — not using search

The experience was designed to feel like writing a grocery list — not using search

The experience was designed to feel like writing a grocery list: not using search.

After restructuring the problem around list-based intent, the UX question became: what does it actually feel like to enter a full grocery list? The flow works as follows:

  • Users enter their full list in one go — messy, natural language, quantities included

  • The system interprets items, quantities, and preferences

  • Ambiguity is resolved only when necessary — not upfront, not in batch

  • A complete cart is prepared without repeated searching

    List→Review→Checkout

    Removing the review step from the equation entirely was not possible within the constraints — but collapsing it to one moment instead of one moment per item was. The goal wasn't to eliminate decisions; it was to batch and defer them so users stayed in flow.

Active users don’t think in products or SKUs when ordering groceries.

They think in lists.


But Zepto’s search experience expects users to:

  • Look for items one by one

  • Scan through noisy results repeatedly

  • Re-enter search for every additional item

This creates unnecessary effort during what should be a fast, habitual task.

Left: single list input. Right: clarification triggered only when intent is ambiguous — one moment, in-place.

Absorbing ambiguity into the system, not onto the user

Absorbing ambiguity into the system, not onto the user

The hardest part of this problem wasn't input: it was ambiguity.

Any grocery list contains items that can't be resolved to a single SKU without more context — "bread," "oil," "chips." The naive solution is to ask the user upfront: which brand? which size? But asking those questions at input time defeats the purpose of a fast, list-driven flow.

Instead of pushing decisions early:

The system waits until intent is unclear

high-confidence matches go straight to cart

Clarification happens in-place, with minimal interruption

one item at a time, inline, not in a separate screen

Common preferences are reused automatically

past choices reduce future ambiguity

This allowed the experience to stay fast while still remaining accurate. The complexity wasn't removed — it was absorbed by the system and surfaced only when the user's input genuinely required a decision.

System state during processing — high-confidence items resolve silently; only genuine ambiguity surfaces a check

System state during processing — high-confidence items resolve silently; only genuine ambiguity surfaces a check

A search experience that meets users where they are

A search experience that meets users where they are

After restructuring the flow around list-based intent and building ambiguity resolution into the system rather than the user's workflow, the final state was a redesigned search experience that:

  • Accepts how users naturally think and type

  • Reduces repeated effort across a multi-item session

  • Converts a messy, natural-language list into a ready-to-checkout cart

    No repeated searching.

    No scanning through variants.

    No unnecessary decisions.

    By shifting search from SKU-by-SKU lookup to list-based intent, this concept removes one of the most persistent frictions in Zepto's ordering flow for frequent users. The experience aligns better with real grocery behavior while fitting cleanly into Zepto's existing ecosystem.

Projected Impact

Projected Impact

Intent to delivery: made Zuperfast

Let's have a chat

Let's have a chat

Say Hi

Say Hi

For frequent grocery shoppers, building a multi-item cart on Zepto requires repeated, serial searches — adding friction to what should be a fast, habitual task.

Active users don't think in products or SKUs when ordering groceries. They think in lists. But Zepto's search experience expects users to approach the same task the way a first-time shopper might: one item at a time, with full attention on each query.