Home Work About Contact

MealMatch AI

Lead Designer 0 to 1 Early-Stage Startup Nov 2024 — Apr 2026
[ 01 What Is MealMatch ]

MealMatch AI is a meal planning app that uses AI to take the decision out of what to eat. Tell it your goals, budget, and food preferences — it builds your week.

MealMatch AI app screen
User Research
Prototype Testing
Designers Led
App Store
[ 02 The Problem ]

Meal planning is broken by decision fatigue.

The team was ready to start building. I pushed for research first. If we were going to build the right thing, we needed data behind the problem.

We surveyed people about how they plan meals and buy groceries. Decision fatigue was the clear winner. People didn't know what to cook and didn't have the energy to think about it. AI meal suggestions was the most requested feature by far.

[ 03 Onboarding ]

Earning the right to ask personal questions.

We ordered the onboarding to make people feel comfortable first. Easy stuff like goals and food preferences up front, personal details like height, weight, and biological sex at the end.

Goals screen
Goals
Food Prefs screen
Food Prefs
Kofi Transition screen
Kofi Transition
Budget screen
Budget
Household screen
Household
The Shift
Sex screen
Sex
Age screen
Age
Plan Ready screen
Plan Ready
[ Design Decision ]

This follows the progressive disclosure principle. Start with low-stakes questions to build investment before asking for anything personal. Research shows each additional personal field increases drop-off. By placing height, weight, and biological sex at the very end, users are already invested in the process.

[ 04 Kofi ]

500+ iterations. One consistent character.

Kofi is MealMatch's AI character. He started as a founder concept, and getting him consistent across every pose in the app became one of the hardest design problems I've solved.

SEED_LOCKED: 401
CONSISTENCY: 98.2%
STATUS: DEPLOYED
Glossy / Too Detailed
Kofi — original Kofi — GPT 1 Kofi — GPT 2 Kofi — GPT 3 Kofi — North Star
Kofi pose 1
Kofi pose 2
Kofi pose 3
Kofi pose 4
Kofi pose 5
01
[ Stage 01: The Original ]

The Original.

The founder's original concept. It worked as a one-off but we needed Kofi in multiple poses across the app.

Kofi — original
02
[ Stage 02: ChatGPT ]

ChatGPT.

We tried ChatGPT first. The results were too detailed and every output looked like a different character.

Kofi — GPT 1 Kofi — GPT 2 Kofi — GPT 3
03
[ Stage 03: Stripped Back ]

Stripped Back.

I simplified the character. Bold lines, flat colours, no extra detail. This became the version everything else was measured against.

Kofi — North Star
04
[ Stage 04: Midjourney ]

The Midjourney Grind.

500+ attempts to get the simplified version into different poses. Most of them didn't match. The wall shows the scale of it.

05
[ Stage 05: Cracked It ]

Cracked It.

Switched to Google Imagen when it became available. The tool finally made consistency possible. Same proportions, same style, every pose.

Kofi pose 1 Kofi pose 2 Kofi pose 3 Kofi pose 4 Kofi pose 5
[ 05 Tough Calls ]

Making the call under pressure.

[ Call 01 ]

Biological sex vs. gender.

A teammate suggested changing 'biological sex' to 'gender' in the onboarding. I pushed back because our calorie calculations depend on physiology, not identity. Get it wrong and the AI gives inaccurate numbers.

[ Design Decision ]

Biological sex and gender identity aren't interchangeable. Calorie calculations use basal metabolic rate, which depends on physiology. Using gender instead of sex would produce inaccurate recommendations for some users.

[ Call 02 ]

Was the onboarding too long?

During a team review, several stakeholders flagged the onboarding as too long, raising concerns about drop-off. So we tested it with 5 users.

"It didn't seem too long. Appropriate amount of questions. What I imagined it would need. Not annoying questions. Standard."
Participant 1, Usability Test
"Average length. Asked things I expected. Just the right amount."
Participant 2, Usability Test
"Nice. Easy. Straight forward. I liked it."
Participant 3, Usability Test
[ Design Decision ]

Rather than cutting screens based on internal opinion, we let users decide. The data backed the original length. Every screen collected data the AI needed to personalise recommendations.

[ Call 03 ]

Turning a limit into a win.

Hitting a paywall feels like a punishment. We framed the free tier limit as a milestone of progress rather than a dead end.

Quota limit modal with celebratory copy
[ Design Decision ]

Most apps treat limits as a wall. We used Kofi and celebratory language to frame it as progress, making the upgrade feel like a reward rather than a restriction.

[ 06 Testing ]

Testing the prototype.

We tested the onboarding prototype and found three major friction points.

[ Change 01 ]

The budget input.

Users expected to type a number, not scroll through options.

"Option to type it in for really budget conscious people. What are the increments?"
Participant 1, Usability Test
Before
Budget input before — slider
After
Budget input after — discrete buttons
[ Change 02 ]

Cuisine selection.

Three choices felt limiting. Users wanted to express what they loved and what they didn't.

"Maybe the ability to pick more than 3 cuisines. Or something to say that other cuisines would be included."
Participant 2, Usability Test
Before
Cuisine selection before — limited options
After
Cuisine selection after — expanded options

Added like/dislike so the AI knows what you actually want, not just what you picked from a list.

Swapped the typeface. The original didn't have a commercial licence.

Increased the minimum from 3 to 5 cuisines. More data means better AI recommendations.

[ Change 03 ]

Plan review.

The summary screen listed everything without structure. We grouped it into clear sections and added an edit option so people could check their details before continuing.

"I would like to have option to edit summary page."
Participant 2, Usability Test
Before
Plan review before
After
Plan review after
[ 07 Design System ]

A design system, built from zero.

I built the design system from scratch. A token-based color system with primitives and semantic layers, plus a component library tied to all of it. Everything references the token system, so changing a value in one place updates it everywhere.

Token System

Component library

Components follow atomic design. Small pieces (icons, text, stars) combine into molecules (rating bars, metric rows), which combine into full organisms (recipe cards, nav bars). Every component pulls its colors, spacing, and typography from the token system.

Atomic design — Atoms
Atoms
Atomic design — Molecules
Molecules
Atomic design — Organism
Organism
Component library

Spacing

Everything sits on an 8px grid. Component padding, section gaps, and touch targets are all multiples of 8. Touch targets are minimum 44px for accessibility.

Spacing system
[ 08 Reflection ]

If I could go back, I'd change three things.

01

The Design System.

I built the system, the tokens, and the components. What I didn't build was proper usage documentation. At a startup moving fast with a small team, building the system came first. But when I handed direction to the other two designers, they had the components without the rules. Next time, I'd write the guidelines alongside the system, not after.

02

Analytics.

I should have pushed harder to get analytics into the onboarding flow before launch. We know users drop off, but I can't tell you which screen or why. If I'd set up event tracking from the start, the design decisions after launch would have been based on data instead of guesses.

03

The Skip Button.

We removed the option to skip entering personal data like height and weight. Users had to provide it or they couldn't continue. That was too blunt. A confirmation modal explaining why the data matters and what they'd miss without it would have been more respectful of the user's choice.

Back to top