Nutriguide

A mobile app that lets people with allergies, dietary restrictions, and disabilities scan a product and instantly know whether it's safe for them, without decoding an ingredients label first.

Built during my final year at university as my dissertation project. My earliest end-to-end UX/UI project. I was the sole designer, responsible for research, information architecture, interface design, and accessibility.

Company

Concept Design

Type

Native App Design

Role

Lead Designer (end-to-end)

Team

Me (UX/UI & Development)

Timeline

2022

9:41
NutriguideKnow what’s
in it before it’s
in your basket.
Log in to check labels against your allergy profile.
Continue with AppleContinue with Google
or log in with emailEmailyou@example.com
9:41
What are you allergic to?Pick everything that applies. We flag each one wherever it hides on a label.
PeanutsTree nutsMilkGlutenEggsSoy
Continue
9:41
How strict about “may contain”?Many packs carry a trace warning even when the ingredient isn’t listed.On the packIngredients: oats, maple syrup, pumpkin seeds, sunflower oil.May contain: peanuts
Treat it as a noBest for severe allergies. Any trace warning means leave it.That pack showsLeave itAsk me to checkFlag it so you can read the pack and decide.That pack showsCheck the pack
Continue
9:41
LabelBarcode
5 057753 112957
Hold the barcode inside the frame
Greek yogurtTesco FinestLeave itThe label lists greek yogurt. That matches milk on your list.Scan nextSee details

Onboarding: choosing allergies and how strict to be about “may contain” labels.

Problem

Food shopping can be stressful, and sometimes risky, for people managing allergies, dietary restrictions, or disabilities. Ingredient labels are small, cluttered, and often written in language that isn’t easy to scan quickly, especially under time pressure or with a visual impairment. The tools that existed didn’t offer much personalisation or accessibility; people were left to cross-reference labels against their own restrictions every time manually.

The challenge

How might we tell shoppers in seconds whether a product is safe for them, without making them decode the label?

Process

Research

I used a mix of interviews, a survey, and literature review - partly to get real accounts of the problem, partly to check my design decisions against established accessibility practice rather than just my own assumptions.

Interviews. I spoke to 10 people with a range of needs — severe allergies, coeliac disease, and visual impairments among them. What came through clearly was how much of the stress wasn’t about not knowing what to avoid, but about the time and effort of checking every time. One participant’s comment stuck with me: they said something like being able to check a product instantly would actually change how they shop, because they’d stop standing in the aisle looking things up.

Survey. 150+ respondents told me, in order, what mattered most: fast and reliable scanning (50%), clear plain-language explanations of what’s in a product (30%), and personalised safety alerts (20%). This shaped what got priority in the interface - speed and reliability came before anything else.

Literature review. I read into accessibility and inclusive design guidelines, food labelling regulations, and research on consumer decision-making in retail settings, mainly to sanity-check what I was hearing from participants against wider evidence rather than take individual feedback at face value.

If I could check a product instantly, it would change how I shop. I’d stop standing in the aisle looking things up.
Interview participant
Checking is the stressful part, not knowing what to avoid.
Interview participant
I wasn’t sure if it was flagged for my allergy, or if it was just a general warning.
Usability test participant
Knowing it was checked against my own list made me trust the answer.
Usability test participant

What participants told me in interviews and usability tests. Paraphrased, not verbatim.

Process

Information Architecture

The goal for the information architecture was to minimise the distance between scanning a product and getting a clear, personal answer, because people are usually shopping under time pressure, not browsing at leisure.

The core flow: Onboarding & Preferences → Product Scan → Instant Risk Assessment → Ingredient Details → Suggested Alternatives.

A few needs shaped how I prioritised within that:

  • Parents managing a child's allergies needed a direct scan-to-result path with as little interruption as possible.

  • Low-vision users needed less on-screen clutter, a clearer visual hierarchy, and a logical focus order for screen readers.

  • Health-conscious users and students needed quick access to edit their preferences without breaking their shopping flow.

Search, saved products, scan history, and settings all sit as secondary paths — there if you need them, but never in the way of the main scan-to-result loop.

Secondary paths, there when needed but never in the way of scan to resultSearchSaved productsScan historyAllergy cardProfile and settings

Information architecture: a short scan-to-result loop, with secondary paths kept out of the way.

Process

Testing and what changed

I ran usability testing with people from the target group, asking them to think aloud through setting preferences, scanning a product, interpreting the result, and editing preferences afterward.

A few things came out of it that changed the design directly:

Result screens weren't clear enough at a glance. People hesitated on the safe/caution/unsafe result — the distinction wasn't obvious fast enough. I strengthened the visual hierarchy and made the three states more clearly differentiated, both in colour and label weight, so the answer registers before anyone has to read the detail.

Ingredient lists were still hard to parse. Some testers slowed down trying to interpret raw ingredient names. I simplified the language used in the results and highlighted the specific ingredients driving a flag, instead of listing everything with equal weight.

