AI portfolio · iOS app

Fitbit Air on steroids

MRH1 is a custom iPhone app that takes the readings from my Google Fitbit Air and turns them into Whoop-style scores, lab-style body panels and plain-language explanations, for a full picture of my health in one place.

SwiftUIHealthKitSwift ChartsOn-deviceBuilt with Claude

The problem

The Fitbit Air carries an optical heart-rate sensor, a 3-axis accelerometer and gyroscope, red and infrared SpO2 sensors, and a skin-temperature sensor. The free Google Health app uses a fraction of that: no all-day strain, no stress timeline, no recovery breakdown, and few explanations of what a number means.

◎

Whoop-style scores

Recovery %, all-day Strain 0–21, a sleep score and hourly stress, all computed from the band's raw data.

▤

Body panels, like a blood test

Each result has a flag, your personal range, the typical adult range and a 7-day trend, grouped by Heart, Lungs, Sleep and Activity.

ⓘ

Every metric explained

Tap any number for what it means, the abbreviation spelled out (HRV, SpO2, REM…), and what a higher or lower value usually indicates.

How it works

There's no cloud and no API keys. The app reads what Google Health already writes into Apple Health and does all the maths on the iPhone.

Fitbit AirHeart rate, motion, SpO2, temperature
Google HealthSyncs and writes to Apple Health
Apple HealthHealthKit, read-only access
MRH1Scores, panels, trends, alerts

Screens

Screenshots from the web replica, running on synthetic sample data.

What it measures

"Normal" means normal for you: personal ranges are built from your own last 30 days.

MetricSourceWhat it tells you
Recoverycomputed0–100 %. How ready your body is today, from HRV, resting HR, breathing rate and sleep versus your normal.
Straincomputed · HR0–21. All-day cardiovascular load (TRIMP-based).
Sleep scorecomputed · stagesDuration versus need, deep + REM share, and efficiency.
Stresscomputed · HR + steps0–3, hourly. Heart rate raised above resting while you're still.
Resting heart rate (RHR)Fitbit AirLowest steady heart rate during sleep.
Heart rate variability (HRV)Fitbit AirBeat-to-beat variation. Higher means more recovered.
Breathing rateFitbit AirBreaths per minute asleep. A jump can come before illness.
Blood oxygen (SpO2)Fitbit AirOxygen saturation, from red and infrared light.
Skin temperatureFitbit AirChange versus your usual night.
Deep / REM / awakeFitbit AirSleep stages and wake-ups.
Steps, energy, workoutsFitbit Air + iPhoneDaily activity and weekly training time.
Sleep debt & consistencycomputedSleep missed versus 8 h, and how much your bedtime varies.
Body agecomputedA rough fitness-age estimate from vitals and habits.
Normal or better than usualAbove your range (to watch)Below your range (to watch)

Privacy

The app has no networking code: no servers, no analytics, no third-party packages. It only reads from Apple Health, and its notifications are generated on the device.

MRH1 gives wellness estimates from a wrist sensor. It is not a medical device and does not diagnose anything. The demo and screenshots use synthetic sample data.

Built with AI

I designed and built this in a conversation with Claude (Anthropic). We researched the sensors, designed the metrics, storyboarded the UI, wrote the SwiftUI code, and iterated from screen recordings of the real app on my iPhone. Part of my AI portfolio, alongside AI-skills.