Skip to content
Methodology

Every chart,
opened up.

Most lifting apps show you a number and trust you not to ask. flexRep does the opposite. Every visualization has a methodology card one tap away — the formula, the literature it leans on, how to read it, and what it doesn’t capture.

Below: the same cards that ship inside the app, organized by what they describe.

Strength · 01

Estimated 1RM, stall detection, and strength velocity.

Three of the most useful strength signals in the working-rep range. None invented here. All cited.

e1RM × WEEK · LAST 16 WK
+12 lb PR this week
Estimated 1RM (e1RM) how it’s calculated ↘
WHAT IT MEASURES

A back-calculated single-rep max from any working set.

FORMULA e1RM = weight × (1 + reps / 30)
HOW TO READ IT

Plotted as a line per exercise, weekly. Use it to compare 225×5 to 245×3 honestly. They're roughly equivalent — the e1RM tells you so.

WHY IT MATTERS

The cleanest comparable strength metric across rep ranges. Epley's formula has the strongest literature support in the 1–10 rep range most lifters work in.

Stall detection how it’s calculated ↘
WHAT IT MEASURES

A flag raised when an exercise's e1RM stops progressing for several weeks despite stable effort.

HOW TO READ IT

A pulsing orange dot on the exercise card. Tap to see the contributing weeks and the stable-effort window.

WHY IT MATTERS

Stalls are the most under-diagnosed source of stalled programs. Most lifters notice four to six weeks late. flexRep flags earlier — and tolerates a few missed stalls to avoid crying wolf.

Strength velocity how it’s calculated ↘
WHAT IT MEASURES

The slope of e1RM over a rolling window, expressed as kg/week.

HOW TO READ IT

Positive = trending up. Negative = decay. A long negative tail with stable effort is the deload signal — your nervous system asking for a week off.

WHY IT MATTERS

Acute-vs-chronic strain analogues for strength. Trending velocity reads smoother than week-over-week deltas.

Volume · 02

Fractional sets and the 11-axis radar.

Hypertrophy research is clear: secondary mover work contributes — just not at full weight. We weight accordingly, and we cite our weighting honestly.

MUSCLE BALANCE · 4 WK
Fractional-sets muscle volume how it’s calculated ↘
WHAT IT MEASURES

A weighted sum of weekly sets per muscle, where primary movers count more than secondaries.

HOW TO READ IT

An 11-axis radar. A balanced lifter trains across the polygon, not at three points of it. The center-of-mass should sit on center.

WHY IT MATTERS

Counting everything as a full set over-credits compounds; ignoring secondaries under-credits them. The weighting is our practical answer to Schoenfeld's finding.

Rep-range drift how it’s calculated ↘
WHAT IT MEASURES

A stacked-area chart of how your set distribution shifts across rep ranges over a long window.

HOW TO READ IT

A widening light band at the top = drifting toward easier work. A growing dark band at the bottom = chasing heavier singles. Stable bands = consistent programming.

WHY IT MATTERS

Slow drift toward higher reps is a stealth source of plateaus. The chart makes it impossible to miss.

Movement pattern breakdown how it’s calculated ↘
WHAT IT MEASURES

Sets per movement pattern (push, pull, squat, hinge, carry, lunge, core, rotation) as a stacked bar over time.

HOW TO READ IT

Compare bar heights week-over-week. A push-heavy block shows up immediately. A neglected hinge axis is similarly visible.

WHY IT MATTERS

Movement-pattern balance is the foundation of injury-resistant programming. Most lifters drift toward what they like without realizing it.

Effort · 03

RPE, RIR, and the effective-rep model.

Effort isn’t iron. Two sets at 225×5 can be wildly different stimuli depending on how close to failure each one ran.

EFFECTIVE REPS · WEEK 14
Chest
94
Lats
78
Quads
110
Hams
36
Hams under target. Bring up next block.
RPE / RIR per set how it’s calculated ↘
WHAT IT MEASURES

Rate of Perceived Exertion on a half-step scale. Reps in Reserve is the arithmetic dual.

HOW TO READ IT

Tap a set to log RPE. The half-step granularity is informative without faking precision.

