Bootcamp

From idea to product, one lesson at a time. To submit your story: https://tinyurl.com/bootspub1

Follow publication

Note: Medium does not allow image descriptions longer than 500 characters. Therefore, some image descriptions will be simplified. I’m not an English native speaker, so I apologize for any lack of details. This is the first image, a composition showing sketches, wireframes, user flows. On top of them, two mobile devices display iFood’s user interface mockups. The iFood brand is displayed at the center.
Sketches and user flows that were prepared during the iFood app redesign process.

Case study: Redesigning the biggest food delivery app in Latin America

In 2015 I led the UX team responsible for solving iFood's user evasion problem on onboarding and checkout funnels

Henrique Perticarati
Bootcamp
Published in
10 min readOct 22, 2021

iFood is the biggest food delivery app in Latin America. Invested by Movile and Just-Eat, it connects 14mi users with 270k restaurants and is evaluated in US$1bi. In Brazil, iFood is almost synonymous with food delivery, and in 2015 it already had an 80% market share.

This article covers our design process from problem understanding through the solution proposal and implementation, encompassing SWOT and metrics analysis, heuristics evaluation, proto-personas, high-fidelity prototyping, and guerrilla user testing. Happy reading :D

Project goals

iFood’s exponential growth happened thanks to an aggressive company buying strategy. It helped them to reach and maintain its status as the market leader at the cost of compromising user experience in their apps. User evasion on signup and checkout funnels was the biggest symptom. The company also wanted to get featured on App Store and Google play as a marketing strategy.

Problem understanding

SWOT matrix content. Strengths: Market leadership, Strong mobile presence, A good relationship with Apple and Google, A good relationship with 5k restaurants, and Experienced developers. Weaknesses: Low retention, Poor Usability enables evasion, High user acquisition costs, and Inefficient location mechanism. Opportunities: Majority of Android users, 75% of restaurants accept online payments, and Filtered oriented Navigation. Threats: Biggest brands launching their own apps, and Online frauds.
SWOT analysis matrix

SWOT analysis

My team and I prepared a SWOT matrix to evaluate how internal and external factors would affect the project. Market leadership and good relationship with Apple and Google were the top Strengths. Low user retention, acquisition costs, and poor usability were the top Weaknesses. As an Opportunity, 75% of the restaurants received online payments, which was connected to the online frauds Threat.

Metrics analysis

Ordering data was pulled from Google Analytics and Facebook Apps and turned into spreadsheets. We sought patterns to segment users by their ordering frequency. After a deep analysis, we learned the following:

  • 7% of users were responsible for 46% of orders, ordering four times per month or more. We called them heavy users.
  • 47% of users were responsible for 44% of orders, ordering once to three times per month. We called them regular users.
  • The final 46% of users were responsible for 10% of orders, ordering once per year. We called them unique order users.
  • New users would have to make six orders to cover their cost of acquisition.
  • 33% of evasions would occur on the first screen of the app: a wall where users should input their addresses.

User flow mapping and heuristics evaluation

We mapped all user flows, for both Android and iOS, followed by a heuristics analysis. We immediately noticed an unnecessary step in the onboarding: every time the app was opened by either a new or returning user, a complete address should be provided before accessing the rest of the app.

A section of a user flowchart displaying some of the iFood’s previous Android app screens. At the center, highlighted screens display iFood brand in white over a red background, below the brand, three buttons labeled in Portuguese: "locate me now", "search for ZIP code or street name", and "Login".
You can download here the PDF files with the complete user flows for iOS and Android apps (in Brazilian Portuguese).

The apps were not using common auto location technologies, but legacy tech that forced the users to fill the state, city, street address, number, and apartment number fields. The app provided an easy address search via ZIP code (very common in Brazil), but it didn’t allow users to complete the address when the same ZIP code was used for an entire small city (also very common in Brazil). This violated the "user control and freedom", "flexibility and efficiency of use", and "match between system and the real world" heuristics.

After a thorough analysis, all heuristics violations were listed and grouped and then compared to the metrics findings and project goals to provide a better understanding of where to focus our efforts.

