Nutrition

The nutrition tab on a phone: today’s targets and the day’s progress

A lab-based nutrition plan, turned from a one-time read into a daily habit.

1 tap from a recommendation to action
5 metrics, each labelled by confidence

From a plan read once to a daily habit

A nutrition plan built on the user’s own blood work was opened once and never again.

I redesigned it into a daily habit: every recommendation collapses into a single tap, and the streak rewards coming back rather than being perfect.

Role
Product designer: PRD, behaviour model, interaction design, design system in Figma
Outcome
A system built to be measured: five metrics, each with a target and a confidence label
Platform
Mobile app, the nutrition pillar of a consumer health-tech product
Status
Redesign, before production data · 2025

At a glance

Problem

The plan said what to eat and why, then stopped. Nothing to do today, no reason to come back tomorrow.

Solution

Three kinds of target, each with its own one-tap mechanic, and a streak for showing up, not for being perfect.

Result

No production data yet. Five metrics with targets, each labelled by how sure the forecast is.

The problem

People ordered a blood panel, got a plan built on their own markers, read it once and never came back. The plan was clinically accurate and, as a product, dead: it said what to eat and why, and gave no reason to return tomorrow.

The hard part: these people already know sugar hurts them. The gap isn’t knowledge, it’s the step from “eat salmon three times a week” to an actual dinner.

Key decisions

  • Credit without capture

    No food logging, no portions, no calories. Research shows tracking adherence falls after week two and heavy tracking harms part of this audience, so one tap replaces the diary.

  • Three targets, three mechanics

    Build gets a tap and a checkmark, Reduce spends a weekly budget, Eliminate counts clear days on its own. “Eat salmon” and “don’t eat sugar” are different behaviours, so they can’t share one gesture.

  • A streak for returning, not for perfection

    Logging a slip is engagement and doesn’t break the streak. Otherwise honesty becomes the most expensive action in the app.

  • Plain reason first, clinical tags one tap away

    The card says “to keep your sugar steady”; HOMA-IR and the full rationale live in the expanded state.

  • A system, not mockups

    Components with variants for each class, variable collections as one source of truth for copy and languages, a PRD with edge cases for engineers.

Close-up of two expanded targets: why each one works and the markers it helps lower
A tap opens the reason and the markers it helps lower
Staying clear of: a used-up juice cap, a meat cap gone a bit over and a 12-day sugar-free run
Build on top, Reduce and Eliminate under “Staying clear of”

Forecast targets, not measured yet

≥40%

open the tab 4+ days a week

≥60%

of daily Build targets done

≥55%

still building the habit in week 2

What I’d do differently

  • Test the Eliminate reset earlier

    For an episodic food like added sugar, “26 of 30 days clean” may be more honest than a reset to zero.

  • Ship minimal analytics first

    Two events, “opened the pillar” and “checked a target”, would replace the daily-return forecast with fact in the first week.

[001] Context and problem

Opened once, never again

The product works like this: you order a blood panel, and the app reads your results to tell you what to change in food, movement and lifestyle for your specific markers. This isn’t abstract wellness. Its audience needs a lab-based plan not to optimize, but to avoid tipping into a diagnosis.

The client came with a concrete problem: users don’t come back to the nutrition section. And nutrition is arguably the most important section in the app, because it moves the very markers people took the test for. I was asked to find out why, and to propose what to do about it.

The pillar was accurate and, as a product, dead. It said what to eat and why, showed marker tags on every card, and stopped there. Meanwhile it sat on an asset no competitor has: the user’s own biomarkers, already attached to every recommendation. What was missing wasn’t content. It was a loop that turns content into behaviour.

The design challenge

Not “explain it better”, but cut the friction between a recommendation and an action down to one tap.

[002] Empathise

A plan read once and closed for good

People took the panel, got a personalized plan, opened the app once and never returned. Not because the plan was bad: it said precisely to eat more fibre and less white bread, and showed which markers sat behind that advice (HOMA-IR, hsCRP, TG:HDL). People read all of it, nodded, and closed the app for good.

The problem isn’t knowledge. People on this plan already know sugar hurts them. The problem is that “eat salmon three times a week” never turns into an actual dinner, and that friction is where the product lost them every day after the first.

Close-up of two expanded targets: why each one works and the markers it helps lower
An expanded target explains why it works and which markers it helps lower

[003] The strategic call

Why I designed away from trackers

The obvious move for a nutrition product is tracking: log your food, count calories and macros. I proposed the opposite, and that call rests on evidence rather than taste.

Tracking doesn’t hold, and that’s been measured

In a randomized trial (Burke et al., Obesity, 2011) adherence to self-monitoring peaks in week two (96 to 97% in the digital arms) and starts falling from week three. A later analysis of two randomized trials found fewer than half of participants still tracking after week ten. Consistency explained the largest share of variance in outcomes (R²=0.27, P<0.001).

