, engine, progression

How Outrep decides what you should lift today

The five-rule progression engine behind every ghosted target, in plain English: rep ranges, the RPE cap on adding weight, and when a deload fires.

Every target Outrep ghosts into a set row comes from one function in the shared engine. It is pure arithmetic over your own logged sets; no model, no server, no guesswork. This is the whole rule set, in the order it is evaluated.

What it reads

  • Your last 1 to 8 finished sessions of the exercise that contain a completed working set, newest first. Abandoned sessions never take a slot. Only completed working sets count: warm-ups, drop sets and unfinished sets are ignored.
  • The increment. The exercise’s own setting if you gave it one, else the equipment default: barbell 2.5 kg, dumbbell or kettlebell 2 kg per hand, machine or cable 5 kg (imperial profiles: 5 lb, 5 lb, 10 lb). Bodyweight and reps-only exercises have no increment and progress by reps.
  • The routine’s planned sets, if the workout was started from one, and any program rule on the first working set.
  • RPE, whenever it is present. If the RPE column is off, the post-set “Easy / Right / Brutal” chips store 7, 8 and 9.5.
  • Your bar weight, for barbell, Smith and trap-bar exercises. The engine never suggests less than the bar.

The rep range

Everything hinges on a BOTTOM and a TOP.

  • Program rule. A linear rule (3 × 5, +2.5 kg) pins TOP = BOTTOM: add weight the moment every set lands at 5. A double-progression rule brings its own range, 6–10 or 8–12. The rule’s increment replaces the equipment default.
  • Routine target. BOTTOM is the first planned working set’s reps; TOP is BOTTOM + 2. “3 × 10” means “10, then climb to 12, then add weight”.
  • History only. BOTTOM is the fewest reps in the oldest consecutive recent session done at last session’s weight; TOP is BOTTOM + 2. Anchoring on the oldest session at that weight keeps the target fixed while your reps climb (8, 9, 10, add weight) instead of chasing every session.

The rules, first match wins

Rule When Target
a · No history No completed working sets yet The routine’s plan, or nothing
e · Deload Each of the last two sessions had at least half its working sets (rounded up: 2 of 3, 3 of 5, 1 of 1) at least 2 reps under BOTTOM Weight × 0.9, floored to the increment, never below the bar; every set = BOTTOM
b · Add weight Every set at or above TOP, and either no RPE known or average RPE ≤ 8.5 Weight + increment, every set = BOTTOM. Reps-only: same load, every set = TOP + 1
c · Consolidate Every set at or above TOP but average RPE > 8.5 (“Brutal” is 9.5) Same weight, same reps
d · Add a rep Some set below TOP Same weight; each set gets last + 1, sets already at TOP keep theirs

Deload is checked before “add a rep” on purpose: a set that missed the bottom is also short of the top, and the deload should win.

A single-set session counts for rule b. AMRAP-style exercises exist, and one set at the top is still every set at the top.

What is guaranteed

The engine is property-tested, and three things always hold:

  1. Any weight it computes is a multiple of the increment. 0.5, 1.25, 2, 2.5 and 5 kg all snap exactly.
  2. No suggested weight is below the bar. When the floor kicks in it rounds up to the increment so the bar is still loadable.
  3. Rep targets stay between “last reps” and “last reps + 1”, except when a rule resets them to BOTTOM.

The sentence under “Why?”

The suggestion carries its reasoning as data, so the app words it in your language and unit:

  • You hit 8, 8, 8 at RPE 8 last time, so add 2.5 kg and aim for 6+.
  • You hit 8, 8 last time and it felt easy, so add 2.5 kg and aim for 6+.
  • You did 8, 8, 7 at 80 kg last time, so keep the weight and beat each set by a rep.
  • Two sessions in a row fell short of 10 reps, so drop to 70 kg and rebuild from 10.

What it is not

It is not a coach and not medical advice. It does not know that you slept four hours, that the bar was a different bar, or that the gym was out of 1.25s. It knows what you logged, and it applies the same five lines to it every time. The lines are short enough to disagree with, which is the point: tap the number and type your own.

The fixture table behind this post has 35 cases, one per rule and edge case, and any change to the engine has to change the table first. Free users get the target on one exercise per workout; Outrep Pro turns it on for every exercise. See the programs for the rules each one ships with, or any exercise page for how it applies to that lift.

Get Outrep

Free for logging, history, watch, import and export. Pro for the engine on every exercise.