GoodRep.fit · Studio
Studio2026–presentSolo founder · Claude collaborator

GoodRep.fit

A coach that lives in your camera. On-device computer-vision form coaching in a web app that installs like a native one. It watches your form, counts every rep, and says so out loud. Nothing leaves your phone.

The studio venture where the architecture is the product. Real-time pose estimation on the phone, a rep engine built on top of it, a voice that talks back, and no server in the loop. In beta, and being validated on my own training before anyone else's.

goodrep.fit is a coach that lives in your camera. Prop the phone up, do the set, and it watches your form, counts every rep, and says so out loud. It runs entirely on the phone: no video is uploaded, no server sees a frame, and there is nothing to pay for per rep.

It is in beta. The first person it has to earn a place with is me, on real sets, week over week. That is the bar before it is anyone else's.

First run
  1. Welcome: A coach that lives in your camera, and a Get started button

    01Get started. The one-line promise, and nothing to sign up for.

  2. Setup: prop your phone, stand two to three meters back with your whole body in frame, then Allow camera

    02Prop the phone, step back. iOS asks for the camera once.

  3. Pre-start: squat in free mode, a Start camera button, voice cues on, auto-frame on

    03Start camera. Camera on is not tracking on.

  4. Get in position: the coach asks you to step back so it can see hips, knees and ankles

    04Framing. The coach says what it needs to see.

  5. Side-on setup: turn side-on so the coach can see your hips for a Romanian deadlift

    05Side-on. Some movements track from the side, and it says which.

  6. The camera is blocked: three steps to turn it back on in Settings, and a note that video never leaves your phone

    06Blocked camera. How to fix it, and no dead end.

From install to the first frame. The coach asks for the camera once, says how to stand, and says what it cannot see. Design-system screens; every state here is in the shipped build.

What it is

  • It sees the rep you actually did. Pose estimation runs on the phone, a rep engine reads the joint angles, and a rep only counts when it is a rep. Twelve movements at last count, from squats and lunges to rows, presses, and curls.
  • Your range, not a chart. A guided calibration captures your own range of motion per exercise, and the coach judges you against that, not a textbook angle. Your ranges live on your profile and can be remeasured.
  • Coach from across the room. Hands-free control from three meters away: a palm-out to arm the coach, a gesture to log the set. The gestures come from the same pose landmarks, are gated by state so they cannot misfire mid-rep, and the coach teaches them by voice as you go.
  • Earned, not neon. Clean reps build a combo, combos multiply XP, and milestones land on the You tab. A quiet mode turns all of it off for people who just want the count.
  • Your AI writes it. I run it. A Plan tab that takes a routine written by whatever AI you already use and runs it, set by set, with the coach watching.
  • Nothing leaves your phone. That is not a privacy policy. It is the whole architecture.
A live set
  1. A live set at twelve reps with knee angle, best angle, and the spoken cue Good rep

    01Live. Rep count, your knee angle, and the cue, spoken.

  2. A shallow rep: the coach says Go deeper

    02Corrective. A shallow rep gets called, not counted.

  3. Twelve reps and a twelve combo

    03Combo. Clean reps in a row build it.

  4. Quiet mode: twelve reps and the spoken Good rep, with no combo or XP on screen

    04Quiet mode. The same coach with the score turned off.

  5. Set logged: 12 reps, squat at 60 lb, plus 140 XP, 12 clean

    05Receipt. What the set was worth, then the next one.

One set of squats, start to receipt. The count, your knee angle and the cue are on screen, and the cue is spoken, because you are not looking at the phone mid-rep.

The goodrep.fit privacy section: "Nothing leaves your phone. That's the whole architecture."On-device is the product decision everything else follows from: private by construction, and free to run at any scale.

Why I built it

Every form-coaching app I could find did one of two things. It uploaded your video to a server and charged you for the inference, or it did not watch you at all and called set logging "coaching." The tracking apps are good at the log. None of them can tell you the rep was shallow.

The bet was a third thing: real-time, on-device, private form coaching in a plain web app that installs like a native one. Nothing leaves the phone, so there is nothing to protect and nothing to pay for. If the coach is good enough to trust, the economics take care of themselves.

How it is built

  • Pose on the phone. MediaPipe's BlazePose runs in the browser and feeds a generic rep engine. Exercises are entries in a registry, so adding a movement is a definition, not a rewrite. The library went from five movements to twelve in one wave.
  • Camera on is not tracking on. Starting the camera does not start counting. A READY gate arms the coach with a palm-out hold, so a set begins when you say so, not when you walk into frame.
  • Calibration overrides the defaults. The per-exercise range you capture resolves over the registry's defaults, so the coach's thresholds are yours.
  • A voice, not a screen. Cues are spoken through the browser's own speech synthesis, because you are not looking at the phone mid-set. The coach speaks the relevant gesture at each state transition.
  • Gestures are state machines. Hold rings, state gating, and a shipped gesture map that was reworked after real gym sessions, not designed once.
  • Progress syncs, quietly. Combos, XP, and levels are computed on device and mirrored to an account when you sign in, so the free surface works without one.
  • A design system called "Considered coach." Dark, typographic, restrained; medals rather than a slot machine. The marketing site and the app share the same tokens and the same 60px bar so they read as one product.
  • Shipped as a PWA on Vercel. It installs to the home screen and updates itself. The root of the domain is the marketing page; the app lives one path deeper.