WHY IT MATTERS

RPE-aware analytics use effort, not just iron. A 225×5 at RPE 8 is a different stimulus from 225×5 at RPE 9.5. flexRep's stall detector requires stable RPE — a stall at low RPE is a deload signal, not a plateau.

Effective reps how it’s calculated ↘
WHAT IT MEASURES

Reps performed close to failure, where the bulk of the hypertrophy stimulus lives.

HOW TO READ IT

A weekly count of effective reps per muscle group. Compare against the accepted landmarks; we won't reprint them here.

WHY IT MATTERS

Total sets is a blunt instrument — twenty reps at low effort are mostly cardio. Effective reps focus on the work that grows tissue.

Recovery snapshot how it’s calculated ↘
WHAT IT MEASURES

A per-muscle-group readout of fatigue accumulation since the last training session.

HOW TO READ IT

A horizontal bar per muscle: full bar = recovered, half = mid-recovery, low = freshly trained. Use it to pick what to train today.

WHY IT MATTERS

Most lifters intuit recovery wrong — they train the muscle that's sore, miss the one that's ready. The snapshot is a calibrated suggestion, not a guess.

Identity · 04

The strength glyph and rhythm waveform.

Two visualizations that are uniquely flexRep — generative, shareable, brand-defining. Both are computed from your data; both are decorative; both are labelled as such.

RHYTHM WAVEFORM · ONE SESSION
PEAK · 1 PR · 12 SETS 68 min
Strength glyph how it’s calculated ↘
WHAT IT MEASURES

A generative radial shape built from your movement-pattern volumes.

HOW TO READ IT

Each axis is a movement pattern. Longer spoke = more sets. Warmer color = more frequent training. More circular = more balanced.

WHY IT MATTERS

Most lifting apps give you a number for your training. flexRep gives you a face for it. Share-card material.

Workout rhythm waveform how it’s calculated ↘
WHAT IT MEASURES

A Canvas-drawn signature of one session: each set is a peak, each rest is a valley.

HOW TO READ IT

High peaks = heavy sets. Wide peaks = high-rep sets. Deep valleys = long rest. Heavy-singles day looks nothing like a pump day.

WHY IT MATTERS

Your workout has a shape, and the shape is yours. Visually unique. Meaningful. Shareable.

Approach + provenance

What each number leans on.

We won’t reprint our exact tunings — those are ours. But we will tell you, for every metric in the app, which body of research it’s grounded in and which parts are in-house judgment.

Metric
Approach
Provenance
e1RM
Back-calculated single-rep max from a working set
Epley family · 1985
RIR
Arithmetic dual of RPE
Helms et al., 2018
Stall flag
Moving-window e1RM stability check with an RPE-stability gate
In-house · literature-informed
Strength velocity
Trend over a rolling window of recent e1RMs
In-house · standard time-series shape
Fractional muscle volume
Weighted sum where primary movers count more than secondaries
Schoenfeld 2017 / 2019 — adapted
Effective reps
Reps performed close to failure, computed from RPE/RIR
Helms / Israetel framing
Recovery snapshot
Recency × accumulated load, normalized
In-house · ambient indicator only
Gym hue rotation
A deterministic per-gym hue offset
In-house · purely cosmetic
Glyph color
Warmth scales with training frequency
In-house · purely cosmetic

We cite the literature we lean on. The specific tuning choices — windows, weights, thresholds — are part of what flexRep is. If you’d score things differently, your own numbers are one CSV export away.

Implementation receipts

Where the surface meets the code.

The specifics that didn’t fit on the methodology cards. For people who want to know which API, which formula, which year. Each card pairs the user-facing surface with the actual mechanism behind it.

e1RM math, blended

Brzycki for r ≤ 6, Epley for r 7–10, capped at 10 reps because beyond that no formula is validated. Your per-set display still respects whatever single formula you picked in Settings. The charts all read from the same blended e1RM, so Volume Trend, Strength Progression, and Intensity Distribution can't disagree.

Brzycki 1993 · Epley 1985

Stall detection

