From the build log of an AI coach that learns what you can lift and tells you exactly what to do next.
10 things got done: The Progress tab now matches the rest of the app. Tap any of these to read the whole thing.
Every screen in the app got the new look months ago, pure black, big bold condensed numbers, one bright lime colour for the important thing. Every screen except one: the Progress tab. It was still wearing its own old outfit, a dark mint-green "dashboard" style from an earlier redesign. So jumping to Progress felt like walking into a slightly different app.
Gave the Progress tab the same look as everywhere else, without changing a single number it shows:
Nothing about the data or the honesty changed: every insight still hides itself when there's nothing real to show.
Built mock versions in the prototype playground first and got the look signed off, then built the whole app clean and took a real screenshot of the live Progress screen to confirm it looks right in the actual app (using a throwaway hook that I removed).
The build-log site showed what the app looks like and how I designed it, but never the actually-interesting part: how the coach thinks. How does it decide what weight to tell you? How does it learn who you are? People had to take "it's smart" on faith.
Added a new page that explains the coach and its "brain" two ways, with a toggle to flip between them:
Wrote it off three deep reads of the codebase so the technical claims are accurate, built the site (now 16 pages), opened both versions to check the toggle, the diagrams, and the formulas all render right, took the em-dashes out to match the site style, then pushed it live and confirmed both versions and the new links work on the real site.
On a day's exercise screen, the little summary line at the top spelled out the full muscle name, "3 EXERCISES · PECTORALIS MAJOR", while the calendar showed the friendly short version, "CHEST". Small inconsistency, but it looked untidy.
Made that summary line use the same short names the calendar uses, so it now reads "3 EXERCISES · CHEST · TRICEPS." (The detailed name under each individual exercise is left as-is.)
Built the app clean and confirmed it compiled.
On the new Program screen, the big card at the top always said "NEXT UP, Start workout." But if I'd already started a session and paused it part-way (say my Pull day), the card still said "Start workout", as if nothing was going on. It ignored the fact that a workout was sitting there paused, waiting to be resumed.
The top card now reads the app's live-session tracker and shows the real state:
Built the app and ran it in the simulator with a fake paused session for the Pull day, the top card correctly showed the amber "PAUSED, Resume workout" for Pull A instead of the old "Start workout." Photographed it to confirm.
The build-log site showed the finished app and the finished site, but not the part I find most interesting: all the options I tried and threw away to get there. There was nowhere that showed the actual creative process.
Added a new page (reachable from the homepage and the footer) that walks through every design decision as a little "here's what I tried, here's what I kept". For each one it lays the options out side by side with the version that actually shipped marked. It covers both the app and this site:
Built the site (now 15 pages), opened it locally to confirm every image loaded and the "shipped" picks were marked right, then pushed it live and checked the new page, its images, and the homepage link all work on the real site.
The build-log website, the public page where I write up each day's work, had a pile of small rough edges. The diary titles still showed my internal shorthand, things like "(#423)" or "(Phase 3 UI, commit 1 of 2)", so it read like a task tracker instead of a journal. Sharing a link showed no preview card, and there was no little icon in the browser tab. The phone screenshots on the homepage were about four times bigger than they needed to be, so the page was heavier than it should be. And some of the faint grey text was too dim to read.
A batch of small fixes, built in parallel by a handful of agents and shipped together:
Built the site (still 14 pages, no errors) and clicked around a local copy, the titles are clean, the share card and icon show up, the day pages have headlines, and the screenshots are sharp but small. Then pushed it live and checked the real site: the preview card, the icon, the sitemap, and the long-cache headers are all serving from thearnavmenon.com.
The Program tab, the screen that shows your 12-week plan and the screen that shows a single day's exercises, was the last part of the app still wearing the old look. Everything else (workouts, settings) had moved to the clean black "Brutalist" style, so the Program tab stuck out. It was also a bit dumb: it listed the plan but never told you what to do next, never showed how you did last time, and never explained why a deload week was a deload.
First I rebuilt both screens in fake-data prototypes so I could see the new look before touching the real app, and got it signed off. Then a panel of four reviewers (a product person, a designer, a serious-lifter, and a "keep it simple" skeptic) suggested upgrades and I picked the good ones. The real work shipped as six small pieces:
Where the data didn't really exist (a fake session-length, a made-up deload percentage), I deliberately left it out rather than invent numbers.
Each piece built green on its own; I scanned every change to confirm it only touched the look, not the behaviour, before merging. Then I built the whole app together (green) and ran it in the simulator with sample data to photograph both real screens, the new calendar and day view look right in the actual app, not just the mockups.
I put the public build-log website online, but it was a frozen snapshot, the diary and the green commit-graph on it only showed data up to the day I built it. Every time I shipped something new, the site would quietly fall behind unless I copied files across by hand.
Added a small robot (a GitHub Action) to this repo. Now every time I push my work, it counts up my commits for each day, grabs the latest diary, and sends both over to the website's own repo automatically. The website notices and rebuilds itself a minute later, so it always shows my newest days without me touching it. I also made the commit-graph stretch to the most recent day with activity, so brand-new days actually appear instead of stopping at an old date.
Merged it and watched the first run go green, then looked at the website's repo: the robot had pushed today's diary and a fresh commit count that now includes today (it didn't a minute before). The whole loop works start to finish.
Two annoyances during a workout. First, when you finished a set and the "How did that set feel?" popup came up, the "Log set" button was hidden below the fold, you had to swipe up every single time just to reach it. Second, when you finished an exercise, a "Set Complete" screen flashed up that still used the old plain-looking design, out of step with the rest of the app.
Proved the popup-sizing trick in the isolated prototype harness first (the Log set button sits fully clear of the home bar), got the new "exercise complete" look signed off from a prototype render, then built the real app clean for both.
Our screen-redesign process only covered making a screen look right. But a redesign is also the best moment to ask "what's missing here, or what could be better?" The Settings redesign proved that out, so I wrote the step down so we do it every time.
Added a step to the redesign playbook: an optional panel of agents that reviews a screen from different angles, product, visual, an expert user, and a skeptic who pushes back on adding too much, covering what's missing, what to add, and how it looks and feels. The panel hands back a short list, the user picks, and the chosen ideas get prototyped and built like any other change.
Docs-only change to the redesign guide; merged via PR.