DoorDash is the leading food delivery platform for restaurants in the U.S. In late 2020, it expanded into grocery delivery during the COVID-19 pandemic, entering a competitive space with Instacart, Amazon Fresh, Uber Eats, and Shipt.
I led design for Grocery Substitutions from 2022-2024, where I grew the MVP experience into a mature, thoughtful system across Consumer and Dasher mobile apps, web, and tablet for Merchants.
When I inherited Subs, it had very basic functionality and many gaps compared to competitors. Our mission was to figure out how we might understand Customer preferences for out of stock items, communicate those to Dashers and Merchants, and increase the amount of perfectly fulfilled orders.
The goal of Substitutions is to get customers exactly what they want when items in their order are out of stock. Understanding their unique preferences was essential to delivering a great experience.
Over 2 years, we ran numerous experiments to make it easy for customers to share their preferences with the least amount of effort, while providing flexible options for both hands-off customers and control seekers.
Below are highlights from 3 experiments.
how it started 🌱
how it's going 🪴
Getting substitutions right was critical to DoorDash’s success in the highly competitive grocery delivery market. Unlike in-store shopping—where customers can easily swap items—delivery customers rely on us to get everything they need, without surprises.
Poor substitutions or missing items don’t just frustrate users; they erode trust, hurt retention, and result in bad experiences like last-minute store runs. As a new player in grocery, fulfilling orders perfectly was essential to building customer loyalty, gaining traction, and driving long-term profitability.
Grocery shopping is deeply personal, and success hinges on getting customers exactly what they want. These projects focused on building our understanding of customer shopping preferences and sensitivity to things like cost, brands, flavors, and dietary needs—in simple, convenient ways.
Before I joined, the team launched a “Substitutions Hub” where customers could tell their Dasher what to do if items in the order were out of stock. Customers could select backup items, opt for a refund, or ask to be contacted. To make it effortless, similar items were auto-selected and preferences could be saved in 1-click.
‍
But instead of feeling seamless, the experience led to a surge in complaints—customers were receiving unwanted substitutes and often didn’t recall approving them. We hypothesized that customers didn't know how to save their preferences or thought this was too much work.
option to share preferences
the "Substitution Hub"
similar items are pre-selected
button saves all preferences
Customers don't have a goal to pick substitutions, but it's a necessary evil that helps us get them exactly what they want if things are out of stock. My job was to encourage customers to share as many of their preferences with us in the clearest, easiest way possible.
I led an overhaul of the Substitutions Hub, the heart of our team's domain, and set a strong foundation to build on. Overall, customers loved our new experience and found it very intuitive, unwanted substitutions greatly decreased, and customers rated our substitutions more favorably.
-5.70%
Missing Item issues decreased
+2.41%
Subs Rating improved
This work also reshaped how we thought about customer behavior. Behind the scenes, our team had numerous discussions about how to balance convenience, customer effort, our technical limitations, and driving positive outcomes. Some key takeaways:
Customers viewed 97% of substitution options and saved preferences for 92% of items, well above our 80% goal.
Initially, we worried about asking customers to do too much, but learned with the right experience, a little friction can create better outcomes. It's a balance.
I set out to simplify how customers share substitution preferences by making it clear what action is needed vs. not, how they can engage, and make customers feel like they're in control.
I redesigned the experience with clearer visual hierarchies using cards, introduced tabs to separate items needing attention from those already handled, added item-level controls for more focused engagement, and implemented several quality-of-life improvements to streamline the flow.
Customers can confirm their preferences for each item, which gives them more granular control and felt satisfying to use
customers can focus just on items that need attention
customers can pick subs for all items or just ones they care about
Although we saw strong engagement with substitution preferences, we realized most customers don’t think in SKUs—specific product codes used to identify exact items like "1 gallon of Horizon Organic High Vitamin D Milk.” In real life, people often just want a gallon of whole milk or a dozen eggs. Customers often think in broader categories we referred to as "goods."
We believed making customers choose precise SKUs as substitutes can feel tedious and overly rigid. It also created inefficiencies for Dashers—who had to hunt down exact matches—resulting in taking longer to find items and common staples being left unfulfilled.
milk
eggs
chicken
Sometimes customers aren’t that picky—and they should have an easy way to express that. For common grocery staples like milk, eggs, chicken, or wine—items they wouldn’t leave the store without—customers should be able to communicate their flexibility upfront.
Our goal was to let customers share their flexible intent, helping Dashers shop more like they would themselves. We believed this would give customers more control with less effort, empower Dashers to shop more efficiently, and reduce unfulfilled items.
By providing customers with the flexibility to approve goods (vs. SKUs) as subs, we were able to significantly improve Dasher picking efficiency and substitution quality. It made shopping easier for Dashers, as they found substitutions faster and felt more confident picking great substitutes, and customers got more of their items fulfilled.
-0.32s
Pick Time Per Item decreased
+$5.9M
GOV (Gross Order Value)
We also learned a ton about what preferences customers wanted to share with Dashers, which informed how we could evolve the shopping experience to feel more natural. For example:
“Whichever boxed green grapes are fine.”
“Kindly get 1 pound of salmon.”
“Please only purchase the basic square carrot cake. NOT the wedge slice carrot cake. Thanks!”
We introduced a generic “Good” option that let customers signal flexibility instead of selecting specific substitutes, added a space for customers to share instructions or shopping tips with their Dasher, and designed guidance to help Dashers confidently choose suitable alternatives.
Customers can approve a "similar item" as a substitute + share instructions with their Dasher
Dashers can pick items more freely, as long as they fall within our guidelines
Dashers have flexibility to suggest alternate items to customers
I partnered closely with UX Content to dial in the language to set clear expectations with customers about what substitutes they’d receive, minimize potential anxiety, and guide them with helpful hint text on how to give useful instructions to Dashers. We also refined messaging and notifications to keep customers informed about what Dashers picked and how to make changes if needed.
Our substitution system didn’t account for quantity, resulting in 27% of substitutions being up to 1.5x smaller than what customers originally ordered—leading to poor experiences and incomplete orders.
For example, if a customer ordered a 1-pound bag of Honeycrisp apples and it was out of stock, the Dasher might replace it with just one loose apple—far less than intended. Whether customers are ordering cereal, soda, produce, or meat, substitutions should match the quantity they originally needed.
1 apple for a bag
1 banana for a bunch
1 broccoli for 1 lb
20oz coke for a 6-pack
We aimed to make it effortless for customers to get and specify the right quantities for substitutions, while helping Dashers confidently pick the correct amount.
This was largely a systems challenge to introduce quantity controls across the entire substitution journey—from item selection during shopping, to the Substitutions Hub, to real-time decisions while Dashers are shopping. We also needed to design scalable quantity guidance across every item type in our grocery catalog.
If a customer orders a 1-pound bag of Honeycrisp apples and it’s out of stock, we now automatically recommend the right number of loose apples to match that weight.
Our smart quantity logic adapts when original and substitute sizes differ significantly—helping customers get what they intended, without extra effort. With only 1% of customers editing our recommendations, the experience drove higher satisfaction and contributed to growth and retention.
1.3%
Substitution Quantities Edited
+$7.45M
GOV (Gross Order Value)
For customers, we introduced "smart quantity" matching across the product experience, automatically suggesting substitution quantities that align with the total amount in the original order.
Customers automatically get the same amount of a sub as their original item
Customers quantity preferences are always saved for future orders and editable
For Dashers, we added clearer quantity types like “items” and “packs” to guide what to pick, built quantity guardrails to flag when selected amounts fall short, and unified how we display and ask Dashers to specify quantities in the app across 6 different flows to improve clarity and reduce errors.
Dashers can see exactly how many items they should pick as substitutions and have guidance when they pick too few items
Smart quantities auto-calculated
Consistent picking screens
Smart quantity guardrails