On-device pipeline
Every arrow on this diagram stays inside the phone. The one dashed line is the optional mirror of your progress to an account, and the free surface works without it.
Calibration: your range, not a chart
  1. After a logged set: cues tuned to your body, not a chart; Measure my squat, or Not now

    01The invite. Offered after a logged set, never forced.

  2. Measuring squat, step one of three: Stand tall

    02Stand tall. Step one of three, spoken.

  3. Calibration: measuring a squat, hold there, ring at 96 degrees knee

    03Hold there. The ring captures your own depth.

  4. Calibration paused: step back, I need your whole side

    04Out of frame. The measure pauses and says why.

  5. Got it: 96 degrees, your squat depth; Redo or Save my range

    05Got it. Your number, and a Redo if that was a bad rep.

  6. Your ranges: squat 96 degrees, Romanian deadlift 74 degrees, push-up and lunge using defaults

    06Your ranges. Measured or default, per exercise, remeasurable.

A twenty-second measure per exercise. The coach captures how deep you actually go and grades against that from then on; the registry's defaults apply only until you do.
Hands-free: coach from across the room
  1. Zero reps, a faint skeleton, and the spoken cue Palm out when you're ready

    01Palm out to arm. Taught by voice, at the moment it applies.

  2. Hands-free: three poses, palm out, one hand up, hands together overhead

    02Three poses. That's all. Start, pause, log.

  3. Fourteen reps and the spoken cue Hands overhead to log it

    03Hands overhead to log. Taught when the set is done.

  4. Arms raised, a check ring, Logging set

    04Confirmed. The ring fills and the set logs; hands never touch the phone.

Three poses, held about 1.5 seconds; the ring confirms. The gestures come from the same pose landmarks and are gated by state, so an arm raised mid-rep is a rep, not a command.

Where it stands

Live in beta at goodrep.fit, iterated through dozens of releases over the summer of 2026. The exercise library, calibration, hands-free control, combos and XP, spoken coaching, and the plan runner are all in the shipped build. Sign-ups are open on the site.

What is not done is the part that matters most: proof that the coach holds up in my own training, session after session. That is the next milestone, and the native phone port waits behind it.

Your AI writes it. It runs it.
  1. Routines: free mode, Full Body A, Quick Push, and Create with AI

    01Routines. Built-ins, or one your own AI writes.

  2. Create with AI: copy the prompt, give it to ChatGPT or Claude, paste back what it returns

    02Copy the prompt. Any assistant you already use.

  3. Looks good, here's your plan: Upper body burner with push-ups, overhead press and bicep curl

    03Checked. The routine parses; save it.

  4. Almost: I don't know jumping lunges; swap it for lunges, or paste again

    04Unknown movement. Named, with a one-tap swap.

  5. Routine: squat set 2 of 3 at 60 lb, rep 8 of 12, cue Chest up

    05Running it. Set 2 of 3, rep 8 of 12, cue spoken.

  6. Rest: 42 seconds, then squat set 3 of 3 at 60 lb; add 15 seconds or Skip

    06Rest. Counted down, next set named, skippable.

The app publishes a plain-text spec any assistant can follow. Copy the prompt, paste the routine back, and the coach runs it set by set with rest timers between.
Earned, not neon
  1. Three reps, a three combo, plus 11 session XP

    01Early. Three clean reps, a small drift of XP.

  2. Ten reps, ten combo, the spoken cue Ten clean

    02Ten clean. A pop, and the coach says it.

  3. Twenty-five reps, twenty-five combo, shimmers

    03Twenty-five. Shimmers, not a slot machine.

  4. Fifty reps, fifty combo, a beam

    04Fifty. A beam.

  5. A hundred reps, a hundred combo in gold, the spoken cue A hundred clean

    05A hundred clean. Gold.

  6. You tab: level 12, 2,340 of 3,000 XP, 42 workouts, 3,180 total reps, synced

    06The You tab. Level, XP to next, totals; synced when signed in.

Clean reps build a combo, combos multiply XP, milestones get a word from the coach, and the level lives on the You tab. Computed on the phone, mirrored to an account only when you sign in. The numbers are the design system's fixtures.

Why this matters

GoodRep.fit is the same instinct as the rest of the studio, pointed at a camera instead of a chart: compute the facts locally and deterministically, put a human-shaped interface on top, and design the system so that scaling use does not scale the cost. It is also the venture with the least room to hide. A coach that counts a bad rep as a good one is worse than no coach, so the gates, the calibration, and the READY state are not polish. They are the product.

See it live at goodrep.fit →

Computer VisionOn-device AIPWAMediaPipeWeb SpeechBeta

Working on something similar?

Book an intro call and I’ll walk you through how the same systems thinking applies to your AI work.