Catering support, on one console.
Catering orders placed through Whole Foods Market on Amazon were supported with tools from two separate ecosystems, so agents struggled to find an order and kitchens received changes with details missing. As Amazon brought Whole Foods into its ecosystem, I designed catering support to run on the same console as the rest of Amazon Customer Care.
My goal was to give catering support the same tools as the rest of Amazon Customer Care, so an agent can find, change and hand off an order from one console.
Mapping the current state before designing for the gaps
Before I drew any screens, I traced a catering order from the customer through support to the kitchen, using a stakeholder workshop, a journey map, interviews and a map of every tool in use. That work produced the list of gaps I designed the console against, and showed which parts Amazon had already solved.
01Discover
Running an insight workshop with both teams.
I started the project with a workshop between the Whole Foods on Amazon team and Whole Foods Catering stakeholders, to document how catering support actually worked at the time. Every open question about the current process went up on the wall, and we grouped them by theme before triaging any.
The themes set the scope for the rest of Discover: walking the journey an order takes, and talking to the agents and kitchen teams who handle it.


01Discover
Mapping the order journey before the tools.
I walked the journey first without reference to any tool, as the sequence of steps a catering order actually passes through. I mapped the tools under each step only after that.
Drawing it in that order made the gaps visible. Blanks and question marks on the channel map mark the steps where nobody in the room could name the tool being used, and I carried those unknowns into the full ecosystem map in Define.


