Status — v0 is built and dogfooding. Conversation, onboarding, the mirror, food + nutrition lookup, the memory graph, suggestions, and continuous Find My location are all implemented and tested. The Apple-Shortcut geofence was dropped — Morpheus now reads the phone's shared location directly off the Mac mini. The pills below reflect current state.
Thesis
Dieting fails on accountability and what goes unspoken, not on tracking. Tracking is a
solved commodity that leaves you alone with a passive log. Morpheus is the relationship: it remembers what
you eat, tells you what to order when you ask, and watches how you look week-to-week — and that alone bends the curve.
Attention beats data.Perfect macros you ignore change nothing. A friend who notices you've been softer this week — and says so — does.
The body is the ground truth.Most people don't own a scale and don't want one. A photo trend over weeks is honest signal — often more honest than a number.
Two signals are enough.How you look + what you ate, tracked over time. You don't have to do much; Morpheus needs nothing else.
Onboarding built
A short, casual Q&A — one question at a time — then it wires up tracking and confirms it can
see you. No forms.
Learns the basics.Goal (lose/maintain/gain + target), starting weight, usual meal times, and a weigh-in time — saved to the profile as answers land.
Links your location.Asks you to Share My Location in Find My; the moment you do, it finds your share among everyone sharing with the account, links it to you, and learns your city.
Confirms it's real."ok yeah, i can see you're in fremont. good, we're set" — the eval. Then the daily ritual begins.
morpheuslast thing, share your location with me in find my (share indefinitely) so i can keep an eye on you. lmk when
youdone
morpheusok yeah, i can see you're in fremont. good, we're set
What Coach does built
One job, done well — and nothing else.
Talks like a person.gen-z tough-love, short texts, multi-bubble, human typing cadence. The relationship is the product.
Logs food.Mention a meal or snap a plate → rough macros, portion call-out, filed against the day and the restaurant.
Reads the mirror.Progress photo → compares to your recent check-ins → verdict + observation on a timeline.
Tells you what to eat.Suggests meals you like that fit the day's remaining calories + protein, craving-aware.
Catches you in the wild.Continuous Find My location → dwell + venue detection → proactive callout.
Stays in its lane.Strictly a diet/body coach. Ask it to do your math homework and it bounces you in character ("not really what i'm for, what'd you eat today") and never breaks role.
The daily ritual
The whole product is one small, repeatable habit — it survives because it takes ten seconds
and someone's waiting for it.
Morning mirror pic.A shirtless / progress photo, daily, same time and light. Morpheus stores it and compares it to the last ones.
Photo of what you eat.Snap the plate. Morpheus gets a rough calorie baseline, flags the portion, files it against the restaurant and the day.
you[photo] morning check-in
morpheusleaner than monday fr 🔥 shoulders popping more — keep doing whatever u did this week
you[photo] lunch
morpheusdouble-double + fries… that's like 1100 my guy 😭 logged it. lets keep dinner light yeah
The mirror — visual progress hero · built
Send Morpheus a photo of yourself; it judges this one against last time and tells you whether
you progressed. The scale becomes optional — the camera is the instrument.
Compares, doesn't grade.Reasons about the delta vs. your last few check-ins (leaner / softer / flat / more definition). No creepy score.
Writes notes it keeps.Each check-in produces observations ("waist tighter, posture better") stored on a timeline it references next week.
Cross-references the food.If the photos stall and the log shows portions creeping up, it connects the dots out loud.
Weight is optional.Got a scale? One more signal. No scale? The body trend carries the whole thing.
Reasons on the trend, not consecutive frames.Daily noise (pump, light, time of day) is smoothed over multiple days so it doesn't over-react.
you[photo] week 3 check-in
morpheuscomparing to 2 weeks ago… midsection is noticeably down 📉 this is real, not water
morpheusfunny thing — ur weight barely moved. see why we don't trust the scale 💀
How it works: the inbound photo is classified (body / food / other); a body shot is sent to the model
alongside your last couple of check-in photos so it reads the delta, then writes the verdict to the timeline.
Photos stay on the self-hosted Mac mini as local file refs (HEIC→JPEG via sips) — sent to the model for the read, never to a third-party app.
Ask it what to eat main value prop · built
The core loop: Morpheus remembers what you actually like, so when you're hungry it doesn't
hand you a meal plan — it suggests something you'd genuinely eat that still fits your goal.
"what should I eat?"Answers from your own tastes and history, not a generic database — meals you've liked before, tilted toward the day's remaining calories and protein.
Craving-aware."I'm feeling Korean" → a specific dish that scratches it and fits the goal: "bibimbap, lean beef, easy on the sauce — high protein, ~550."
Proactive, not just on-demand.It asks at meal times ("what are we eating?") and steps in the moment you say you're hungry — before the bad decision, not after.
Learns from what you pick.Every accepted or rejected suggestion sharpens the next — it converges on the short list of goal-friendly meals you'll actually repeat.
youim hungry, what should i eat
morpheusur ~600 under for the day and light on protein
morpheusdo the chicken bowl u liked sunday — quick, ~500, 45g protein 🔥
youeh im feeling korean
morpheussay less — bibimbap, extra veggies, lean beef, easy on the sauce. high protein + ~550, fits clean
Location callouts & restaurant memory built · Find My
Morpheus watches where you are and texts first when you've parked somewhere you shouldn't —
and because it has learned your spots, it names your usual order. No app, no Apple Shortcut: it reads the
location you share over Find My, continuously.
Continuous, straight from Find My.You Share My Location with Morpheus once; it reads your live coordinate on the Mac mini and tracks you — no geofence Shortcut to install.
Dwell, not drive-by.It only calls out after you've STAYED a while, so passing a McDonald's doesn't trigger it — parking at one does.
Knows the spot even if you never told it.It reverse-geocodes where you are; a fast-food brand or category → "why are we at mcdonald's" — no pre-saved danger list needed.
Names your usual at spots it knows.For a learned restaurant it cites the usual order and offers the lighter swap; a one-word "yes" logs it from memory — no photo, no typing.
morpheuswhy are we at mcdonald's. we were doing good
youlol busted
morpheusif you're eating, grilled chicken sandwich, skip the fries
Mechanism: the phone shares location over Find My; findmylocateagent's encrypted SQLite
is decrypted on the Mac mini (Apple's AES-256 page codec, 32-byte key grabbed once via lldb), the live
coordinate read from the WAL, dwell-checked, then matched to a saved restaurant or reverse-geocoded
(OpenStreetMap). The old Apple-Shortcut geofence + HTTP endpoint were removed.
Nutrition lookup built
You never count. Morpheus figures out the numbers — from the web, the photo, or what it already knows.
Path
How it works
Search lookup
Named items ("Big Mac", a restaurant entrée) → server-side web search for published nutrition facts → use real numbers, cache onto the dish record.
Portion estimate
From a meal photo, estimate serving size and flag outliers ("easily two servings"). A rough baseline beats no log.
Remembered
Usual orders are cached — no lookup, no describing. "Same as usual?" → "yes" → logged with your number.
Calories are a fuzzy input, not the truth. Morpheus keeps them consistent so
trends mean something, then calibrates against the real ground truth: how your body changes.
Memory model built
The store grew from a thin profile keyed by handle into a lightweight graph — records that
reference each other by id (no database until it earns one). It now holds restaurants, usual orders, dishes,
the daily meal log, and the body-photo timeline, plus the linked Find My sharer id per user.
Photos stored as local file refs on the Mac mini, not blobs in the JSON.
A day
Time
What happens
8:10
Mirror pic → compared to last week → "leaner, keep going" → observation filed.
9:00
Breakfast nudge (scheduled) → you snap a plate → logged rough.
12:51
Lunch photo → search the numbers → flag the portion → keep dinner light.
16:30
"what should I eat?" → suggests a meal you like that fits the day's remaining calories + protein.
19:38
Find My shows you parked at Chipotle → names your usual → "yes" logs it → offers the swap.
21:30
Evening recap → connects the look to the eating → "proud of u 🤝".
Architecture
Forked from a self-hosted iMessage agent stack. Transport and the agent loop were already
proven; the net-new work — vision, the memory graph, nutrition lookup, and continuous location — is now built.
decrypt findmylocateagent DB → live coord → dwell → callout (replaces the Shortcut)
Venue detection
done
geocode.mjs — OSM reverse-geocode; fast-food / brand danger detection + city for onboarding
Nutrition lookup
done
nutrition.mjs — server-side web search, cached on the dish record
Suggestion engine
done
in-persona reasoning over remaining cal/protein + learned preferences
The inbound photo router
Built: the chat-poller now surfaces attachments; the agent classifies (body / food) and routes — HEIC→JPEG via sips.
Build order
Ship the relationship first — if the conversation isn't good, no camera or location trick saves it.
All five v0 steps are now in.
#
Step
Status
1
Talk like a person.Onboarding + one real back-and-forth that genuinely feels good. Make-or-break.
done
2
The mirror.Body photo → vision compare vs. last → observation + verdict → react. The headline.
done
3
Meal photos + search.Food photo → portion + web lookup → log w/ photo. The "huge portion 💀" callout.
done
4
Memory + suggestions.Store grown into restaurants / dishes / meals / checkins + learned preferences, so it answers "what should I eat?" with meals you like that fit the goal.
done
5
Location.Continuous Find My location → dwell + venue detection → callout that names the remembered order. (Replaced the Apple Shortcut.)
done
Open questions
Photo classification.resolved Auto — a vision classifier decides body / food / other and routes the photo.
Mirror cadence.resolved Daily, folded into the weigh-in nudge; reasons on the multi-day trend to avoid over-grading noise.
Danger zones.resolved No hardcoded list — live reverse-geocode flags fast-food by brand/category, gated behind dwell.
Find My sharer mapping.open Today the user's findMyId is picked at onboarding (freshest fix) and pinned; auto-maps by handle once Apple's friends table syncs.
Confirm vs. react on the mirror.open Should daily check-ins always get a real reaction, or a lighter ack on flat days?