A mobile app that helps coffee lovers in Lisbon find specialty cafés, track their favourites, and build a personal taste profile. Designed end-to-end as part of the Google UX Design Certificate.
This is a practice project from the Google UX Design Certificate on Coursera. The brief was open — design a mobile app that solves a real problem for a real user group. I chose something I know well: finding good specialty coffee in a city like Lisbon, where the scene is growing fast but the information is scattered across Instagram, Google Maps, and word-of-mouth.
I used this project to apply the full UX process — from empathy interviews to high-fidelity prototype — for the first time in a structured way.
I ran 5 semi-structured interviews with people aged 24–38 who described themselves as "coffee lovers" — a deliberately broad term. I wasn't recruiting for a specific persona, I wanted to find where real behaviour diverged from my assumptions.
"I know which places I like but I can't explain why. I just go back to the same three cafés and never try anything new."
I assumed the main problem was discovery — people didn't know which cafés existed. So I expected to design a map-based discovery tool.
Most people already knew about specialty cafés in their area. The real friction was decision-making — they couldn't articulate what they liked, so every new café felt like a gamble. They wanted guidance, not more information.
Goes to the same café every day because "at least I know what I'm getting." Curious about specialty coffee but intimidated by the terminology and worried about looking inexperienced.
Knows exactly what he likes (light roast, filter, single origin) but has to rebuild his "trusted list" every time he visits a new city. Wastes time on bad coffee.
Specialty coffee drinkers in Lisbon need a way to find cafés that match their taste profile because existing tools don't speak the language of coffee — they speak the language of generic reviews.
After Crazy 8s and a dot-voting session (alone, using sticky notes), the idea that kept winning was a taste onboarding quiz — 5 questions that build a taste profile without requiring the user to know any coffee jargon. Instead of asking "Do you prefer washed or natural process?", ask "Do you prefer sweet and fruity or dark and intense?"
This came directly from the research: Mariana doesn't know what "washed process" means, but she absolutely knows she likes sweet and fruity things. The quiz translates her intuitive preferences into a filter system she never has to see.
Jargon-free onboarding that builds a filter. Results persist across sessions.
List ranked by taste match %, not just proximity or rating.
Log what you tried, rate by preference, refine your profile over time.
I went from paper wireframes to low-fidelity Figma frames to a high-fidelity prototype. Each round was driven by feedback, not aesthetics. The visual language came last — after the flows were stable.
I ran moderated usability tests with 5 participants using a Figma prototype. Each session was ~30 minutes. I gave them 3 tasks: complete onboarding, find a café that matches their profile, and log a coffee after visiting.
4 out of 5 participants asked "94% of what?" The percentage felt authoritative but unexplained. Fix: added a tooltip explaining how the score is calculated + a small breakdown ("Matches your: roast level, brew method, flavour profile").
Drop-off point in testing was between Q3 and Q4. The progress indicator ("1 of 5") made the end feel far. Fix: reframed as "almost there" copy and made Q4–5 optional / skippable on first run.
2 participants scrolled past it without clicking. It blended in with the rest of the content. Fix: pinned it to the bottom of the screen as a floating action button.
I went in expecting to solve discovery. Research showed the problem was decision-making. If I'd skipped interviews and built what I assumed, I'd have built the wrong thing.
The "94% match" confusion appeared in the first test. I'd already built hi-fi screens around that number. Paper prototyping this earlier would have caught it before Figma.
Any algorithmic score shown to users needs an explanation nearby. "94% match" is meaningless without context — it reads as made-up even when it isn't.
Hiding the complexity (roast profile, process, origin) behind plain language didn't remove the feature — it made it accessible. Power users can still see the details; beginners don't have to.