01Discover
Interviewing support agents and kitchen teams.
I interviewed support agents and kitchen team members separately, and they described the same failure from opposite ends. Agents couldn't find the order a customer was asking about, and kitchens couldn't act on the request they were sent because details were missing.
The six statements that named the problem most directly are quoted here as they were said. Each one is answered by a specific flow in the final console, and in the solution section below I paired every flow with the quote it responds to.
It is such a waste of time to have to switch between tools or screens to find orders.Support agent
I just want all the actions I need in one place.Support agent
We often receive incomplete or unclear requests, because agents don’t have the right information upfront.Kitchen team member
I always have to search using an email or phone number, and sometimes that isn’t enough to locate the order.Support agent
We don’t always know which orders are urgent or require immediate attention.Kitchen team member
It takes too long to find the right order when a customer isn’t authenticated.Support agent
02Define
Affinity mapping the interviews into a composite.
I affinity mapped the interview notes by theme and flagged each friction point individually for redesign, so the work that followed was scoped against named problems. I wrote a composite kitchen team member to hold the findings in one place: what she needs, and what gets in the way. Every line attributed to her was said by someone in the interviews.
Her three needs became the criteria I designed the console against. Order details had to arrive complete, changes had to reach the kitchen before prep started, and there had to be one place to check instead of four.
We relied on back and forth calls with customer service just to work out what went wrong. It felt like we were constantly playing catch-up instead of focusing on the food.
Cathy is not a real person, but everything she says here was said by someone.
- Order details that are right the first time
- Changes that reach the kitchen before prep starts
- One place to check, not four
- Orders arriving incomplete or late
- Last-minute changes she hears about second-hand
- Systems that do not talk to each other
- Peak catering season, when none of it can wait
02Define
Mapping the current-state tool ecosystem.
Working alongside developers, project managers and end users, I mapped the current-state tool ecosystem end to end, with the tooling for each channel laid against the journey it has to serve. Names and systems are scrubbed here, but the structure and the state of each touchpoint are as I found them.
Of 102 touchpoints across six channels, 15 handled the same information in more than one tool, 18 were a gap or an unknown, and only 6 were working well. That list of duplicates and gaps is what I scoped the design work from. Office workers have been measured switching between applications around 1,200 times a day, and the time spent picking the task back up again adds up to 9% of the working week.1 Hand-keying the same values into a second tool adds errors. One study compared values people had typed in against the same values captured electronically, and 3.7% of the typed entries were wrong.2 Both costs land on the agent who is copying an order between screens while a customer waits, which is why I kept the order, the customer's context and the contact in one panel in the final console.
Duplicated 15 Gap or unknown 18 In place 53 Works well 6 Not applicable 10
Scroll the map sideways to read it.
The map is a table of six sales channels against seventeen journey steps. Each cell names the kind of tool used and its state: in place, works well, duplicated, a gap or unknown, or not applicable. Totals for each state are given in the key below the map.
02Define
Drawing a service blueprint of the catering order.
I drew a service blueprint for the catering order, with swimlanes for customer actions, front-stage agent actions, back-stage actions and the support processes underneath them, separated by the line of interaction, the line of visibility and the line of internal interaction. A journey map stops at what the customer does, so the back-stage work and the tooling under it only appear on the blueprint.
I wrote the back-stage lanes from the agent and kitchen interviews and not from the process documentation, so the handoffs and the waiting ended up on the sheet. The handoffs from an agent to a lead and from an agent to the next team were where details were being lost, and I turned them into the ask-a-lead and warm transfer flows. In NN/g's survey of 97 practitioners, fewer than half said customer support was involved in their blueprinting at all.3 I gave the blueprint a version number and the date of its last update, and kept earlier versions instead of overwriting them, so a change to the service could be traced back to the decision behind it.
03Develop
Auditing Amazon's existing support components.
I audited every Amazon support component and workflow against the catering tasks before drawing any new screens. The audit set the scope of the build: wherever Amazon already had a pattern for a task, the catering flow used it, so my design effort went into the gaps from the ecosystem map and agents met patterns they already knew. Rebuilding a component Amazon already maintained would have left two copies to keep in step. Where duplicated code has been measured in production systems, 52% of it had already drifted from the original, and the differences were turning into defects.4
Scroll sideways to follow the flow.
03Develop
Designing for the catering-specific gaps.
The gap list named the surfaces catering has no equivalent for anywhere else in Amazon, such as pickup details and an order history that marks each stage of a catering order. I designed those from scratch, along with a handful of places where an existing component did not fit the task.
I held color to 4.5:1 on text and 3:1 on the controls and icons. Status is never carried by color alone, because red-green color deficiency affects around 8% of men, so every state carries a label or a shape as well.5 I set the type scale in Amazon Ember, the typeface the rest of the console already used.
Scroll sideways to follow the flow.
03Develop
Extending Amazon's design system for catering.
I extended Amazon's existing design system for the catering work instead of starting a parallel one. A component entered the shared layer only where the same need turned up in more than one place and nothing already in the system covered it, and everything else stayed local to catering.
Every component shipped with usage guidance as well as a specification: when to reach for it, when to reach for something else, and what it deliberately does not cover. Asked what made somebody else's library hard to work with, 334 developers rated documentation problems the most severe obstacle of any they were asked about.6
Releases followed semantic versioning, which forces a decision about what counts as the public contract. I treated component props, token names and class names as part of it, because product teams were depending on them whether or not the system said they could. A deprecation carried a replacement, a removal date and a named owner. Teams keep writing new calls against deprecated code after a deprecation is published, which is why the date and the owner were part of it.7
Requests for new components came in through a single intake, and I answered each one with a variant, a new component or a no. At launch I handed the system to Amazon's team with the documentation, the intake route and the release history behind it, so it didn't depend on me. Across 133 popular open-source projects, two thirds would be stranded by the departure of one or two people.8
04Deliver
Testing the console with agents through launch.
I ran visual design and user testing through to launch on the unified platform. The flows below are the console's core support tasks, and each one is tied back to a problem agents or kitchen teams named in the interviews.
One console, built on Amazon's own patterns
Catering support now runs in the same console as the rest of Amazon Customer Care, with the order, the customer's context and the actions that resolve a contact in one place. I paired each flow below with the interview finding it answers.
-
Starting a shift It is such a waste of time to have to switch between tools or screens to find orders.
Support agentThis is where an associate starts a shift, before any contact comes in. A region is selected and the associate signs in. Choosing a work type moves the status from Offline to Available, and the first contact loads with its match cards already populated, so the likely orders are in front of the agent before any searching starts. -
Finding the right order It takes too long to find the right order when a customer isn’t authenticated.
Support agentIn this example workflow, a customer is calling about an order that is not among the six match cards the contact opened with. Searching by email or phone number was often not enough, so a guided match asks three questions to narrow the issue to an item the customer can name, then an open search takes over. A misspelled term returns nothing; a corrected one returns six of 18 results, and the matched item takes its place among the cards. -
A chat, end to end I always have to search using an email or phone number, and sometimes that isn’t enough to locate the order.
Support agentIn this example workflow, a customer writes in over chat in Spanish. The contact is accepted and the match cards populate with the order already attached, so there is nothing to look up. The transcript of five prior messages is expanded in place, and suggested replies are selected into the input. Every message is labeled as translated. One message fails to translate, the error offers a transfer, a Spanish-speaking associate joins, and the contact closes into after contact work without the agent leaving it. -
Asking a lead without leaving the customer We don’t always know which orders are urgent or require immediate attention.
Kitchen team memberIn this example workflow, a customer's platter is missing from a catering order with the event under an hour away. A lead is asked for from inside the contact. The request takes an issue type and a short summary, so the urgency travels with it, and the panel header changes from waiting to the lead's name once the lead joins. The panel is minimized so the customer keeps being answered, and a new message from the lead raises a badge on it. -
Handing a call over warm We often receive incomplete or unclear requests, because agents don’t have the right information upfront.
Kitchen team memberIn this example support workflow, a customer's cheesecake had arrived damaged ahead of a dinner. The matched item is opened and its delivery details expanded, then a transfer drawer opens under the session controls. Channel and destination are chosen in sequence, with each control enabled only once the one before it is set. The customer is held while the call connects, and after call work opens with the issue details already sent on, so whoever picks it up doesn't have to ask again. -
Email in one panel I just want all the actions I need in one place.
Support agentIn this example workflow, a customer has emailed in with four attachments. The email is read alongside its match cards, in the same panel as everything else. The attachments are expanded and downloaded together with progress on each file, and the order ID is copied in one click. Two unresolved emails from the same customer are expanded for context and collapsed again. Reply opens the composer in the same panel. -
The same panel, failing18 touchpoints on the ecosystem map were a gap or an unknown.Current-state ecosystem mapI designed the error states at the same time as the happy path, so a failure tells the agent what happened and what to do next instead of leaving them to work around it in another tool. In this example workflow the connection drops partway through. Customer issue details does not load and recovers on retry, a download fails and every attachment is marked, then a second attempt brings down three of four files. The last one fails through two more retries, the retry link becomes a link to report the problem, and the customer is answered with the attachments that did arrive.
One place to check, not four
Amazon Fresh and Whole Foods Market Customer Care work from the same console instead of across two ecosystems. Agents find the order, see the customer's context and resolve the contact without switching tools, which answers the first problem agents named and the 15 duplicated touchpoints on the ecosystem map.
Built on Amazon's existing components
The component audit let me keep the patterns agents already knew and put design and development effort into the catering-specific gaps, instead of rebuilding components Amazon already maintains and leaving two copies to drift apart.
Handoffs that carry their context
Ask a lead and warm transfer send the issue type, a summary and the order details along with the request. That covers the handoffs on the service blueprint where details were going missing, and the incomplete requests kitchen teams described in the interviews.
Sources
- Murty, R. N., Dadlani, S., & Das, R. B. (2022). How Much Time and Energy Do We Waste Toggling Between Applications? Harvard Business Review. 137 users across 20 teams at three Fortune 500 companies, observed for up to five weeks. Read it
- Mays, J. A., & Mathias, P. C. (2019). Measuring the rate of manual transcription error in outpatient point-of-care testing. JAMIA, 26(3), 269 to 272. 6,930 values entered by hand by 506 staff across 60 clinics, checked against the same values read electronically. Read it
- Kendrick, A., & Gibbons, S. (2019). Service Blueprinting in Practice: Who, When, What. Nielsen Norman Group. 97 practitioners across B2B, B2C, finance, government, healthcare and nonprofit, self-selected. Read it
- Juergens, E., Deissenboeck, F., Hummel, B., & Wagner, S. (2009). Do Code Clones Matter? ICSE 2009. Five production systems, roughly 900 clone groups assessed by hand and adjudicated by the systems' own developers. Read it
- W3C (2024). Web Content Accessibility Guidelines 2.2, success criteria 1.4.3 and 1.4.11. Read it Prevalence from Birch, J. (2012). Worldwide prevalence of red-green color deficiency. Journal of the Optical Society of America A, 29(3), 313 to 320. Read it
- Robillard, M. P., & DeLine, R. (2011). A field study of API learning obstacles. Empirical Software Engineering, 16(6), 703 to 732. Follow-up survey of 334 developers drawn at random from 1,936, after 28 interviews and an earlier survey of 80. Read it
- Sawant, A. A., Robbes, R., & Bacchelli, A. (2017). On the reaction to deprecation of clients of 4 + 1 popular Java APIs and the JDK. Empirical Software Engineering. 25,357 client projects across five APIs. Between 95% and 100% of clients added new calls to deprecated elements after the deprecation was in place. Read it
- Avelino, G., Passos, L., Hora, A., & Valente, M. T. (2016). A novel approach for estimating truck factors. ICPC 2016. 133 popular GitHub projects across six languages; 65% have a truck factor of two or fewer. Read it