Pot-it diagram displaying heuristics and their violations. 1. Visibility of system status: No push notifications about order status; 3. User control and freedom: Once in the cart there’s no easy way to edit dishes or to add new ones from same restaurant; 4. Consistency and standards: Different components performing the same jobs across the app. 7. Device’s location or previous adresses aren’t recovered; No shortcuts to repeat previous order or to find the most used restaurants;
Heuristics and their respective frequent violations.

Proto-personas

We decided to focus on two user segments: heavy users and unique order users. The first represented a good opportunity to simplify frequently performed actions, and the latter was a clear match with the project goals. These user segments were turned into proto-personas with clear and distinct goals. Providing a better experience for them would mean that regular users would also benefit.

Proto-personas: Cláudio Pires, 32: Heavy user — Works at the selling department of a company. Travels a lot, frequently to the same places. Orders at iFood twice a week. "I always do the same order. But every time I have to start it from scratch" Roberta Souza, 20: New user — Studies at a Marketing school. She is at a friend’s home, working on a project. They’d like to order pizza for dinner. "I don’t like ordering pizza by telephone, it takes too long and sometimes there are misunderstandings"
The proto-personas emphasized the user segments, provided distinct scenarios and listed users' goals.

UX Canvas

The findings from previous steps were summarized in a UX canvas, emphasizing the primary personas, context, and scenarios of use, key features, and value proposition. Note how, at this moment, we had a much clearer problem definition.

A UX canvas containing 8 sections: Primary personas; Contexts of use; Scenarios of use; Key Features. Legacy; Business requirements; Technical requirements; At the center, "Value proposition" section is highlighted: New users will easily find restaurants based on their location and make their orders with less friction, reducing funnel evasion. Heavy users will make their frequent orders in a fraction of the current time. Other sections were omitted from description.
The UX canvas allowed us to keep on track regarding the project goals.

It may seem that the design process was linear. But most of the activities were overlapped, every discovery would trigger a new revision and a new approach. As taught by J. J. Garrett, instead of “finishing each step before starting the next one”, we focused on “finishing each step before finishing the next one”.

Designing the solution

All previous steps were focused on problem understanding and discoveries summarizing. At this point, we began our design propositions. We handled issues of all types and proposed improvements to the most used flows: restaurants and dishes searching, filtering, and browsing, order delivery status, notifications, repeating previous orders, credit card management, etc. I’ll focus the following examples on the location and cart evasion problems, to keep the article short.

An image composition displaying various UI design sketches, without emphasizing any specific one.
Some of the many sketchframes that were prepared during the process. Sometimes, they can get real sloppy, like this one.

Design principles and UX Goals

From what we learned on the previous steps, we compiled a list of UX goals and prepared a Design principles document to guide the team on the decisions to follow. Each Design principles was custom made or adapted for this project from other broadly accepted design principles (like Google’s), being closely attached to the project goals. These documents were also used during the quality assurance process, as a reference guide to validate the implemented solution. Although the UX goals would get updates according to the project development, the Design principles were our constant guidance through the next steps.

An image composition displaying two sheets of paper. The first is titled "Design principles", and displays a list of contents like: "Ask less, remember more Anticipate the user’s input needs. The less the user has to configure the app to place orders, the better". The second is titled "UX goals" and displays a list of contents like "Simplify sign up and login forms: Reduce complexity by making use of auto-complete and contextual form field validation".

Prototyping

Just like during the problem understanding, this phase had overlapping activities: sketchframes being done at the same time as user flows and prototypes. I drafted dozens of proposals to quickly visualize if things seemed to make sense. Ideas that looked solid would be turned into mid-fidelity prototypes and this was repeated every time a new idea came up.

On the left, static hand-made sketches showing the user location flow. On the right, an animated mid-fidelity prototype showing the same flow: the iFood app’s empty home screen. At the top of the screen, the main navigation bar is present. At the center of the screen, a card asks the user to choose how she would like to provide her location. A mouse cursor clicks on the “use my GPS location” and the screen reloads, being filled with a restaurant list.
The solution for the location problem starting to take form.