Low-vision testers needed more room. More spacing, larger default text, less on-screen density — small changes, but they came directly from watching people struggle with the denser first version.

People wanted to know the result was actually personal to them. A few testers weren't sure if a flagged product was flagged for their specific allergy or as a general warning. I added a line confirming the result was based on their saved preferences, which testers said made them trust the app's answer more.

Alongside this, I checked colour contrast, tap target sizing, layout consistency, and focus order for assistive technology, not as a final pass, but throughout, since a couple of the usability findings above were accessibility issues first.

Colour

BrandA calm green that reads as safe without shouting
Green 800#075E43
Green 600#0B7A57
Green 50#EAF6F0
Result statesEach answer has its own colour, label and icon
Leave it#B42318
Leave it tint#FEF3F2
Check the pack#B54708
Check tint#FFFAEB
Looks clear#067647
Clear tint#ECFDF3
NeutralsUntitled UI greys for text and structure
Ink#101828
Muted#475467
Faint#98A2B3
Border#D0D5DD
Line#EAECF0
Page#F9FAFB
Card#FFFFFF

Type

NewsreaderHeadlines and verdictsRegularMedium
FigtreeInterface, labels and bodyRegularMediumSemibold
Leave it32/500
What are you allergic to?20/500
Honey roast granola11/600
The label lists roasted peanuts.10/400

Spacing, radius and elevation

Spacing
4
6
8
10
12
16
20
24
32
Based on a 4px step, with 2, 6 and 10 for tight data layouts
Corner radius
6 · Thumbnails8 · Inputs, small buttons10 · Buttons12 · Tiles, option cards20 · Sheets, quote cardsFull · Tags, pills
Elevation
Resting cardAllergy cardBottom sheet

Layout grid

Built for one hand, in a shop aisle
Status bar 44Tab bar 56
Mobile, 3754 columns · 16px margins · 12px gutters
Status bar 44Tab bar 56Peanuts2 colsMilk2 cols
Allergen tilesTiles span 2 columns, so a row holds two
Touch and safe areas44ptMinimum touch target, including chips and tiles44ptStatus bar kept clear on every screen56ptTab bar, with the scan button raised 18pt34ptHome indicator space above the sheet edge

Components and states

Buttons
DefaultHoverPressedDisabledPrimaryContinueContinueContinueContinueSecondaryScan nextScan nextScan nextScan nextSign-inContinue with AppleContinue with AppleContinue with AppleContinue with Apple
ContinueFocus ringScan anotherFull width
Text field
Emailyou@example.comEmptyEmailyou@example.comFocusEmailalex@nutriguide.appFilledEmailalex@nutriguideEnter an email address like name@example.com.Error
Allergen tiles
SelectedUnselectedFocusDisabled
Option cards
NavigationHomeProductsHistoryProfileTab bar, Home activeScan mode switch (try it)
Tags and progress
Leave itResultCheck the packResultLooks clearResult
PeanutsAllergenMilkAllergenGlutenAllergen
Step 1 of 4Step 2 of 4Step 3 of 4

The design system behind the screens: colour, type, spacing, layout grids, and components with their variants and states.

9:41
NutriguideHi, AlexAR Search products
Check a labelPoint at the ingredients. The answer uses only your list. Scan label Barcode
Your list EditPeanutsMilkGlutenAllergy cardShow staffSavedNone yetBrowse7 products
HomeProductsHistoryProfile
9:41
LabelBarcode
Harvest & RyeHoney roast
granola
IngredientsWholegrain oats (42%)HoneyRoasted peanuts (18%)Sunflower oilSea salt
Fill the frame with the ingredients list
GranolaOat drinkSoupGlare
9:41
Honey roast granolaHarvest & RyeLeave itThe label lists roasted peanuts. That matches peanuts on your list.
What we foundRoasted peanuts (18%)Matches peanuts on your listWholegrain oats (42%)Oats, not labelled gluten-freeChecked against your saved list · 5 of 5 lines read Scan another
9:41
Allergy cardEnglishEspañolFrançaisDeutschNutriguideI’m allergic toPeanutsMilkGlutenPlease tell me if my food contains any of these, including traces.
Thank you.
Turn your screen to face the person serving you. Edit allergies

Key screens: home, scanning a label, the result and the allergy card. Switch between the three result states.

The full set of Nutriguide screens laid out at an angle.

The full set of screens.

Outcome

This was a concept project for my university dissertation, so there's no real-world usage data to point to. What testing did show: the scan-first structure worked as intended - people could get from opening the app to a clear answer with minimal steps, and the iterations above measurably reduced the hesitation and confusion I saw in earlier rounds.

What I’d do differently

I'd have tested the result-screen hierarchy earlier, before building out the rest of the flow. It was the piece that needed the most iteration, and testing it in isolation first would have saved rework further down the line.

Curious to know more? Drop me a message.

Curious to know more? Drop me a message.

Curious to know more? Drop me a message.