UX / PRODUCT DESIGN / 2026

Food Companion

FanDazi

A pet companion for everyday meal logging

Otter pet holding a fishRead the case ↓
Pet homeMeal diary

2026 / UX / Product design · Independent project

Food Companion

A meal logged. A response understood. A reason to return.

A meal-logging companion for young people who want to understand their everyday food without repetitive input and calculation. I connected photo capture, confirmation, pet responses, and diary review into a complete personal experience, with optional sharing and home-building extending it into companionship.

Research, product strategy, interaction and visual design, AI-assisted asset production, and prototype development. Main tools: Figma, Codex, Godot, and Python.

My contribution
Independent UX / product design: research, interaction, visuals, AI-assisted assets, and prototyping
Project stage
Figma design and local Godot prototype; live AI quality and cross-user experience pending validation
01 / 07

Research & insights

After logging one meal, what makes the next entry worthwhile?

01

Repetitive input

Searching, filling in, and calculating add effort to every busy day.

02

Opaque numbers

Nutrition data needs interpretation before it can inform the next meal.

03

Delayed feedback

Real change takes time; the act of logging still needs acknowledgement.

INDUSTRY CONTEXT / ONLINE SURVEY N=1,500

Between intent and sustained action

The report’s habit distribution suggests a need for lower effort. It does not establish that a pet-based solution works.

Established health habits · Single choice
  • Long-term habits37.4%
  • Unstable, often interrupted35.5%
  • Occasional attempts24.1%
  • None3.0%

Health-related spending in the past year

Multiple choice · Categories do not form parts of one total

  1. Supplements55.7%
  2. Sleep management48.6%
  3. Emotion regulation48.0%
  4. Medical / physical therapy40.1%
  5. Health technology37.1%
  6. Functional food / drinks29.4%
  7. Diet management28.5%
  8. Fitness / aerobic exercise24.7%
March 2025 online survey of people aged 18–30 in 15 cities. This industry sample is separate from the project probe. Zhimeng × HNC report, pp. 15–16 ↗

An existing landscape, with different experience priorities

I compared public product descriptions with the archived research to examine logging, interpretation, and relationship participation. These are qualitative design judgements, not rankings or claims that unreviewed features are absent.

ProductExperience focusRelationship participationDesign implication
MyFitnessPal ↗Diary, nutrition goals, analysisDiary visibility and friend sharingRetain structured records with less input and interpretation
Foodvisor ↗Meal tracking, tailored plans, growing a seedGarden decoration and community encouragementGrowth is established; differentiate familiar companionship and explainable responses
BiteSnapPhoto logging and visual reviewRelationship features not fully covered in the archived reviewUse photos as an entry point for reflection
Boohee ↗Food database, logging, management plansCommunity content and health experienceStructured information needs understandable responses
Calheal ↗Calories, nutrition, body-data managementReview mainly covers publicly described trackingSeparate estimates from body measurements
KaimaiMeals, weight, check-insArchived research notes friend check-ins and encouragementCare needs invitation, exit, and boundaries

Source check: 11 October 2026. BiteSnap and Kaimai retain archived research observations; their latest versions were not tested and their public pages were not reliably accessible in this check. Food Companion’s proposed distinction is explainable feedback connecting personal records with optional care between familiar people.

BEHAVIOUR OBSERVATION / CHANNELS

How content becomes care

Xiaohongshu: Observe how health content is understood, saved, and forwarded as a conversation starter.

Douyin: Observe participants’ existing sharing and response habits. Shared objects such as streak characters can connect people while creating pressure to keep a streak.

Channel selection follows the research questions and participants’ contexts; no quantitative channel comparison was conducted.

Project scenario illustration, not participant photography or an interview quotation.
PROJECT RESEARCH / THREE-WEEK PROBE

5 friend pairs + 5 couples

20 people in 10 pairs, observed sharing and responding to meals in existing social contexts. The probe examined participation cues, before any evaluation of a released app.

9/ 10

pairs continued sharing meals during the observation period

Counted by pair, without a daily-frequency threshold, control group, or day-by-day raw records. This is neither app retention nor evidence of improved health.

  1. Share a meal

    Use everyday life as a low-effort starting point

  2. Receive a response

    Make the logging effort feel acknowledged

  3. Keep a shared object

    Let pets and space hold a visible history

  4. Preserve choice

    Make invitation, skipping, and pausing natural

