Calorie tracker user experience
Product promise
FitGenie should make an honest food log faster each time a person uses it. The experience favors trust, correction, and repeatability over false precision or an impressive-looking number that the user cannot verify.
There is no universal “perfect” flow. The quality bar is a tracker that works for packaged food, whole food, repeated meals, and home cooking while remaining understandable under uncertainty.
UX principles
- Logging is the primary action. It is available from every main tracker screen.
- The fastest method appears first. Recent and likely foods outrank generic catalog results.
- Never make users repeat known work. Previous meals, saved meals, household recipes, and usual portions are reusable.
- Estimates look like estimates. Show ranges and confidence in plain language.
- AI proposes; the user confirms. Photo, voice, and text parsing always open an editable review step.
- Correction is easier than starting over. Quantity, serving, item match, and meal slot are editable in place.
- Progress is informative, not punitive. Avoid shame, red error states for ordinary eating, and broken streak pressure.
- Ask only when needed. Progressive onboarding beats a long mandatory questionnaire.
- Accessible by default. Text scaling, screen readers, contrast, reduced motion, and large tap targets are release requirements.
- Failure explains recovery. Every error says what failed, what was preserved, and what the user can do next.
Information architecture
Initial navigation should remain small:
- Today: calorie/macro progress, meals, quick log, and daily target.
- History: calendar, trends, previous days, and reusable logs.
- Saved: meals, recipes, foods, and household presets.
- Profile: goals, units, dietary preferences, notifications, privacy, export, and deletion.
AI coach and exercise surfaces should not displace the tracker’s primary navigation before the tracking experience meets its quality metrics.
Onboarding
Required path
- Welcome and concise product promise.
- Choose maintain, lose, gain, or Just track for now; additional interests remain optional.
- For goal-based users, collect units, height, weight, target weight, and date of birth only where required for the selected calculation.
- For goal-based users, collect activity level with concrete examples.
- Present the proposed daily energy target and rate of change, or explain observe mode when no goal was chosen.
- Review screen explaining that any target is an estimate and can be adjusted or removed.
- Land directly on Today with a clear first-log action.
Progressive questions
Dietary preferences, meal-planning frequency, habits, household recipes, and reminders should be asked when their feature is first used unless they materially affect the initial target.
Safety and trust
- Reject unsafe rates of change with a clear explanation and safer choices.
- Do not present generated targets as medical advice.
- Explain which inputs changed the target.
- Permit manual target adjustment or no target at all.
- Never infer weight-loss, bulking, or medical intent from logging history.
- Request notification permission only after showing the exact reminder value.
Acceptance criteria
- A user can skip all nonessential questions.
- Existing answers survive interruption and app restart.
- Unit changes never alter the underlying canonical measurement.
- The generated target records its formula and inputs.
- VoiceOver/TalkBack can complete the full flow.
Today screen
Above the fold
- Date selector with an obvious return-to-today action.
- Consumed, target, and remaining energy when a target exists.
- Consumed energy and a neutral “No target set” state in observe mode.
- Protein, carbohydrate, and fat progress or observed amounts.
- Meal sections with subtotals.
- Persistent “Log food” action reachable with one hand.
Ranges should remain available where estimated logs materially affect the daily total. The expected value can drive the main progress display, with a tap revealing the range and source.
Meal rows
Each row shows:
- Recognizable food/recipe name.
- Human serving description such as “1.5 katori” rather than only grams.
- Expected calories, with an estimate indicator when applicable.
- Entry method only when useful for correction.
Swipe actions must not make destructive deletion too easy. Support undo after deletion.
Empty and partial states
- Empty day: show recent breakfasts/lunches appropriate to the current time plus search.
- Offline: show cached recent/saved items and queue safe writes.
- Partial sync: identify unsynced rows without hiding them.
- Failed write: preserve the draft and offer retry.
Logging entry sheet
Opening “Log food” presents methods in this order:
- Likely/recent items for the current meal slot.
- Repeat a previous meal.
- Search foods and recipes.
- Scan barcode.
- Saved meals and recipes.
- Voice or text description.
- Photo estimate.
- Create a food or household recipe.
The order may adapt to demonstrated usage, but all methods remain discoverable.
Search experience
Ranking
Rank results using:
- Exact barcode or exact normalized name.
- User-created and household items.
- Recently and frequently logged items.
- Verified catalog records appropriate to the user’s country.
- Aliases, transliterations, and fuzzy matches.
- Lower-confidence community records.
Do not show dozens of visually identical results without source, brand, serving, or confidence distinctions.
Result card
- Name and brand/source.
- Calories for a familiar default serving.
- Serving label and weight.
- Verified/estimated status where relevant.
- A fast-add action using the user’s last quantity.
No result
Offer barcode scan, create food from a nutrition label, text/photo draft, or a broader spelling search. Preserve the original query.
Acceptance criteria
- Search begins without requiring a submit button.
- Recent cached results appear immediately; network results merge without jumping the selected row.
- Selecting a result opens quantity confirmation unless fast-add behavior was explicitly enabled.
- Search failures preserve query and explain retry/offline options.
Quantity and serving editor
This editor is shared by search, history, saved meals, voice, and photo flows.
- Quantity stepper plus direct numeric entry.
- Familiar serving choices and grams/millilitres.
- Fractions for household measures.
- Live calorie and macro update.
- Range update for estimated portions.
- “Use this amount next time” option for user-owned presets.
Changing units must preserve the physical amount whenever conversion is known. If conversion is unknown, explain why and require a serving choice rather than inventing one.
Repeat logging
Previous meal flow
- Show likely meals from the same weekday/meal slot and recent history.
- User selects one meal.
- Present all items with previous quantities.
- Allow quantity changes, item removal, and additions.
- Confirm into the selected date and meal slot.
The original meal remains unchanged. The repeated meal is a new snapshot.
One-tap suggestion
A suggestion such as “Same lunch as last Wednesday?” must:
- Name enough items to be recognizable.
- Show expected calories before confirmation.
- Provide Log, Review, and Not today actions.
- Never create a log merely because the notification was opened.
- Learn from dismissals and stop repetitive prompts.
Saved meals and household recipes
Saved meal
Users can save a group of commonly eaten items with default quantities. Logging expands it into editable items so one portion can change without rebuilding the meal.
Household recipe setup
- Name the dish in the user’s language.
- Add ingredients through search, barcode, or manual entry.
- Enter approximate ingredient quantities.
- Select cooking method and optional oil details.
- Enter cooked yield using weight, number of bowls/katoris, or servings.
- Review per-serving calorie and macro range.
- Save as a private household preset.
Advanced retention assumptions stay behind an explanation, not in the default path.
Daily household-recipe log
- Choose familiar portion icons: half, one, one-and-a-half, or two katoris; roti count; custom amount.
- Display the household recipe name before regional fallbacks.
- Show the estimate range and allow ingredient/yield correction.
- Remember the usual serving without silently assuming it.
Barcode flow
- Camera opens with permission explanation and manual-code alternative.
- Detection gives immediate visual/haptic feedback.
- Matching market-specific product opens quantity confirmation.
- Unknown barcode offers nutrition-label capture or manual creation.
- Low-quality community matches clearly show source and allow correction.
Camera permission denial must not block manual barcode entry or search.
Voice and text flow
The interface is parser-neutral: standard deterministic parsing remains available without AI, while an entitled enhanced parser can improve complex descriptions. In both cases, trusted catalog and recipe data calculate nutrition.
- User speaks or types naturally.
- The app shows transcription as soon as available.
- Parsed items appear as an editable draft.
- Uncertain matches are highlighted with alternatives.
- User adjusts portions and confirms.
For “2 roti, sabzi, thoda dal,” saved household recipes rank first, regional dishes second, and generic foods last. Terms such as “thoda” map to a visible range rather than a hidden exact weight. Provider failure, entitlement changes, or an AI kill switch fall back to the same editable standard-parser draft.
Audio retention defaults to the shortest practical period. Users can delete a draft before confirmation.
Photo flow
- Explain that the result is an estimate and provide framing guidance.
- Accept capture or library selection.
- Show upload/processing state with cancellation.
- Return detected items and portion ranges—not one authoritative calorie number.
- Require item-by-item review for uncertain matches.
- Confirm as a normal meal log.
If processing fails, preserve the image according to policy only long enough to retry and offer search/manual logging immediately.
History and insights
History
- Calendar with logged days, not moralized “good/bad” days.
- Daily detail uses the targets effective on that date.
- Copy day or meal into today.
- Search historical logs.
Trends
- Weight and calorie trends use configurable 7/30/90-day windows.
- Distinguish missing logs from genuine zero intake.
- Show confidence/range impact when estimated foods dominate.
- Explain the evidence behind suggestions.
- Avoid causal health claims from correlations.
Observe mode
Users without a goal receive descriptive dashboards rather than “remaining” calories or unsolicited prescriptions. After enough confirmed history, the app may surface a specific observation and ask whether the user wants to explore a target. Every prompt offers Keep observing, and no goal is activated without confirmation.
The detailed dashboard shows logged-day coverage, average energy/macros, selected nutrients, household-food share, estimate coverage, and confidence. It labels signals as evidence rather than advice.
Notifications
- Ask permission in context after the user opts into a specific reminder.
- Support meal reminders, likely-repeat prompts, and goal reviews independently.
- Respect quiet hours, timezone changes, and frequency limits.
- Every push opens a relevant review screen.
- Track shown, accepted, dismissed, and disabled outcomes.
Error language
Use a consistent structure:
- What failed: “We couldn’t save lunch.”
- What is safe: “Your entries are still here.”
- Recovery: “Try again when you’re online.”
Never silently discard a typed query, recipe, draft, or quantity edit.
Accessibility and localization
- Minimum 44×44 pt interactive targets.
- WCAG AA contrast; color is never the only state indicator.
- Dynamic type without clipped calorie or quantity values.
- Semantic labels for charts, progress rings, serving graphics, and camera controls.
- Reduced-motion alternatives.
- Logical focus after opening sheets and after errors.
- Localized number formatting, decimal separators, units, date formats, aliases, and transliterations.
- Right-to-left layout readiness even if not in the first locale set.
Privacy controls
Profile must include:
- Export data.
- Delete individual photos/audio/drafts.
- Delete account and associated private data.
- Explain AI providers and retention in plain language.
- Disable personalization and notifications independently.
Do not use health-adjacent logs for advertising or unrelated model training.
Quality metrics
A polished tracker beta should measure:
- Median time to first confirmed log.
- Median time to repeat a previous meal.
- Search success without reformulation.
- Barcode match rate by launch country.
- Draft confirmation and correction rate by input method.
- Percentage of logs using recent, repeat, or saved paths over time.
- Notification acceptance, dismissal, and disable rates.
- Day-7 and day-30 logging retention.
- Sync failure and duplicate-log rate.
- Crash-free sessions and accessible-flow completion.
Metrics must distinguish faster logging from accidental or unreviewed logging.
Release quality gates
The tracker is ready for public beta only when:
- Manual search, barcode, repeat, saved meal, and household recipe flows work end to end.
- Confirmed logs remain stable after catalog updates.
- Offline/retry behavior cannot create duplicate logs.
- Estimated entries always expose correction and uncertainty.
- Cross-user RLS tests pass.
- Core calculations pass fixture-based tests.
- Accessibility checks cover onboarding, Today, search, quantity editing, and confirmation.
- Account export/deletion and media retention are functional.
- Analytics can identify funnel failure without collecting raw meal text unnecessarily.