For the location problem, the proposed solution was to give users access to the app and the restaurants' list before choosing a complete address. The app would automatically use the device’s GPS approximate location and the remaining address information would be completed during checkout. That way, users could immediately get access to the restaurants list. The address would be fixed in the header, so users could always check if the information they were seeing was relevant to their location.

On the left, static hand-made sketches show a shopping cart at the bottom of the app’s screen. On the right, an animated mid-fidelity prototype showing an animation of the cart appearing from the bottom of the screen once an item was added from the restaurant’s menu to it. A mouse cursor clicks on the “proceed to checkout” button, and a shopping cart screen appears. The mouse cursor clicks on the “proceed” button, and a complete address form appears.
Solutions for a single problem would sometimes be spread along the whole user journey.

For the checkout evasion problem, we proposed to isolate the shopping cart from the rest of the app navigation. The cart would be shown only when items were added to it and the entire checkout flow would happen inside a modal screen, so users would only have the option to cancel or proceed with the current order. A new “Add more items” button was added to the cart, allowing users to easily add missing items from the same restaurant they were ordering from.

The other problems and UX goals, like menu browsing, searching for restaurants, and filtering, were handled the same way.

Iterating solution proposals

The problems we were trying to solve involved specific interactions with forms. It was important to us that users could test those interactions in realistic prototypes from onboarding to checkout. Linked PNGs would not do the trick this time, so I chose to prototype with Axure RP to make use of advanced widgets, states, and variables. The images were taken from iFood’s database and the icons were used from the Icons 8 free plan.

A screenshot of the Axure RP desktop app, with many panels, opened displaying advanced features. At the center, a screen of the iFood app prototype is being edited.
Axure RP was the main tool I used to build complex prototypes for testing.

As the users interacted with the prototype, they believed it was the real app. I wanted this to happen so they would test it without lowering expectations and avoiding behaviors they could expect to generate prototype glitches.

Guerrilla testing

In a lean way, we adopted guerrilla usability testing so we could approach potential users in coffee shops, learn with their tests, fix critical issues, and then approach more users. This saved us a lot of screening and scheduling time, at the cost of occasionally having to discard users for not being focused on the test.

An animated GIF displaying a recorded guerrilla usability test. A mobile device displays the iFood app prototype while a pair of female hands use it, choosing an address location, choosing a restaurant from the list, viewing the menu, picking a dish, choosing options for the dish, and adding it to the cart. The device is being held with both hands over a table top in an open place.
Guerrilla usability test taking place in a coffee shop.

Scenarios were given to them, like "you will receive some friends at your place and you need to order dinner for everybody. 20 cheese and meet esfihas will be enough. Make this order using iFood app". Tests would take from 5 to 20 minutes, and participants were encouraged to "think out loud" while interacting with the prototype.

Twenty-one people between ages 18 and 40 were approached in Starbucks. Initially, I offered to pay for their drinks as a reward, but nobody accepted that (most of them enjoyed participating and felt a reward wasn’t necessary).

During the tests, we took notes about what was working well, what could be improved, questions, and ideas. All test notes were compiled in spreadsheets and later presented to stakeholders.

An image diagram displaying two sheets of paper. The first, the template for the guerrilla test note-taking. It shows fields for the project title, user name, test number, and four quadrants. At the top left: “What does work”. At top right: “What can be improved”. At bottom left: “questions”. At the bottom right: “Ideas”. All quadrants are filled with examples in light blue pen mimicking style. The second sheet displays a spreadsheet summarizing the notes taken using the template.
You can download here my guerrilla test quick notes template.

We learned that the cart being hidden until it was necessary worked well, and the location feature also worked as expected, raising questions from users, like “the address could be auto-filled from the ZIP code information, so I could add only the missing information”, which was expected. We also tested new restaurant menus, a new hierarchy system for the restaurants’ list, and a new dish configuration flow, which also had good performances with minor tweaks needed. Some users had trouble adding items to the cart because we were using a confusing label, which was quickly fixed.