02 / 07

Strategy & system

Three breaks lead to four principles: an easier start, clearer feedback, a non-judgemental response, and choice in relationship participation. Personal logging is complete in itself; companionship extends it.

01

Lightweight logging

Start with a photo; review before saving. Reduce input while retaining the user’s final say.

02

Understand the basis

Connect responses to specific records, explain estimates and unknowns, and offer optional next steps.

03

Gentle responses

Let the pet acknowledge participation. Avoid punitive absences or treating the character as a health gauge.

04

Voluntary companionship

Make personal use complete before inviting someone. Keep records separate and sharing under user control.

The complete loop around one entry

  1. 01Meal input
  2. 02Confirmation
  3. 03Pet response
  4. 04Record explanation
  5. 05Diary review
  6. 06Optional sharing
  7. 07Companionship & home accumulation

Record

Photo → candidate → confirm → local save

No diary entry before confirmation; unknown nutrition stays unknown.

Interpret

Pet home → explanation → review & planning

Separate logged from unestimated data, and character expression from body state.

Relate / optional

Invite → separate pets → optional care → home

Each person confirms their own entries; sharing does not merge data.

A journey grounded in everyday moments

01

A busy lunch

Start one entry

02

Capture / import

Use a photo instead of repeated input

03

Review and save

Correct title, meal type, and portion

04

Understand the response

Inspect the confirmed-record basis

05

Diary and collection

Reflect and consider the next meal

06

Optional sharing

Invite someone and build a shared history

The journey describes research-informed scenarios and intended experiences, rather than measured satisfaction or an emotional score.

03 / 07

Logging & collecting

Less effort to log; the final confirmation stays with the user.

01 / 06

Start with one meal

Take or import a photo, with photo-only logging available. The camera is simulated; file import is implemented in the local prototype.

Original Figma UI · Enlarge to read the complete screen

Recognition proposes; confirmation records

A photo reduces input but cannot guarantee correct food or portions. Review comes before saving, with correction available and photo-plus-text logging retained when AI is unavailable.

This connects completing an entry with receiving an understandable response: diary history, collectible stickers, and an optional next-meal plan.

Meal sticker artwork from the projectMeal sticker artwork from the projectMeal sticker artwork from the projectMeal sticker artwork from the project

Existing style assets, not results of a live recognition or sticker-generation test.

04 / 07

Pets & companionship

The pet first acknowledges individual participation, then extends care to a willing companion. Each person has their own pet and records. A shared space connects people without confirming entries for them or merging body data.

Make personal use complete first.
Grow independently and meet in a shared space.
Choose what is visible when sharing.

Four expressive directions need an understandable basis

Energy

Energy

Activity and rest in the character, not inferred human fatigue.

Satiety

Satiety

A post-meal expression; actual fullness requires self-report.

Digestion

Digestion

A proposed post-meal rhythm; mapping rules remain unvalidated.

Sleep

Sleep

An evening rest cue, not an assessment of sleep quality.

These pair expressive directions with existing artwork; they are not four validated physiological mappings.

Explain the response

For example, a confirmed evening drink and time can prompt a designed rest cue, with its record basis and optional next step. A sleepy-looking character does not mean the system has diagnosed insomnia.

Mood is expressed by the user. Missing entries are not automatically interpreted as sadness, anxiety, or poor health.

Invite someone or keep using it alone.
Light care without judging for the other person.
Keep self-expression separate from food estimates.
05 / 07

Home & furniture

Let continued participation leave a place behind.

01 / 05

Make participation visible

Daily participation leads to furniture accumulation, with unlock conditions in the catalogue. Simulated days test the reward path, rather than long-term retention.

Original Figma UI · Enlarge to read the complete screen

32 furniture assets, one soft visual language

Armchair
Cloud sofa
Coffee table
Paw rug
Arched bookcase
Tea cart
Standing mirror
Arched door

Eight selected assets from the 32-item catalogue, checked against the engineering map. Some Figma category labels still differ from the runtime prototype.

Visible accumulation

Make the next object visible; interruption does not erase ownership.

Recoverable actions

