TURGORby Augmented Engineer
The Science · Complete Transparency

Every equation in the engine, lined out.

Most study apps hide their scheduling behind the word "algorithm" and ask for trust. Here is TURGOR's entire brain instead — the actual math, exactly as it runs on your iPad, with the reasoning behind every constant. If a formula on this page ever disagrees with the app, that's a bug, and I want to hear about it.

The contract, before any math: every problem in your vault always has a next-review date. Overdue problems never expire, never silently drop, and anything that doesn't fit today rolls to tomorrow with its urgency intact. Nothing gets lost in the shuffle — the rest of this page is the machinery that keeps that promise.
01

The scheduling core: SM-2 + Time-Box

The foundation is the SM-2 spaced-repetition family — the most studied scheduling model in existence — with one addition earned the hard way: the clock is part of the evidence. Exam problems aren't vocabulary cards; a right answer that took triple the target time is not the same knowledge as a right answer on pace.

After every rated attempt, the engine computes a time ratio and an adjusted quality:

Time-Box · speed tunes ease, never the verdict
Rt = clamp( target ÷ actual,  0.5 … 1.2 )
if actual < 20% of target:  Rt capped at 1.0   — the anti-recognition floor

qadj = clamp( q × Rt,  0 … 5 )        q = your rating (Again 0 … Easy 5)

EF′ = max( 1.3,  EF + 0.1 − (5 − qadj) × (0.08 + (5 − qadj) × 0.02) )

Read the floor line again — it's my favorite constant on this page. Solve a 40-minute problem in 6 minutes and you get no speed bonus, because recognizing an answer you've seen before isn't the same as working the mechanics, and it shouldn't inflate your schedule.

The adjusted quality feeds the ease factor only — never the pass/fail verdict. That kills the classic SM-2 cliff: a slow-but-correct solve gently erodes ease (it comes back a bit sooner) instead of nuking your interval to one day and burying you in reviews you didn't earn.

Interval progression · correctness schedules
rated Again (q < 3):   reps = 0,  interval = 1 day     the curve restarts

rated correct:        rep 1 → 1 day
                      rep 2 → 6 days
                      rep n → interval × EF′

overrun cap:  rep ≥ 3 and actual ≥ 2 × target → interval holds, doesn't grow
              (that's a fluency gap, not a memory win)
fuzz:         intervals > 3 days get ±8% jitter, so problems rated the
              same day don't all come due the same future day
02

The priority score: what surfaces first, and why

When more is due than fits your day, problems compete. The score is four honest factors, multiplied:

Per-problem priority
score = w × m × g ÷ c

w  topic weight      your NCEES blueprint %, normalized so the mean over
                     your topics is 1.0 — only relative size matters
m  subtopic mult.    weights within a topic, normalized to mean 1.0 per topic
g  mastery gap       g = clamp( (2.5 − EF) ÷ 1.2,  0 … 1 )
                     never attempted → g = 1 (you can't have mastered it)
c  time cost         c = max(1, target minutes)

In words: exam value × your weakness ÷ what it costs you. A weak problem in a heavy topic that only costs ten minutes is the best purchase on the board, and the math says so.

Three protections built into the normalization, because weights are where shuffles happen in other tools:

03

The exam horizon: nothing schedules past test day

Pure spaced repetition has a blind spot: master a problem in week two and it happily schedules your next review for a month after your exam. TURGOR caps every review date against the calendar:

The horizon clamp
effective review = min( natural SM-2 date,  today + ⌈days-to-exam ÷ 2⌉ )

The cap recedes as the exam approaches: 40 days out, nothing schedules past day 20. Ten days out, nothing past day 5. The result is that everything you know gets touched again before it counts — and cram behavior emerges from the math itself, not from a panic mode. The final 21 days are labeled the cram window because by then the clamp dominates everything.

03b

The capacity fit: a queue you can finish

Your daily capacity is a hard budget in minutes. The queue is packed by score, greedily, with one refinement: a problem too big for the remaining minutes is skipped, not stopped at — so a cheaper high-value problem behind it can still fill the gap. At most one In-Depth full solve per day.

What happens to what doesn't fit is the whole point: it rolls. Still due, still scored, competing again tomorrow — where the shrinking horizon makes it more urgent, not less. A rolled problem cannot roll forever; the math won't let it.

And inside the cram window, greens rest. Cram ignores normal intervals, so without this rule a problem you just rated Easy would re-enter the very next session — cheapened by its tier discount, it would actually outrank problems you'd never attempted. So a problem whose last rating was Easy steps out of the cram pool for max(1, days-to-exam ÷ 2) days since its last attempt, then may return for one final pre-test confirm. Coverage beats polish when the calendar is short. (Found by a beta tester cramming for a school test — reported from inside the app, fixed the same day. The system works.)

04

The Tier Model: your rating is the prescription

Problems are classed by size — Rivet (short, must be automatic), Drill (15–45 min fundamentals), In-Depth (45+ min monsters). For In-Depth problems, the rating you give doesn't just pick a date — it prescribes the task next time:

You ratedNext session isAtBecause
Again / HardFull Solvebase timeNo shortcuts on a problem that's beating you.
GoodSetup Onlymax(5, base ÷ 3)FBD, governing equations, method — stop before arithmetic. The setup is the engineering.
EasyConcept Reviewmax(3, base ÷ 10)Approach and traps, fast. Mastery earns the discount.

It's absolute and it's reversible: struggle during a Setup Only and rate honestly — the problem promotes straight back to Full Solve. Drills and Rivets are always a full solve; a 12-minute problem doesn't need a discount program.

This is the mechanism that keeps a 400-problem vault reviewable in 90 minutes a day. Mastered monsters never leave the rotation — they get cheap. Retained and affordable, which is the entire game.

05

The guardrails: when the engine overrules itself

06

The honest metrics: numbers built to disagree with you

True Accuracy · from post-solve debriefs
every attempt is one of:  truly right · mechanical slip · wrong

True Accuracy = truly right ÷ (right + slips + wrong)

Slips (setup perfect, dropped a sign in row four) are tracked separately because the cure is different: slips need checking discipline, wrongs need concept work. An app that averages them prescribes the wrong medicine for one of them every time — and an app that counts "basically right" as right is flattering you with points the exam will not award.

The Forecast · napkin math on purpose
solid    = problems currently rated Good or Easy
required = (rotation − solid) ÷ days to exam        problems/day that must turn
pace     = your attempts over the last 7 days ÷ 7   what you actually did

pace ≥ required  →  ON PACE     otherwise  →  BEHIND

No opaque readiness percentage, no model you can't audit. Arithmetic you could check on a napkin — which is exactly why you can believe it at 10 PM.

07

Why this should work: the research this stands on

The standing offer: this page is the engine — there is no secret second algorithm. If you find a case where the app's behavior doesn't match this math, that's a bug. Report it from inside the app (Settings → Report a Bug or Idea) and I'll fix it or update this page, whichever is wrong.

Get TURGOR →  ·  back to the boring log