Personal Projects / 2026
Liftroom
Designed and built Liftroom, a home gym app that plans each workout around the equipment you own, runs it under one thumb, and lets AI suggest changes that a rules engine checks before anything is saved.
Design Highlights
A plan that bends to the day
One thumb between sets
Goals, gym and history
AI changes, checked in context
Focus mode
A goal with a pace
History at a glance
Overview
Liftroom started as Workout Companion, a personal app that ran the sessions a coaching agent wrote from my Obsidian notes. In October 2026 I rebuilt it as a product anyone can use at liftroom.app: it plans each workout itself from the equipment at your place, your goal, and what you logged last time, then runs the session with the same one-thumb logging. AI is there to adjust the plan, never to write the loads.
Challenge
The first version depended on me: my notes, my agent, my home server. To work for someone else, the app had to plan a sensible workout on its own, from whatever is in a basement or a garage, on the first day with no history. AI could make planning feel personal, but a model that invents weights or picks a machine you don't own breaks trust fast. AI also costs money, and a public app can't hand everyone an open tab.
Approach
I split planning into two jobs. A deterministic rules engine owns the plan: session shape by length, focus balanced against the last session, double progression that reads logged effort, and only exercises your equipment allows. AI only proposes edits through a few tools (swap, change sets and reps, remove, add), and the engine checks each one and sets the weight. Around that I made a Gym tab led by the place, Goals with a real target and pace, and accounts that stay optional, so the app still works offline on one device.
Solution
Today offers a few workout cards and a quick check-in: energy, sore spots, and time bend the plan by rule, with each change and its reason shown. Plan a workout takes a length, a focus, a note, or a photo of a workout sketched on paper. Adjust with AI and a coach review run in the background, then show each proposed change next to the exercise it touches, to keep or set aside. Gym builds a place's equipment from a description or up to three photos. Goals shows pace, what is carrying the gains, and what is stuck; a lift stalled for three sessions rotates out for a variation. Rest can run on the lock screen. Signing in with Clerk backs training up to Convex and syncs devices; anyone signed in gets 30 free AI requests a month, or connects their own OpenRouter, OpenAI, or Claude account for more.
Impact
Liftroom now runs on its own at liftroom.app, on a Cloudflare Worker that works offline, with no notes or home server behind it. Every AI change passes the same checks as the engine's own plan, so a suggestion can reshape a workout but never put an unknown exercise, an unavailable machine, or a made-up weight in front of someone mid-set. The free allowance has a per-person and a global monthly cap, so AI cost stays bounded as more people sign up.
Key Learnings
Deciding what the model is not allowed to do mattered more than the prompt. Once AI could only propose edits and the engine had the final word, I could add AI to planning, check-ins, sketches, gym setup, and reviews without each one becoming a new risk. Moving from a tool for me to a product for others was mostly about defaults: what the app does on day one, with no history, no account, and no AI.