Phone Body Composition Scanner
ARKit/ARCore phone scan that tracks muscle vs fat at home — a DEXA-alternative for GLP-1 users who will not pay $150 per clinic visit.
A Wegovy user steps on a $400 smart scale on a Wednesday. Down 3.2 pounds. Their coach asked them to protect lean mass. The scale cannot tell fat from muscle from water. Progress photos depend on bathroom lighting and whether they flexed. The Apple Watch body-fat estimate jumped two points overnight, which everyone in the group chat already knows is noise. The only number they would actually trust is a DEXA scan — $100 to $300, a clinic parking lot, and a 45-minute round trip they will not book every month.
Built for Developers, Solo Founders, Weekend Builders.
The global body composition scanner / analyzer category is about $1.37 billion in 2024, headed to $2.44 billion by 2032 at an 8.7% CAGR, per Intel Market Research — clinic towers, portable BIA, and home scales, not AR apps.
Suggested stack: Expo + native AR, MediaPipe Pose + Core ML / TFLite, Supabase, HealthKit + Health Connect, Next.js + Stripe + TestFlight. Weekend scope: about 10 hours.
The Problem
A Wegovy user steps on a $400 smart scale on a Wednesday. Down 3.2 pounds. Their coach asked them to protect lean mass. The scale cannot tell fat from muscle from water. Progress…
The Solution
A phone-native scanner: ARKit on iOS, ARCore on Android, optional LiDAR on Pro iPhones, and a guided 360 capture that estimates circumferences and a muscle-vs-fat trend — not a…
Market Research
You are not inventing body composition. You are attacking the home-frequency gap inside a hardware market that already has analysts, incumbents, and a GLP-1 demand spike sitting…
Competitive Landscape
InBody — Gym/clinic BIA leader (970-class). Published DEXA correlation, mobile SDKs, sports teams. You will not beat a single reading. Pro towers $5,000+; home units near $300.…
Business Model
Free trial ($0, 30 days) — Four scans, watermarked exports
Recommended Tech Stack
Expo + native AR — iOS first (ARKit + LiDAR). Android ARCore on pass two. Eject the camera view into a thin native module; WebXR is not good enough.
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "LeanScan": a web app that guides a consistent front-view photo each week, reads body proportions from it on the phone and charts the trend with a confidence cue. It does not estimate body fat or muscle. It is a wellness trend tool, not a medical measurement. Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Storage, Auth with email magic link), MediaPipe Pose Landmarker running in the browser so photos are read on the device. It installs to the home screen as a PWA. Deploy on Vercel. Tables (Row Level Security on, each user reads only their own rows): - profiles(user_id, height_cm, sex, units) - scans(id, user_id, captured_at, measurements jsonb, confidence, status, photo_path) status is ok or retake; photo_path is empty unless the user chooses to keep the photo - weigh_ins(id, user_id, measured_on, weight_kg) Screens: /login, /scan (guided capture), /history (the trend), /settings (units, delete everything). Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only). Do not build: billing, plans or a coach tier, a native app, ARKit, ARCore or LiDAR, body fat, muscle or DEXA estimates, Apple Health or Health Connect sync, a PDF for coaches. Done when: npm run dev starts, you can sign in, and the three tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves LeanScan: a trend you can trust more than a mirror, and the honesty to say when a photo is not good enough. 1. The capture screen shows a body outline overlay and a lighting meter. Block the shutter when the average brightness is too low or when the body fills less than 70 percent or more than 90 percent of the frame height. 2. Run MediaPipe Pose Landmarker in the browser on the front-view still. Never upload video. Keep the photo on the device unless the user taps Keep this photo. 3. Compute from the landmarks, normalized by the body's height in pixels: shoulder width to height and hip width to height. Write a pure function and unit test it with fixture landmarks. Store these ratios and the lowest landmark confidence. 4. If the lowest landmark confidence is under 0.65, save the scan as retake and exclude it from every chart. 5. /history shows each ratio as a 4-week band (the median and the spread), never a single number to a decimal place, with the weight from manual weigh-ins beside it. Add a confidence cue next to every number. 6. A settings page deletes all scans, photos and weigh-ins. Rules: never show a body fat or muscle percentage. Never say clinical-grade. Never shame a weigh-in. Put "A wellness trend from photos, not a medical measurement" on the history page. Empty state: with no scans, show the setup steps (a plain wall, the phone propped at chest height, 2 meters away). Done when: the ratio unit test passes, a dark photo cannot be captured, a low-confidence photo is saved as retake and missing from the chart, and the chart shows bands with confidence cues.
3. Landing Page
Build a one-page landing site for LeanScan, a body trend tracker that reads a weekly photo on your phone. Hero: "Track how your body changes, not just what the scale says." Sub: "A two-minute weekly photo, read on your device. See your proportions trend over weeks, with the confidence shown next to every number." One button: Join the waitlist. Sections: the problem (a scale cannot tell you where change happens), a sample trend band with a confidence cue, how it works in four steps (set up, shoot, read, compare), an honesty block (it does not measure body fat or muscle, and it is not a DEXA scan) and an FAQ on where your photos go (they stay on your device unless you keep one), Android and how to delete everything. Waitlist: store the email in a waitlist table in Supabase. No other service. Style: Geist, a near-black background, one emerald accent, warm off-white charts. Done when: the page renders on a phone and a submitted email appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for LeanScan: a wordmark and a small icon of a phone casting a thin body outline in emerald. Colors: near-black, emerald and warm off-white. Type: Geist for the interface, a tabular sans for numbers. Deliverables: wordmark, icon, a trend band chart style with a confidence cue, three scan-complete messages under 80 characters each, and one launch graphic. Voice rules: never say clinical-grade, always pair a number with a confidence cue, never shame a weigh-in. Done when: each deliverable is saved in one folder and each scan-complete message is under 80 characters.