A UX Iteration on the Instacart App: Designing for the Shopper Side

A spin off on designing for the other side: a personal shopper’s perspective.

So who doesn’t know about Instacart?

If you know Silicon Valley, you know Instacart is the “hot billion-dollar-valuation company” right now. It’s one that relies heavily on its app functionality (similar to the Uber app). But that doesn’t mean it doesn’t come with its own share of problems.

Normally designers would renovate the customer experience, but I wanted to go in the back-end, to figure out what kinds of problems your personal shoppers had with the app.

In order to do that,

“I got a job as a bagger and figured out that many people have the same issues in the app.”

Here’s a little intro to the other side:

Instacart Company Goals:

Instacart relies heavily on it’s 1 hr delivery service, guaranteed. In order to achieve this goal, I pronounce to you: shopper metrics:

  1. Speed: the faster the shopper, the more orders they can do in an hour (the race is on!).
  2. Customer satisfaction: the more happier the customer, the more they will reorder.
  3. Reliability-just show up, that way the app knows you’re working.

In order for Instacart to get its shoppers to fulfill company goals, they give incentives:

Personal Shopper Incentives:

Here are your perks if you have the best metrics:

  1. More Hours: you get to work more hours
  2. Flexibility: first dibs in the hours you choose to work (in case you want to sleep in, or have yoga at 10).

A Survey of Problems

I talked to five shoppers who expressed their frustration with balancing speed and customer satisfaction. Let’s meet one of the shoppers:

Identify Problems

Meet Ariel, one of Instacart’s Personal shoppers.

Ariel is a super speedy in-store shopper at Instacart.

“An order of groceries can take up to 45 minutes to find, I can do it in 15 minutes or less. But when a customer adds new items, it can take me over that limit.”


Check point:

Ariel has 2 important needs she must satisfy to get high metrics:

  1. Speed: she goes as fast as she can. But there are things that slow her down: replacements, new items, app restart, connectivity issues. This totally blows if you only have 70 seconds per item.

2. Customer satisfaction: customers can give low ratings to their personal shopper. This can be for anything: bad replacements, item out of stock, not responding, etc.

I’m on a mission to help Ariel meet her needs, she’s gotta get to that yoga class at 10!

Prioritize Needs

From Q&A sessions and behavior observation, I can now organize Ariel’s needs.

By breaking it down from metrics into smaller actions that affect them, I can figure out which ones to prioritize.

Looking at the list of actions above, I start to feel the “feature creep” [def: tendency to want to add more features and expand the project].

Must. Resist.

“Let’s start with one design problem at a time.”

You hear that all the time, and that rings true for design. Juggling too many things at once can cause subpar fixes for multiple needs, instead of 1 great solution for 1 need.

So let me start with the (bolded) yellow actions where there is currently no technical fix in the app.

These action items can be broken down into more specific processes that occur during an action scenario:

Refocus: Remember that we’re trying to help Ariel solve two of her specific needs that affect her metrics.

User Story: User Focused

Let’s figure out a user story to answer the question: “What does Ariel want to accomplish by using this app?” This will help me remember that app functionality is ultimately focused on user experience.

“Ariel starts shopping and a customer wants to add a few new items(trigger event). Ariel wants to make sure to get the right item and the amount (action) so that she can check out faster and more accurately(user goal).”

Create a task flow

A designer’s best friend-the ultimate blueprint before the design. Task flows help me see each step of the current design process, and figure out how the user currently perform their tasks.

Refocus Priority:

We need to create a task flow that includes two of the prioritized Actions:

  1. Add customer’s new items
  2. Customer’s response on new items

Let’s simplify this by naming this new feature “add items”.

Instacart’s current task flow + insertion of new feature:

Let’s now create a more detailed specific task flow for the actual steps that occur in “add items.”

What does this task flow achieve?

This task flow helps me figure out the current amount of steps it takes before proceeding to checkout. Each screen defines a user action (in this case, 1 screen = 1 text message).

This task flow helps me organize ideas in two ways:

  1. See which steps are crucial and which ones I can eliminate, if necessary.
  2. Figure out which steps I can automate for efficiency.


Let’s go back and Refocus on our 2 needs: Ariel wants to

1) add new items quickly, then

2) verify with customer:

Do you see the problem here? There’s only 2 needs, why are there 6 steps for just two needs?!

Create simplified flow:

I then created several task flows, working to minimize the number of steps. While doing so, I discovered that some steps can be combined and/or automated hence reducing interactions back and forth into just one.

I created several task flows to figure out different solutions. It’s also very important to consider the pros/cons of minimizing steps.

After several task flows, I finally narrowed it down to a task flow with the most minimal amount of steps without sacrificing user verification that solves the 2 needs. Just 2 steps!

Refocus Needs:

  1. Customer add new items
  2. Shopper verifies new item request

In order to:

  1. Increase speed

Company Goals:

There was too much texting back and forth, which created a lot of time interference. By replacing manual interactions with automated ones, this reduces shopper/customer engagement when unnecessary.

Let’s make sure this aligns with the company’s goals:

Increase speed = more $$

What’s Next?

At this point, I would create several wireframes using heuristic design principles. As the designer, I would then work with the product manager and developers to discuss implementation details.


Then, I would build a prototype, hand it off to developers, then start a usability test.

*I’m just a curious self-taught designer who likes to optimize things from all angles. I’m currently juggling multiple freelance projects, so I won’t be open to new design projects. But if you have a design challenge, let’s discuss =)