Linear regression on the last six weeks. The slope's confidence interval drives the classification — progressing when the CI excludes zero positive, regressing when it excludes zero negative, maintaining otherwise. After four weeks at regressing or maintaining, the chart runs cause attribution and ranks the top three likely causes by signal strength.

In-house · standard time-series shape

Intensity Distribution fallback

When no training max is set, %1RM bins use the best e1RM from the prior eight weeks — not the concurrent window. The PR set doesn't determine its own percentage. The distribution is honest either way.

In-house · structural correctness

Programs as a typed graph

Program → Mesocycle → Microcycle → Routine → routine exercises → per-set prescriptions. Every analytic that touches a program reads from the graph, not a string. Prescribed values get stamped onto each set at log time so the receipt shows the delta inline (5 × 230 · target 5 × 225).

In-house · schema

Watch transport durability

Sets logged on the wrist queue durably, not fire-and-forget. A local store catches everything, persists through a Watch app crash, and reconciles when both devices wake. iPhone in the locker — fine. Airplane mode — fine.

Apple Watch sync · durable transfer queue

On-device dictation

"225 by 5" parses through a regex pipeline first, with a Foundation Models fallback for ambiguous phrasings. No server round-trip. Two Watch complications — current exercise + set count, rest timer countdown — across all three accessory families.

Foundation Models · on-device only

RPE drift by zone

When a training max is set, drift is computed per %1RM zone (60–70 / 70–80 / 80–90) instead of against a single modal weight. The watch list surfaces the top three exercises with the steepest positive slope at constant relative load — a deload signal grounded in your data, not a calendar recommendation.

In-house · block-aware

Set type schema

Drop-set children link to a parent set. Cluster sets carry within-cluster rest seconds. Myo-rep chains are first-class. The receipt indents children under the parent; analytics filters drop them out of working-set counts so volume isn't double-counted.

In-house · schema

Wilks · DOTS · IPF GL gating

Three separate fields in the model — identity, pronouns, formula reference. Only the reference drives sex-keyed math, and it's explicitly opt-in. With reference + a bodyweight within ±30 days of the lift, the PR card shows all three scores with cited formulas. Without, the scores hide and the empty state explains why.

Wilks 1994 + 2020 update · DOTS · IPF GL

The .flexrep bundle

Full schema in a single JSON bundle with SHA-256 checksum. Includes programs, mesocycles, microcycles, prescriptions, body photos, personal records — not just sets. Round-trip tested every release. CSV ships in two formats in one share action: normalized for scripts, Numbers-friendly with grouped tables.

In-house · format

Reversible imports

Every CSV import (Strong, Hevy, generic, HealthKit) stamps a shared batch ID on every row it creates. Reverting removes only those rows; native logs are left alone. Imports are a data-poisoning risk by default — the batch boundary defangs them.

In-house · safety

AI pipeline + number validator

Rule-based diagnostics produce a structured payload with citations. The on-device language model paraphrases under a "no new numbers" rule. A regex validator extracts every number from the model output and checks each appears in the payload. If validation fails, the plain-text rule-based summary ships instead. Three sentences on Sunday morning.

Foundation Models · on-device · validated

Per-gym plate calc + warmup ramp

Plate calculator reads the active gym's inventory (plates, bar weight, dumbbell increments, cable stack increments). Proposes only loadings that are actually loadable. Warmup ramp generator plate-rounds each rung to what's on the rack and tags the sets so warmup-filter mode drops them from volume.

In-house · per-gym entity

Lock Screen plate widget

Plate-target widget across the three accessory widget families. Same widget surface on the Watch face. Set the target via the widget config or a Siri Shortcut. Load the bar without unlocking.

Apple Widgets · App Intents

iCloud sync, private only

Your private iCloud — your account, your encryption keys. No flexRep server in the loop, no analytics pipeline, no server-side aggregation. The recovery path of last resort is Apple's platform, not a vendor we own.

iCloud · private sync
WANT TO GO DEEPER?

The receipts behind every chart.

Every method on this page is grounded in published literature, an Apple framework, or a documented in-house assumption. The full list — papers, authors, years, what we adapted, where we made calls — lives on its own page.

See the receipts

No black boxes.

Every formula. Every source. Every assumption — visible.