Heavy tracking harms part of the audience

In a clinical sample of 105 people with diagnosed eating disorders (Levinson, Fewell & Brosof, Eating Behaviors, 2017), 73% of MyFitnessPal users said the app contributed to their eating disorder. For a product with clinical positioning, that’s an unacceptable side effect.

The market has already moved

There’s a visible shift from counting numbers toward food quality and intuitive eating, and research shows comparable or better long-term outcomes at a fraction of the psychological load.

From that I derived the product’s position: credit without capture. One tap instead of logging. No food search, no portions, no numbers to be judged on. An active study (MySnackTracker) is built on the same hypothesis: abbreviated tracking beats full tracking on adherence and satisfaction.

Before designing the interface, I ran a session with the client: their current problem, the evidence against strict food tracking, and my direction, talked through out loud. Moving from tracking to a light assistant is a strategic decision, not an interface detail, and it needed agreement before I spent time on screens.

[004] My role

Problem framing to final design

I owned the nutrition pillar from problem framing to final design in Figma.

  • Wrote the PRD

    Competitive analysis, differentiation, requirements prioritized by value and effort, metrics with honest confidence labels, edge cases and failure modes.

  • Chose the behavioural model

    COM-B over product-world habit frameworks, and defended that choice.

  • Designed the core solution

    Three behavioural classes of target, each with its own interaction model.

  • Decoupled the streak from perfection

    The contentious call, justified by the economics of honesty.

  • Built it in Figma

    Design system, components with variants, variable collections for copy and languages, and the AI pipeline that made all of it faster.

[005] Highlights

Goals, honestly labelled

The pillar hasn’t collected production data yet, so there are no real retention numbers to quote. The impact here isn’t “retention up N%”: I designed the system so it can be measured honestly, and gave a forecast I can defend to a sceptic.

Each metric is labelled directional, where I’m confident in the direction and the value sits in a defensible range against external data, or placeholder, where it’s a reasoned guess with no benchmark. Streak formation and the lab-results trust loop have no public benchmark, so they stay placeholders until the first measurement.

Forecast targets, directional, not measured yet

≥40%

daily return

Weekly actives who open the tab 4+ days a week. Top fitness apps see about 47% among engaged users.

≥60%

target completion

Median share of daily Build targets done on engaged days. Completion is one binary tap.

≥55%

week-2 habit retention

The best-supported target: users with a 7-day streak retain 2.3 to 3.6× better (Duolingo).

Success metrics M1 to M5 with definitions, proposed targets and a confidence label on each
Five metrics, each with a confidence label
Where each number comes from: sources and reasoning for every target
Where each number comes from

A metric that isn’t visible on screen is a metric people forget to measure.

So I required the design to surface them: progress and checkmarks for target completion, the streak indicator for streak formation, a recap when new lab results land for the trust loop.

[006] Ideate

Why I passed on habit frameworks

When you design for habit, your hand reaches for Fogg, the Hook Model, the habit loop. They share one blind spot: they explain how to trigger a behaviour, not why the person isn’t doing it yet. For these users awareness was never the problem, and “trigger first” would have meant notifications and rewards that don’t move the metric.

I took COM-B (Behaviour Change Wheel, Susan Michie’s group, UCL) for its evidence base and its fit with clinical territory. Its diagnosis was immediately a product diagnosis: the old tab zeroed out all three conditions for behaviour.

  • Capability

    Read-only: you can’t act inside it.

  • Opportunity

    No reason to return at the right moment.

  • Motivation

    “I did it” never meets “the marker moved”.

Remove any one and the behaviour doesn’t happen. The theory became a checklist of what the redesign had to fix.

[007] The best part

One diagnosis, three different medicines

I didn’t like the first iteration of the cards, and worked out why: I was treating different behaviours with the same medicine. “Eat salmon” and “don’t eat sugar” aren’t one mechanic with different copy. Tap-and-reward works for an action you can repeat. For a non-action there’s nothing to repeat, and a daily “I didn’t eat sugar again” tap is friction plus an incentive to hide a slip.

So I went to the most worked-out “stop doing X” category there is, smoking cessation and moderate-drinking apps. Three classes came out of it.

Staying clear of: a used-up juice cap, a meat cap gone a bit over and a 12-day sugar-free run
Build targets on top, Reduce and Eliminate under “Staying clear of”

[007] The best part · Build

Build: add something good

Fibre, protein at breakfast, salmon. There’s a concrete action to repeat and reward. Tap means done, and a checkmark appears. Daily targets reset at midnight; weekly ones accumulate across the week. This is the core of the habit.