Pair drag, resize, layer, and put-away actions with save and cancel.

Long-term experience to test

Do rewards make logging easier, or introduce new check-in pressure?

06 / 07

AI-assisted workflow

Design judgement runs through the process; AI helps turn decisions into inspectable outputs.

This chapter explains how I used AI in asset production and implementation. Food recognition, nutrition processing, and sticker generation inside the app are a separate product layer whose live results still require validation.

  1. 01 / Human-ledDefine direction

    Problem, research, rules, architecture, visual constraints

  2. 02 / AI assistance + human judgementProduce and refine

    Prompt → generate → select and correct → consistent assets

  3. 03 / Figma → Codex → GodotImplement interaction

    Screens → scenes / components → scripts → local prototype

  4. 04 / Human review + automated checksCheck and iterate

    Runtime comparison → diagnose → revise → regression check

01 / DESIGN DIRECTION

Define what matters, then what counts as a good result

I defined confirmation-before-recording, explainable responses, and optional sharing, then organised the record, interpretation, and relationship layers. AI did not replace research conclusions, hierarchy, or final visual judgement.

Cream and muted green unify flat scenario illustrations, the soft pet, and furniture. A large head, short body, cream muzzle, dark nose and paws, peach cheeks, and two green leaves maintain recognition.

Design input
Research breaks and relationship boundaries
Inspectable output
Flows, UI states, components, and asset constraints
Preserve the original silhouette and identifying features for product consistency.
02 / AI-ASSISTED ASSET PRODUCTION

From generated output to consistent product assets

The archive retains illustration prompts, initial outputs, and eye-style revisions. I set constraints, selected usable results, and checked that local changes preserved composition, colour, and character recognition.

Initial output / assets_v8 · Retain composition; review facial details.
Local revision / archived eyes version · Consistent solid dark-green vertical oval eyes.
ACTUAL PROMPT RECORD · EXCERPT
“muted forest green #527B64, sage #CFDCC6, mist blue #DDEAF0, warm cream and peach skin”

Revision constraint: solid dark-green vertical oval eyes; no sclera, highlights, or eyelashes. From assets_v8/prompts_final.json.

  1. Constrain

    Proportions, style, colour, alpha edges

  2. Generate

    Specify the scene and purpose

  3. Select and revise

    Preserve composition; fix inconsistencies

  4. Organise and integrate

    Name, check dimensions, reuse in UI

03 / FIGMA → CODEX → GODOT

From visual states to running interaction

I defined screens and states in Figma, then used Codex to help build Godot scenes, reusable components, and scripts. The central question shifted from visual similarity to consistent input, confirmation, persistence, and recovery.

Design / Figma node 165:1257 · Confirmation comes first.
Implementation / Archived Godot capture · Editable title, meal type, and portion; meal shown is demo artwork.
ORIGINAL SOURCE · food_flow.gd

Update the same entry without double-counting

	var updated := records.filter(func(item): return item.id != id)
	updated.push_front(saved)
	if not write_records(updated): return false
	records = updated
	last_saved = saved.duplicate(true)
	view.record = saved
	app.show_page("165:1510" if planned else "165:1308")
	return true

Original excerpt. Filter and update by existing id; update memory and navigate only after writing succeeds.

Pages & components

main.gd / surface.gd

Routing, history, overlays, native Control layout

Meal data chain

food_view.gd / food_flow.gd

File import, confirmation, persistence, summaries

Spatial editing

room_editor.gd / room_canvas.gd

Dragging, scaling, layers, drafts, recovery

The archive supplies Figma exports, scene and script files, and runtime captures. It does not include a separate editor-operation capture; no simulated editor image is substituted.

04 / ITERATION & VALIDATION

Check the prototype against state and data boundaries

Logging without AI

Issue: a missing estimate can be mistaken for zero. Change: retain photo_only and label it unestimated. Check: import, save, and reload without fabricated nutrition.

No duplicate totals

Issue: edits can become duplicate entries. Change: update by original id. Check: archived test confirms edits do not duplicate totals.

Recoverable arrangement

Issue: drafts must not overwrite a saved space. Change: separate draft and persistent layout. Check: save/reload and all 32 furniture textures were inspected.

49

Archive-pack checks passed

