Building Imi, an AI nutrition coach, from brand to React Native front end

It started with my own meal plans in ChatGPT.
ChatGPT was good at the plan and bad at the journey: last week's plan was buried in old chats, and nothing tracked my goal.
A real problem
General AI tools are too broad to carry a months-long nutrition goal.
A design playground
Push new design tools as far as they go, and ship the front end myself.
A partner
Aman Arora, an engineer friend who wanted to sharpen his AI infrastructure skills.
I wore five hats: brand, product design, product vision, the React Native front end and marketing. Aman built the AI infrastructure.
Every nutrition app looked like a spreadsheet, and started after you'd eaten.
Bright primaries or black
Blue, orange, coral, lime, cyan. Nobody owned warm, earthy colour.
Trackers, not planners
Most count what you ate, after you ate it. Few say what to eat next.
Built for people who already track
Not for someone starting a GLP-1 or watching blood sugar, who needs a plan more than a log.
The category
Imi plans the week first, so you only log what changed.
Pick a goal from 10, and Home, your targets and the plan rearrange to match. Ask Imi to change the week and the change arrives as a card, with Undo.
AI-native planning
1 of 2One Home per goal




Widgets and Apple Watch
2 of 2Two people, 189 merged PRs: agents write, people gate.
- Commits since 12 April
- 2,482
- Co-authored with Claude
- 67%
- Task worktrees
- 113
- Tests in the October regression
- 6,826
I design in production. Claude Code writes most of the code inside rules I set, and every step that ships ends at a check or a person.
- Person
Set the bar
PRODUCT.md, a design skill and a 2,429-line voice guide load before any UI or copy.
Agent
Spec, then plan
Claude drafts both from a brainstorm with me.
Agent
Build in a worktree
Claude Code on one isolated branch per task.
Script
Checks
Typecheck, lint and Jest on every PR, plus 6 Maestro end-to-end flows.
- Person
Review and merge
189 PRs merged into main.
I point agents at design quality too. In June, 35 agents audited the app against Nielsen's heuristics: 161 findings, 2 refuted, 22/40. A checklist where an item only counts with a commit and a screenshot took it to 32/40 in four gates.
The verdict
1 of 2Baseline, 22 of 40
2 of 2Third name, one typeface, colour named for its job.
Imi was the third name, after Root and Esa, and 44 candidates fell to trademark, App Store or domain conflicts. Four typefaces became one.
Name
1 of 9Logo mark
2 of 9Finishing the mark
3 of 9Typography
4 of 9Finding the clay
5 of 9No colour does two jobs
6 of 9Nutrition colour
7 of 9Iconography
8 of 9Surfaces
9 of 9218 paintings, so 39,774 recipes stopped sharing pictures.
73% of recipes showed a repeated or generic picture. 218 ingredient paintings now cover 99.5% of them, and the character grew up three times before it held.
Ingredients
1 of 3The character
2 of 3Where the character lives
3 of 3I built getimi.app with a front door for every goal.
- Goal hubs, from GLP-1 to PCOS
- 10
- Sourced guides
- 67
- Free tools and calculators
- 20
- Commits since 27 September
- 104
Designed and built by me in Astro on Vercel: getimi.app. Each goal gets its own hub, guides and tools; scroll any page below, on desktop and on a phone.
App Store and Google Play assets, rendered from code.
- Store screenshots, iPhone and Android
- 132
- Sets, one per goal
- 7
- 30-second app previews
- 2
A script frames simulator captures under each headline in headless Chrome and uploads them through the App Store Connect API, so a new headline is a one-line edit.









The mark had to survive cotton, not just a screen.
Two tees, clay and white, carry the current mark and the site's line: "Don't just count calories. Plan them." They went to the printer as vector files; the cap, folded tee and mug are mockups from the same system.
Tees, cap and mug
Six agents plan the content week. None of them can post.
- Posts in 30 days, 4 channels
- 185
- Median views per TikTok
- 334
- Best post: Chick-fil-A protein list
- 1,118
- Carousels over videos on TikTok
- ~2×
Scheduled Claude agents draft, render and schedule; a person approves every post in a Claude artifact that works as a command center. Out of scope on purpose: auto-posting, paid ads and UGC creators.
Data
Metrics pull
Postiz, App Store Connect and site counters, daily.
Agent
Scout and strategist
Sunday trend scan; Monday brief with up to 5 proposals.
Agent
Drafter
Up to 8 drafts a week, each claim-checked and tagged.
- Script
Claim lint
Only 11 approved claims pass.
- Person
Approve
Jashan or Aman. Agents never post, reply or change canon.

Agent
Render and schedule
Higgsfield fills missing photos; Chrome and ffmpeg render slides; Postiz posts.

























Useful beats funny
Practical 'save this' protein carousels beat memes and recipe posts.
Text lives in a safe band
TikTok crops photo slides to about 3:4. The renderer keeps every word inside a measured band.
New accounts read as spam
A fresh Reddit account asking research questions got treated as spam. Reddit is hand-posted only.
Each Monday a Claude Code run opens one pull request. Merging is the gate.
- Protein pages built from USDA data
- 107
- Guides, each with 2+ sources
- 67
- Search impressions by early November, up from 0
- 1,453
- Search click so far
- 1
The site is a software factory with one human step. The agent gets a week of search data and a budget of about 10 minutes of my review.
Data
Search data
Search Console, Bing, autocomplete on 16 seeds, 9 rival sitemaps.
- Script
Rank the work
Near misses, low click-through, gaps and decay. Plain arithmetic.
Agent
Claude Code
Up to 120 turns. Every new health fact needs a source fetched that run.
- Script
Lint gate
Fails dose advice, weight-loss promises, diet-culture words, fewer than 2 sources.
- Person
Merge to deploy
One PR, about 10 minutes to review. Merging ships it.
Pages must carry facts no other page has
Each protein page ranks its food by protein per calorie across 536 USDA foods, to stay inside Google's scaled-content rules.
A week with no sources ships nothing
When the agent couldn't fetch the papers, its PR said so and changed no content.
Search is slow
Zero impressions in the first 28-day window, 1,453 by early November, 1 click. Too early to call.
A live beta and one brand everywhere. Distribution is the open problem.
- Commits in seven months, two-thirds co-written with Claude
- 2,482
- Recipes showing a repeated picture, after 218 ingredient paintings
- 73% → 0
- Posts in 30 days, every one approved by a person
- 185
In beta
20 testers on TestFlight; testers get 3 months of Imi Pro.
One system everywhere
App, widgets, Watch, website, store pages, TikTok slides and a tee share one clay, one typeface and one mark.
Distribution is early
21 beta applications and 17 sign-ups in 28 days. The loops run; volume hasn't come yet.
Agents made the work cheap. Gates made it good.
Design the gate, not just the agent
Every pipeline here ends at a merge, an approval or a script that can say no. That's where my judgment sits.
I'd start distribution with the first commit
The app began in April and the site in late September. Search and content compound, and they started five months late.