A daily Build card, expanded: three fibre wins, the reason in plain words and the markers it helps lower
Daily: one tap means done. The reason is in plain words; the markers are one tap away
A weekly Build card in four states: 3 more, 2 more, 1 more, done for this week
Weekly: progress accumulates until the week is done

[007] The best part · Reduce

Reduce: a cap above zero

“Processed meat no more than 3 times a week.” A weekly budget, borrowed from the moderation app Sunnyside. “Had it” spends one unit. We count days, not portions: we deliberately don’t collect quantity, and “days with the food” is an honest unit.

Reaching the cap and going over it get neutral copy, “All 3 used” and “A bit over. Resets Sunday”, never red, never shaming.

A Reduce card in five states: 3 left, 2 left, 1 left, all 3 used, a bit over
Reduce: a weekly budget, from 3 left to a bit over

[007] The best part · Eliminate

Eliminate: a cap of zero

“No added sugar.” A rising day counter, the “days without cigarettes” pattern. It grows on its own from a start date, with no daily tap and no checkmark, because abstinence is the default state, not something you confirm every day.

The only action is a quiet “Had some” for a slip. It resets the counter gently and keeps your best run on the card, because one slip is just one slip.

An Eliminate card counting 12 sugar-free days, and the same card after a slip, with the best run kept
Eliminate: the counter grows by itself; a slip keeps the best run

The rule on top

Replacing a bad action with a good one builds a habit. Filing a daily abstinence report doesn’t.

Wherever a restriction has a natural substitute, I reframe it from Eliminate to Build: “avoid white rice” becomes “choose whole grains over white rice”. Eliminate stays only where there’s no substitute, like added sugar.

[008] Usability study

Testing the three classes

Sessions focused on whether the mechanics read as distinct without explanation: that Eliminate grows by itself while Build needs a tap, and that the Reduce budget isn’t an ordinary to-do. They did, and the sessions showed where copy and card states needed tuning.

A streak for returning, not for perfection

A standard streak breaks the moment you miss a goal. If it breaks on an honestly logged slip, honesty becomes the most expensive action in the app, and the product teaches people to hide slips. So the streak counts returning: logging a Reduce overage or an Eliminate slip is engagement and doesn’t break it. Only not showing up does, and then the reset is soft and encouraging, not a guilt screen.

One decision covers two requirements: it closes the eating-disorder risk in a clinical context and keeps the data honest for when it’s tied back to lab results.

What I kept off the first screen

I overruled my own earlier version. I first required biomarker tags to be visible without a tap, for trust. In practice a raw “HOMA-IR” means nothing without medical training and clutters the daily screen. Now the preview carries the reason in plain language, and the clinical tags with the full rationale sit in the expanded state. I logged it as an explicit revision in the PRD, so the decision and its reasoning stayed visible to the team.

[009] Design approach

How I used AI in this work

I built a working pipeline, not one-off prompts. The brief and screenshots turned into a full PRD through a skill set up for that structure. Through Claude Code I stood up the starting design system in Figma and the variable collections that switch card content and whole screens between languages. Copy for every card type came from one source of truth.

The limitation I worked against isn’t speed. AI reasons very persuasively inside the frame you give it and almost never questions the frame.

My PRD said every goal is checked off with the same tap, and AI designed onward from that premise. The error was mine: “eat greens” and “don’t eat sugar” are opposite actions, and one gesture breaks one of them. I stopped, reframed the problem, and checked it by changing the criterion: how is “stop doing X” solved in smoking and alcohol cessation apps? The hypothesis held, in details I hadn’t anticipated.

Clinical attribution got the same caution. “You stayed sugar-free 26 of 30 days and your HbA1c improved” slides easily into a causal promise the data can’t carry. The adherence signal comes from data we already collect, and attribution wording goes to health-team review wherever causality isn’t proven.

Figma variables: each target’s title, description, markers and progress copy in one collection
Every target lives in a variable collection: copy, markers, progress

[010] Final design

A system, not mockups

What I left behind is a system: components with variants for each behavioural class, variable collections as one source of truth across languages, a PRD with prioritization and edge cases as a contract for engineers, and a list of push notifications and toasts. The next person continues from an index instead of reverse-engineering my mockups.

[011] Key takeaways

What I’d do differently

  • I under-cooked the Eliminate reset

    A hard “days without cigarettes” reset may be too harsh for an episodic food like added sugar, where “26 of 30 days clean” is more honest than zeroing out. It’s one line of logic but it changes how the product feels, and I could have tested both forms with users earlier.

  • The forecast rests on external benchmarks

    There’s no first-party data yet. That’s the right move under uncertainty, but any of these targets could fall apart at the first real measurement, so I designed them as hypotheses to be disproved.

  • Next step: ship minimal analytics first

    One “opened the nutrition pillar” event with a date and one “checked a target” event. Within the first week we’d see the real return curve and replace the daily-return forecast with fact.

Next cases