Headless checks cover startup/navigation, 32 furniture textures, layout persistence, photo/diary reload, unestimated states, and repeated edits. Isolated demo data; live_ai=false.

11

Service unit tests passed

Checks cover authentication, image normalisation, numeric validation, no requests without a key, non-food handling, and sticker alpha validation. Simulated transport; no paid model calls.

Read the 49 original check names
  1. copied pack starts in pet home
  2. navigation 165:1308
  3. navigation 165:1510
  4. navigation 165:1669
  5. navigation 165:1833
  6. navigation 199:2313
  7. edit mode hides pet without replacing art
  8. synthetic day 32 claims 30 remaining furniture
  9. furniture texture sage-armchair
  10. furniture texture sage-sofa
  11. furniture texture paw-rug
  12. furniture texture coffee-table
  13. furniture texture arch-bookcase
  14. furniture texture low-cabinet
  15. furniture texture peach-cushion
  16. furniture texture pet-bed
  17. furniture texture bedside-table
  18. furniture texture blanket-basket
  19. furniture texture beanbag
  20. furniture texture drawer-chest
  21. furniture texture standing-mirror
  22. furniture texture cream-cushion
  23. furniture texture dining-table
  24. furniture texture dining-chair
  25. furniture texture tea-cart
  26. furniture texture kitchen-cabinet
  27. furniture texture pantry-shelf
  28. furniture texture fridge
  29. furniture texture round-tea-cart
  30. furniture texture snack-basket
  31. furniture texture trailing-plant
  32. furniture texture leaf-stool
  33. furniture texture floor-lamp
  34. furniture texture wall-lamp
  35. furniture texture curtain-window
  36. furniture texture leaf-art
  37. furniture texture wall-clock
  38. furniture texture wall-shelf
  39. furniture texture arched-door
  40. furniture texture corner-module
  41. save room arrangement
  42. write isolated room fixture
  43. room arrangement reload
  44. photo import has no fabricated nutrition
  45. save isolated photo-only diary fixture
  46. photo-only is explicitly unestimated
  47. editing record does not duplicate totals
  48. diary and photo reload from archive fixture
  49. receipt can return to room home

Source: 20261011 verification archive / archive_pack_result.json and AI_SERVICE_UNIT_TESTS.log. These checks do not establish complete manual GUI acceptance, mobile performance, live AI quality, or user outcomes.

07 / 07

Prototype & reflection

The project moves from product rules, screens, and assets into a local interactive prototype. Implementation makes design decisions operable and inspectable; the number of tools used is not the outcome.

Pet home and user-selected mood.
Imported meal saved to the local diary; demo artwork.
Furniture editing, simulated rewards, and saving.
OutputCurrent stateNext step
63 Figma framesIncludes pages, overlays, and responses. Eleven new health-journey frames are design proposals.Align flow details and implement the new frames.
Local Godot prototype55 scenes; file import, confirmation, local diary, and furniture editing implemented. No Web deployment.Manual page-by-page acceptance and real-device performance testing.
In-app AI servicesInterfaces, failure handling, and unit tests exist; live recognition, estimates, and sticker quality remain unverified.Evaluate real meals in an authorised environment, including uncertainty and failure recovery.
Two-person companionshipInteraction design and local layouts exist; real cross-account sync is not implemented.Evaluate invitations, sharing boundaries, exit, and both people’s actual experience.

Next design iteration: from a meal response to a shared plan

Begin with self-reported feelings.
Confirm together while retaining different preferences.
Acknowledge insufficient information.

These Health 3.0 designs are from the latest Figma export and are not yet in the Godot prototype. Original app artwork retains Chinese; this case’s explanations, controls, and navigation are bilingual.

Is the response understood?

Check whether users distinguish character expression, estimates, and self-report, and whether they mistake a cue for a diagnosis.

Does care become pressure?

Test whether optional sharing and light care feel natural, and whether pausing and leaving are truly comfortable.

Does accumulation support return?

Evaluate the meaning of furniture and stickers in real use; the sharing probe cannot substitute for retention testing.

Make an entry feel acknowledged, while keeping the user in control.

This case uses actual screens, assets, and runtime captures from the latest archive. Anonymous access to the Figma prototype and public repository was verified on 11 October 2026. Godot remains a local prototype with no Web release.