ZeoFitRequest access

How it works

From a picture of a set to a number you can train on.

ZeoFit was built the other way round from most of this category. Rather than handing video to a model and hoping for a verdict, it extracts the geometry of your movement, reduces it to measurements, and is explicit about which measurements it is entitled to make.

  1. 01

    The camera watches the movement, not the room

    A pose model finds your body landmarks in every frame. The joints, several dozen times a second. That's the raw signal: coordinates over time, and every number below is derived from it. None of the analysis depends on recognising your face, your gym or your clothes.

  2. 02

    Geometry turns landmarks into reps

    Joint angles come out of those coordinates, and reps get counted off whichever joint is actually driving the movement. The knee on a squat, the elbow on a tricep extension. Picking the right joint per movement is why a lift with your legs out of frame still counts properly instead of returning zero.

  3. 03

    The slowdown becomes an estimate of reps in reserve

    Each rep gets a duration and a range. Across the set, the shape of the slowing is the fatigue curve, and we read it against what your reps look like as you tire, not against an average of everyone. That part has to be personal to be worth anything.

  4. 04

    Thresholds are a coaching opinion, and they are written down

    What counts as full depth, a complete lockout or a controlled lowering is different for every movement. A leg press where you deliberately don't lock out shouldn't be marked down for it, and an early version of this did exactly that. Those thresholds live in a per-exercise library instead of one universal rule, so they can be argued with and changed.

  5. 05

    Language comes last, from the numbers

    Coaching is written against what was measured on your set, with the measured angles attached, not as generic advice about the lift. Where a dimension could not be assessed, the summary says so in the same breath as the things it could.

What comes back

Three measurements, per rep and across the set.

Tempo

How long each rep took, and how that changed

The fatigue curve, and what the reps-in-reserve estimate is built from. If your reps slow while your range holds, you paid for the fatigue in speed. That's a set taken close to failure with your technique intact.

Range

How far each rep travelled, in degrees

Per rep and across the set: whether your range held from first to last, or quietly shrank while you kept counting them as full reps.

Reps

Counted off the joint that's actually moving

A lying tricep extension gets judged by the elbow, not by a knee that never enters the frame. We check rep counts frame by frame against real footage, including the tracking glitches that look like an extra rep and aren't.

And what is not computed

  • Bar path. Modelled in the data, computed by nothing today.
  • Left and right symmetry. Only meaningful when both sides are visible, which one camera angle rarely gives.
  • Load. Not recoverable from body position, so no volume totals and no one-rep-max estimates.

These are listed because a metric existing in a data model is the most common way a product ends up claiming it. The screen beside this one is a real analysis, and it says the same two things unprompted.

The ZeoFit app showing a rep-by-rep timeline and per-dimension metric bars for an analysed leg press.
Rep by rep, with each graded dimension broken out.

What gets left out

A wrong number is worse than a missing one.

You will train against it. We have already caught this analysis marking down correct technique, by grading lockout on a leg press where not locking out is the right thing to do.

Request early access