top of page

Brief

NourishFit is an adaptive health management system that connects diet intake and exercise consumption through a dynamic feedback loop.
Instead of asking users to manually interpret calorie data and re-plan after disruptions, NourishFit generates a clear daily recovery suggestion based on real behavior.

 

Core Capabilities: Human–AI Interaction · Cognitive Load Reduction · Explainable AI · Adaptive Systems ·
SwiftUI · WatchOS · Coze AI Agents · HealthKit · A/B Testing · Multi-Device Interaction

Term Project

Duration: 16 weeks

My role:

Defined the problem, target users, and MVP scope.

Synthesized research into product requirements and UX principles.

Designed core IA and flows (onboarding, logging, daily update, feedback).

Built and iterated high-fidelity Figma prototypes from usability findings.

Year: 2025

Problem Statement

Even when users understand daily recovery suggestions, they often forget to act on them because the guidance only lives inside the mobile app. The core challenge now is delivering low-friction reminders at the right moment and on the right surface so users can notice and act without opening the app.

image.png
Problem Context

Market reality

Existing health apps treat diet and exercise as isolated features. When users overeat, skip a workout, or face schedule changes, they are left to calculate compensation themselves. This forces users into the role of planner and leads to mental fatigue and abandonment.

What we observed

Our Sprint 2–3 research confirmed that users are not limited by motivation, but by mental fatigue from constant micro-decisions, such as:

  • “Should I compensate today?”

  • “Food or exercise — what should I adjust?”

  • “Did I ruin my week?”

Core problem

How might we help users recover from disruptions without forcing them to think, calculate, or restart?

Behavioral Insights

Qualitative Interviews

Competitive Analysis

Survey

Insight 1 — Users want one clear next step, not dashboards

Insight 2 — Proactive guidance reduces cognitive effort

Insight 3 — Too many features or explanations reintroduce decision fatigue

This reframed our design focus away from motivation and coaching, toward cognitive load reduction and trust calibration.

Value Proposition Canvas
Value Proposition Canvas

Click to open the picture

What the VPC clarified

Users’ core job is recovering after disruptions, not tracking perfectly

Pain is driven by mental effort, not lack of motivation

Value comes from one clear daily suggestion, not dashboards

Business Model Canvas

How the BMC guided scope

Target user: busy beginners with inconsistent routines

Value focus: low cognitive load, fast feedback, optional explanation

Non-goal (intentionally excluded): advanced personalization, monetization logic, long-term analytics

Click to open the picture

Design Goal

Primary Goal

Reduce cognitive effort during recovery moments by giving users one clear daily recommendation.

Design Constraints

Avoid feature overload

Balance automation and control

Provide explanations only when users ask for them

Minimize interaction cost during busy or mobile contexts

Storyboard

 Primary Use Case

image.png

 Generated by Jimeng

Sarah, a frequent traveler, uses NourishFit to maintain a strict 1,500 kcal diet. During a corporate dinner, she uses the AI Plate-Scanning feature to instantly analyze a steak meal. The app identifies components, calculates the 950 kcal intake, and provides Nutritional Insights compared to her daily goals. This allows Sarah to make data-driven dining decisions and maintain her health goals even on the road.

Early Learning Prototype

Primary Hypothesis

If the system proactively provides recovery guidance after disruptions, can users return to action with less cognitive effort?

Home

Suggestion

Quick Log

Dashboard

Profile

Usability Testing

Validating Cognitive Effort and Action

After the prototype design, we conducted a formative usability test to evaluate whether the experience genuinely reduced cognitive effort, rather than shifting complexity to a different interaction step.

At this stage, the goal was not to compare design alternatives, but to understand how users interpreted, reasoned, and acted when encountering proactive recovery guidance for the first time.

Key Questions

Can users understand the system’s recommendation without additional explanation?

Do users hesitate or pause before taking action?

Where does cognitive friction still appear, even when guidance is clear?

Key Findings

Users clearly understood the intent of the proactive recovery suggestion and no longer felt the need to calculate compensation manually.

The presence of a single, concrete recommendation reduced uncertainty compared to traditional dashboard-style tracking.

