How the Nexus Engine works
Student data → algorithms → insights.
ThirtyPlus runs the Nexus Engine, a deterministic intelligence engine. Every mastery number, recommendation, and score projection traces to a statistical model over your answers, not a language model guessing. No LLM makes a decision.
How a single answer becomes insight.
Every answer you give runs through the same deterministic path. Never question → LLM → opinion.
correctness · timing · concept tags
Bayesian · IRT · graph · forgetting
beliefs · recommendations · Δ
rendered for you
A belief per concept, not a tally per question.
You don't learn questions. You learn concepts. So the Nexus Engine keeps a belief per concept, not a score per question. Every answer updates a Beta(α, β)posterior over your competence on that question's concept tag(s). The “X% mastery” you see is that posterior's mean (recency-decayed), not a naive correct-÷-total that forgets which questions you missed. Evidence shifts the whole distribution, so a single surprising answer moves it more than a single expected one.
What most apps do
Per-question tally
6 of 10 questions right · “60%” · which questions, and how hard, is already gone.
What the Nexus Engine does
Concept belief
A Beta(α, β) posterior · mean + a 90% band · every answer shifts it.
A miss on an easy item is more informative.
Per concept you hold a competence belief (Beta). Per section you hold a latent ability θ, a Gaussian the engine refines with every answer in that section. A three-parameter logistic (3PL) model turns each question's difficulty into P(you get this right | your θ). That probability is what makes answers comparable across questions of different difficulty, and it is what powers the surprise weighting below.
When you miss a question the engine expected you to get right, that is strong signal. It shifts beliefs hard. When you miss one it expected you to miss, that is barely information at all. Every answer is weighted by |outcome − P(correct)|, so a careless miss on an easy item moves your competence far more than a forgivable miss on a hard one.
Easy item. You miss
you missed →
Strong signal. Belief moves hard
Hard item. You miss
you missed →
Weak signal. Belief barely moves
A clean number is never worth a lie.
Every belief ships with a 90% credible interval. A concept you've practiced twenty times carries a tight band. One you've seen twice carries a band that spans nearly the whole range, and the engine says “low confidence” out loud instead of hiding it behind a tidy percentage. The projection gate goes further: until you have at least fiveattempts, the engine refuses to print a projected score at all. It prints “still building your signal.”
The 90% credible interval narrows as evidence accrues
A concept you nailed two months ago is not the same as one you nailed yesterday.
The engine folds an Ebbinghaus-style recency decay into every concept's effective competence with a roughly 14-day half-life (conservative, the one parameter worth tuning once there's enough data). A belief drifts back toward the prior as time passes. Recommendations read effective mastery, not raw stored competence, which is why a stale-but-once-mastered concept can resurface as a mission even though its stored value never dropped.
Illustrative decay shape on the real forgetting model.
Concepts aren't independent. The engine knows the ladder.
The engine carries a prerequisite graph. Algebra gates trigonometry, which gates pre-calculus, and propagates a miss upstream: a miss on a trigonometry question implicates algebra and geometry (its prerequisites), while a correct answer lifts the concepts that depend on it. Recommendations respect the ladder: if your weakest concept is gated by an unmastered prerequisite, the engine points you at the gate, not the gated concept. Practicing the blocker unblocks everything downstream.
Prerequisites: a miss propagates upstream
Depends on this: a win lifts downstream
“What should I study next?” is an optimization, not a vibe.
The Nexus Engine ranks candidate missions by expected score improvement per study minute, a real Δ-composite from the objective model, divided by real ACT-tempo minutes, then schedules them under your time budget, section balance, and prerequisite ordering. The study planner is shaped like an integer linear program (maximize total Δ subject to those constraints). Today it is a greedy solve, written so promoting to a true LP solver is one call swap, not a redesign. The greedy reports exactly what it relaxed, so nothing is silently truncated.
Ranked by expected Δ per minute
- 1Algebra Accuracy+0.4 pts · 12 min≈ 0.033 Δ/minrecommended
- 2Reading Inference+0.2 pts · 11 min
- 3Grammar Precision+0.1 pts · 10 min
No fake numbers before you've earned them.
A brand-new student gets a cold-start prior: per-concept Beta(1, 1) (uniform, 50% mean), section θ = 0 (the population mean), and an empty mastery graph. The engine does not hallucinate a starting profile. It admits ignorance with clean priors and updates from the first answer. The first mission is still intelligent: it targets the section with the widest uncertainty band (exploration) and the concept with the steepest prerequisite fan-out (leverage). As evidence accrues, the prior's influence shrinks and the engine transitions to exploitation automatically. No setup wizard, no personality quiz.
if you share one
section scores, anchored
seeds the 3PL model
already informed
Every student's answers make the engine smarter, without knowing who anyone is.
An operator-run batch job pools successes, pacing, and distractor-pick frequencies across the platform. It uses only counts: no uid, no email, no per-student identity, to calibrate each question's difficulty (the IRT b parameter). The engine then blends that calibrated difficulty toward the bank's prior. Your Firestore data is yours alone: the security rules forbid any student from reading another student's contributions. Only the pooled, contribution-anonymous aggregate ever feeds back, and today even that flows through an admin-run batch, not live client reads.
pooled as counts only
no uid · no email
calibrates difficulty b
for the next student
Every sentence you read is rendered from a structure.
The recommendation's reason, the wrong-answer diagnosis, the score projection — none are generated by a language model. The Nexus Engine produces a ReasonObject, a deterministic renderer turns it into prose. Adding a new kind of explanation is one new template branch, not retraining a model. An LLM would never choose your next mission, diagnose your miss, or project your score. Those are the engine's job, and the engine is deterministic.
engine updates beliefs
structured, typed
deterministic templates
no generation, no hallucination