The biggest learning was that besides testing the prototypes, we should have also tested the original apps. This seems obvious, but at the time we were convinced that the apps would be entirely rewritten and that didn’t happen. We had a long way until we got to convince the stakeholders that some changes were critical, and having usability testing evidence would have made the path shorter.

Visual Design

Once everybody on the team was on board with the proposed solutions, we would start the Visual Design implementation. At the time, was a clear distinction between the information architect and the UI designer roles. Although we would literally seat side to side and collaborate constantly, sharing decisions, gathering feedback, and frequently designing solutions together, some responsibilities were split.

An image composition displaying various UI design mid-fidelity prototypes and user flows, without emphasizing any specific one. Some of them are location-related, others are restaurant and menu-related. Some of them display food images.
This image briefly shows some of the documentation I designed for the team. You can take a deeper look at them in this folder (in Brazilian Portuguese).

I was focusing most of my efforts from the problem understanding to the mid-fidelity prototypes, the brilliant designers Larissa Herbst (for the iOS app) and Marcel Müller (for the Android app) were in charge of designing the UI guidelines, components, and micro-interactions. Making use of color theory, typography, grid systems, and mobile usability standards, they prepared complete and outstanding UI documentation, and as a bonus, beautiful icon sets and illustrations. Some of this amazing work can be seen in the images below.

Composition comparing the screenshots of the previous Android and iPhone apps, with mid-fidelity prototypes for each platform, and the final Visual Design for each platform. The screenshots are displayed in rows. First row: the app home screen. Second row: a restaurant’s menu. Third row: dish details screen. Fourth row, the shopping cart.
Larissa Herbst (iOS) and Marcel Müller (Android) were the brilliant designers responsible for the visual design.

After validating the mid-fidelity solutions, these two worlds would converge into the final design documentation: lots of user flows translated into UI mockups on Sketch and video prototypes made in Principle.

Documentation and developer handoff

For design specifications, we tried to use a feature matrix spreadsheet combined with detailed user flows in PDF files (remember, it was 2015, and solutions like Zeplin hadn’t been broadly adopted yet).

A composition showing some UX documentation: many user flow diagrams and a spreadsheet with all the project features over a Mac OS X wall paper background, simulating the view of a developer consulting the documentation.
Download here the user flow chart and feature matrix (in Brazilian Portuguese)

The developers found the process cumbersome and difficult to be integrated into their workflow, so we came up with an alternative approach: we broke down each major feature in smaller user stories and turned them into Jira tasks.

A composition showing some UX documentation: a Chrome browser window displaying a Jira task with user flows and description, and a Zeplin screenshot displaying a visual design screen for the restaurant menu being inspected for development. Both windows are over a Mac OS X wall paper background, simulating the view of a developer consulting the documentation.
The documentation combo that actually worked for the team: Jira and Zeplin.

Each task would have a focused and complete description and “definition of done” criteria, illustrated with the corresponding annotated wireframes, video prototypes, and Zeplin links for UI specifications. Skype calls and presential meetings would happen many times a week so we were always in touch with the tech team for appropriate alignment and task validation.

Every time a task implementation was good enough to be tested, they would send us test builds, so we could validate what was completed and what was missing.

Conclusion

The complete redesign, implementation, QA, iterations, and launch for both apps took close to five months. Android app was initially launched for 5% of the user base and was gradually distributed for more users in the following weeks. iOS app was launched for the whole user base at once. Both apps were featured on their stores, weeks after launching. There was a 13,6% increase in sessions with orders.

After the redesign, iFood kept improving its apps and services and expanding its UX, tech, and product teams, reaching an impressive amount of 60 designers in their squads. I’m proud of being part of this process and grateful to Everaldo Coelho, Movile’s Design chairman at the time, for giving me this challenge and amazing experience.

Bootcamp
Bootcamp

Published in Bootcamp

From idea to product, one lesson at a time. To submit your story: https://tinyurl.com/bootspub1

Responses (1)

Write a response

well explained . Did you see change in percentage of heavy users and unique order users ?