However, moments of hesitation still appeared when users encountered dense information or multiple decision points within the same view.

Users expressed a desire to act quickly first, and reflect or understand details later, if time allowed.

 A/B Testing

After refining the prototype’s interaction logic and visual structure, we ran an A/B test to understand how explanation depth affects decision speed, trust, and follow-through in adaptive health guidance.

Participants

12 users participated (6 per condition), reflecting our target audience rather than experienced fitness enthusiasts.

Test Conditions

A — No Explanation

  • Single combined calorie balance view

  • Direct AI Coach actions on the Home screen

  • High-level recommendations with fast action paths

B — With Explanation

  • Separate intake and exercise progress views

  • Detailed training and dietary plans

  • Expandable “Why this recommendation” explanation

Results

image.png

Based on the A/B testing results, we moved forward with Version B.

 

Although Version A enabled faster actions, Version B consistently produced higher clarity, stronger perceived intelligence, and lower rejection rates. Over time, these factors were more critical for sustaining user trust in an adaptive health system.

Architecture

iOS + Serverless + AI Agents

image.png
  • iOS Client: SwiftUI + MVVM

  • Backend: Firebase (Auth, Firestore, Cloud Functions for Python Proxy)

  • IoT Integration: Apple HealthKit for synchronizing activities data

This architecture supports:

  • Asynchronous AI processing with clear loading states

  • Replaceable AI logic with fallback strategies

  • Rapid iteration without tightly coupling UI to model behavior

Final Prototype

Home Screen


The Home page provides a quick overview of intake, exercise, and a summarized AI Coach message.
It supports reflection and habit reinforcement, but avoids action buttons to reduce decision friction.

Today’s Suggestion Page

​

The Today’s Suggestion page provides one clear daily recovery recommendation based on the user’s calorie balance and activity data.

Users can accept, regenerate, edit, or delay the plan, keeping control without planning from scratch. An optional “Why AI Recommended This” section explains the reasoning when needed, without slowing action.

Food Scan

​

The Food Scan screen allows users to log meals by taking a photo.

After capturing an image, the system automatically analyzes the meal and identifies individual ingredients. It estimates total calories as well as per-ingredient calorie and nutrient values, including protein, fiber, and micronutrients.

This screen replaces manual food entry and significantly reduces logging effort.

Meal Analysis

​

The Meal Analysis screen presents a structured breakdown of the recognized ingredients.

For each ingredient, the interface shows estimated calorie values and key nutritional information. At the bottom of the screen, the system generates concise nutritional insights that summarize the overall meal profile and highlight areas for improvement.

This screen supports understanding without requiring users to interpret raw nutritional data.

Activity & Calorie Burn Integration

​

NourishFit synchronizes activity and calorie expenditure data directly from Apple Health.

This integration enables real-time updates of calorie burn throughout the day, allowing the system to continuously maintain an accurate energy balance between intake and activity.

The app automatically reflects updated activity data without manual input.

Apple Watch Companion

​

The Apple Watch companion app provides a lightweight, glanceable interface for monitoring daily progress.

Users can view current calorie burn and overall status directly from their wrist, without opening the mobile app. The watch also serves as the system’s IoT device, supplying high-frequency activity data to support more precise calorie expenditure estimates.

This interface prioritizes visibility and convenience during movement or busy moments.

AI & Backend

AI Orchestration (Backend Logic)

Why a Proxy?

Keeps API keys secure (server-side) and abstracts Coze complexity.

Challenge

Coze API is asynchronous (returns "in_progress" before "completed").

Solution

Implemented a Polling Mechanism in Python.

Data Parsing

Cloud Function parses the unstructured Chat response into strict JSON for the iOS client.

image.png

IoT Integration (Apple Watch)

image.png

Platform

Apple Watch via HealthKit.

Mechanism

HKObserverQuery + enableBackgroundDelivery.

Interaction

  • Watch records data (Active Energy).

  • System wakes up the iOS app in the background.

  • UI updates automatically via Combine publishers.

© 2026 by Doris Tao

  • LinkedIn
  • Instagram
bottom of page