Cardinal TechnologyCardinalTechnology
← All posts
Case StudyConsumer AppClaude API

Building Guided Reps: A Hands-Free Workout Coach You Never Have to Touch

I started it as a tool for my own daily workouts. It turned into a full AI-coached fitness product — and a good test of whether we could ship a consumer app, not just civic software.


Most of what Cardinal Technology builds is for governments, campaigns, and organizations — budget tools, voter platforms, tax calculators. Guided Reps is different. It started as something I built for myself, on the floor of my living room, because I was tired of poking at a phone screen with sweaty hands between sets.

The problem was small and specific. I wanted to do a structured workout without holding my phone, unlocking it, finding my place in a list, and squinting at how many reps were left. I wanted something that would just tell me what to do — count my reps out loud, pace my rest, and move on to the next exercise — while my phone sat on the floor across the room. Hands-free, eyes-free, the way a real trainer works.

That turned out to be a more interesting engineering problem than I expected, and eventually a real product. It's live at guidedreps.com.

The core idea: the workout drives itself

The whole app is organized around a single clock. When you start a session, a timeline engine walks through every segment — get ready, work, rest, next exercise — off a high-resolution performance.now() timer, and drives audio cues against it. A selectable coaching voice narrates each movement as you get into position, counts your reps up ("one… two… last one"), counts down timed holds, and calls the transition to the next exercise. Beeps mark the beats you don't need words for.

The design constraint that shaped everything was: you are not looking at the screen. That sounds obvious for a fitness app, but almost none of them actually commit to it. Once you take the screen away, every piece of information has to arrive as sound, at the right moment, without two voice streams stepping on each other. A lot of the work went into narration timing — saying the exercise name, the rep target, and the setup instructions during the "get ready" phase, so that when the work phase starts, the coach's voice is free to just count. Getting that choreography right is the difference between a coach and a talking stopwatch.

Voice commands close the loop the other direction. You can say "pause," "next," "restart," or "I'm ready" without touching anything — and the mic mutes itself while the coach is speaking, so the app never triggers its own commands by hearing itself talk.

It's all built on the browser's Web Speech and Web Audio APIs, which means no native app, no app store, and no per-platform build. It installs as a PWA and works offline.

Making it personal without making it complicated

A generic workout isn't very motivating, but a fifty-question intake form is worse. The balance I landed on: a short, chip-based questionnaire — your goal, your weekly schedule, your equipment, any injuries to work around, and a quick capability check ("can you do a full push-up, a knee push-up, or a wall push-up?"). From those answers, Claude generates a set of complementary starter routines.

The capability check matters more than height and weight ever would. It's what lets the app calibrate before week one — so someone who's deconditioned gets wall push-ups and chair squats, and someone stronger gets tempo work and single-leg progressions, without either of them having to know what those words mean.

The hard part: an AI program that respects a real training structure

The free tier gives you the hands-free coach and personalized routines. The paid tier is where the interesting AI work lives: a personalized, adaptive 12-week program.

The naive way to build this would be to ask an AI to "generate a 12-week program" and hope. That produces plausible-looking nonsense — progressions that don't progress, week eight that's easier than week two. Training programs have a structure that took decades of exercise science to work out, and a language model doesn't reliably reinvent it on demand.

So the AI doesn't design the program. It personalizes a validated scaffold. I encode the progression curve — foundation, build, develop, strengthen phases, with a warm-up and cool-down template — as fixed structure. The AI's job is narrower and far more reliable: pick the right exercises for each phase from a curated, tiered movement library (each pattern graded easy-to-hard and tagged by equipment), and set the starting difficulty from the capability check. The result is calibrated to the person but still shaped like a program a coach would actually write.

It also adapts. Around week three there's a check-in — too easy, about right, too hard — and if you're off, the AI regenerates the remaining phases up or down while keeping the weeks you've already completed. Finish the twelve weeks and it builds the next block, starting from where you left off instead of resetting you to a beginner.

Turning a personal tool into a product

The technically unglamorous half of this project was everything around the workout: turning a thing I used locally into something other people could pay for. Supabase for accounts and cloud sync so your history follows you across devices. A magic-link sign-in that stays in the browser tab instead of hijacking the installed app. Stripe subscriptions with a genuinely useful free tier and a seven-day Pro trial. A safety disclaimer and onboarding flow. A growth-funnel analytics dashboard so I can see visitors turn into signups turn into people who actually build a habit.

None of that is novel on its own — it's the standard SaaS plumbing. But doing it well, on a real domain, with real payments and real users, is its own discipline, and it's a different discipline than building a county budget explorer. That was part of the point. Guided Reps is proof that the same shop that builds civic data tools can also ship a polished consumer product end to end — auth, billing, offline support, AI, and all.

Why this is on a consulting site

Most of Cardinal's work is under NDA or built for a specific client's internal use. Guided Reps is something I can point at. It exercises the full stack we bring to client work — a real-time interactive engine, AI integration that's grounded in domain structure instead of hoping the model gets it right, subscription billing, and a production deployment — in a product you can install on your phone in about thirty seconds and try yourself.

If nothing else, it's a good demonstration of a principle I keep coming back to: the interesting part of building with AI usually isn't the AI. It's knowing exactly how much of the problem to let the model solve, and how much structure to build around it so the answer is right every time.


Have a product idea that needs the full stack built — AI, billing, deployment, and all? Get in touch. Or just try Guided Reps.