Skip to content
Adaptive Tutor

In build · no learners yet

A tutor that knows exactly where your child is.

Not a chat window waiting for a good question. A map of sixty individual skills, a running probability your child knows each one, and a gate they cannot talk their way past.

Mastery posterior · one skill · one child

live rule
0.95 — MASTERY THRESHOLD 1.00.50.0 ATTEMPT 1 SLIP ATTEMPT 12

Two dips are answers the child got wrong after getting it right. The posterior falls, and the gate stays shut until the evidence comes back.

packages/learner-model/src/index.ts · updatePosterior() · masteryGate()

60 skills shipped67 prerequisite links Grades 6–9No trackers, anywhere

01 — the graph

Learning is not a feed. It has a shape, a sequence, and a floor you have to reach before the next thing means anything.

Sixty knowledge components, joined by sixty-seven prerequisite links and six encompasses relations, where mastering the broader skill subsumes the narrower one. The scheduler can only select a skill whose every prerequisite has already passed the gate.

This is the real graph, not an illustration of one — the same file the product reads at runtime.

Prerequisite graph · prealgebra

60 nodes

Nodes fill as you scroll: this is the order the scheduler is allowed to unlock them in.

data/kc-graph/prealgebra.json · 60 components · 73 edges

The sixty skills, and the standards they answer to

Every knowledge component the scheduler can select, in curriculum order, with its Common Core reference.

Grade 6 38 skills

  1. The Integer Number Line and Notation 6.NS.C.5 · 6.NS.C.6a
  2. Comparing and Ordering Integers 6.NS.C.7a · 6.NS.C.7b
  3. Absolute Value as Distance from Zero 6.NS.C.7c · 6.NS.C.7d
  4. Exponents and Powers of Integers 6.EE.A.1
  5. Properties of Operations Applied to Integers 6.EE.A.3
  6. Equivalent Fractions 4.NF.A.1 · 6.NS.A.1
  7. Simplifying Fractions to Lowest Terms 6.NS.A.1
  8. Comparing and Ordering Fractions 6.NS.A.1 · 4.NF.A.2
  9. Converting Between Improper Fractions and Mixed Numbers 6.NS.A.1 · 4.NF.B.3.b
  10. Adding and Subtracting Fractions with Like Denominators 6.NS.A.1 · 5.NF.A.1
  11. Adding and Subtracting Fractions with Unlike Denominators 6.NS.A.1 · 5.NF.A.1 · 5.NF.A.2
  12. Multiplying Fractions 6.NS.A.1 · 5.NF.B.4
  13. Dividing Fractions (Multiply by the Reciprocal) 6.NS.A.1
  14. Converting Fractions to Decimals 6.NS.A.1 · 6.NS.B.2
  15. Converting Decimals to Fractions 6.NS.A.1 · 6.NS.B.2
  16. Adding and Subtracting Decimals 6.NS.B.3
  17. Multiplying Decimals 6.NS.B.3
  18. Dividing Decimals 6.NS.B.3
  19. Rounding Decimals to a Given Place 5.NBT.A.4 · 6.NS.B.3
  20. Understanding Ratios and Ratio Notation 6.RP.A.1
  21. Equivalent Ratios 6.RP.A.1 · 6.RP.A.3a
  22. Unit Rates 6.RP.A.2 · 6.RP.A.3b · 7.RP.A.1
  23. Ratio Tables 6.RP.A.3a
  24. Percent as a Ratio to 100 6.RP.A.3c
  25. Converting Between Percents, Decimals, and Fractions 6.RP.A.3c
  26. Finding a Percent of a Number 6.RP.A.3c
  27. Finding What Percent One Number Is of Another 6.RP.A.3c
  28. Variables as Unknowns 6.EE.A.2
  29. Writing Algebraic Expressions from Word Phrases 6.EE.A.2a · 6.EE.B.6
  30. Evaluating Expressions Given a Variable's Value 6.EE.A.2c
  31. Expressions vs. Equations 6.EE.A.2 · 6.EE.B.5
  32. The Equality Property (Balancing Equations) 6.EE.B.5
  33. Solving One-Step Equations by Addition 6.EE.B.7
  34. Solving One-Step Equations by Subtraction 6.EE.B.7
  35. Solving One-Step Equations by Multiplication 6.EE.B.7
  36. Solving One-Step Equations by Division 6.EE.B.7
  37. Checking a Solution by Substitution 6.EE.B.5
  38. Translating Word Problems into One-Step Equations 6.EE.B.6 · 6.EE.B.7

Grade 6–7 6 skills

  1. Order of Operations with Integers (PEMDAS/GEMDAS) 6.EE.A.2c
  2. Multi-Step Integer Expressions (All Four Operations) 6.EE.A.2c · 7.NS.A.3
  3. Rational Number Word Problems (Fractions and Decimals Combined) 6.NS.A.1 · 6.NS.B.3 · 7.NS.A.3
  4. Identifying and Combining Like Terms 6.EE.A.3 · 7.EE.A.1
  5. The Distributive Property (Single-Variable) 6.EE.A.3 · 7.EE.A.1
  6. Solving Real-World One-Step Equation Word Problems 6.EE.B.7 · 7.EE.B.4a

Grade 7 16 skills

  1. Adding Integers with the Same Sign 7.NS.A.1b
  2. Adding Integers with Different Signs 7.NS.A.1b · 7.NS.A.1c
  3. Subtracting Integers as Adding the Opposite 7.NS.A.1c
  4. Multiplying Integers: Sign Rules 7.NS.A.2a · 7.NS.A.2b
  5. Dividing Integers: Sign Rules 7.NS.A.2b · 7.NS.A.2c
  6. Integer Operations Fluency (Add, Subtract, Multiply, Divide) 7.NS.A.1 · 7.NS.A.2 · 7.NS.A.3
  7. Square Roots of Perfect Squares 8.EE.A.2
  8. Integer Word Problems: Temperature, Elevation & Finances 7.NS.A.3
  9. Recognizing Proportional Relationships 7.RP.A.2a
  10. Constant of Proportionality 7.RP.A.2b · 7.RP.A.2c · 7.RP.A.2d
  11. Solving Proportions by Cross-Multiplication 7.RP.A.2c · 7.RP.A.3
  12. Percent Increase 7.RP.A.3
  13. Percent Decrease 7.RP.A.3
  14. Percent Word Problems: Discounts, Tax, and Tips 7.RP.A.3
  15. Scale Drawings and Scale Factor 7.G.A.1 · 7.RP.A.2
  16. Solving One-Step Equations with Fractional or Decimal Coefficients 7.EE.B.4 · 7.EE.B.4a
A stack of squared exercise paper photographed edge-on, the layered sheets forming fine horizontal strata.
The day, assembledTwelve items, chosen before your child sits down, in an order a person could check.

02 — the plan

The day is assembled before your child sits down. Most tools wait to be asked. This one arrives with an agenda, and the agenda is computed, not generated.

  • 6

    due reviews, most-overdue first, surfaced the day their memory is predicted to fade

  • 4

    frontier lessons — only skills whose every prerequisite already passed the gate

  • 2

    quiz items from skills already mastered, to keep them honest

Then it interleaves them, because blocked practice feels better and works worse. Pause a topic from the parent dashboard and it is provably absent from tomorrow's plan.

apps/workers/src/orchestrator/plan.ts · assemblePlan()

03 — the living session

Five things happen between an answer and the screen changing. Every one of them is code you could read.

The membrane

Every message in and out passes one package. Child input reaches a model, and model output reaches a child, only through packages/safety.

This is not a policy anyone has to remember — a CI test fails the build if any child-facing file imports a model client directly. Chat-template tokens and fake system directives are stripped deterministically before a classifier ever sees the text.

scripts/check-import-boundary.mjs · runs in pretest

The hint ladder

Four levels, and the answer isn't in the first three. A nudge, then a targeted sub-question, then one worked step, then a full worked example on a different problem with the same bones.

The structural part matters more than the tone: at levels one through three the correct answer is stripped from the payload before the request is sent. The tutor cannot leak what it was never given — not to a clever prompt, not to a determined twelve-year-old.

packages/safety/src/tutor.ts · redactAnswer()

The grader is not a model

SymPy decides. Language models never grade. Answers go to a symbolic-algebra service, not to a chatbot.

It proves equivalence symbolically, then by a distinct numeric-refinement path, then by sampling twenty points to a tolerance of 1e-6. So x+2 and 2+x are both simply correct. Input it cannot parse returns ungradeable — not wrong — and the learner model records nothing, so a typo never becomes a phantom gap.

services/mathcheck · POST /verify

Frustration fusion

Tone, latency and error streak, combined in code. A model reads the message for frustration; code makes the decision.

Code adds a point if response latency crosses 1.5 standard deviations above this session's own baseline, and another if the error streak hits three. Two points shortens the session. Three ends it warmly and flags it for the parent report. The model contributes an observation; it does not make the call.

apps/workers/src/orchestrator/frustration.ts

The mastery gate

0.95 confidence and two successes 48 hours apart. Both conditions, always — and the second is the one that matters.

Ten lucky guesses in a single sitting can never unlock a skill, and neither can one good afternoon. Advancement is arithmetic over the learner model: the dialogue cannot override it, cannot be persuaded, and cannot be in a hurry.

packages/learner-model/src/index.ts · masteryGate()

04 — try it

Try to talk your way past it. The stated rule, evaluated in your browser. Nothing is sent anywhere and nothing is retained.

masteryGate() · one skill

runs locally

advance if p(known) >= 0.95 AND successes >= 2 AND gap >= 48h

p(known)
0.62
successes
0
gap

Awaiting evidence — no successes recorded.

This is the stated rule, not a live learner model. No network, nothing retained.

05 — verification

No child has ever seen an unverified problem. Not as an aspiration — as a property of the pipeline. Items are manufactured offline and cannot reach a child without clearing every gate.

Nothing here depends on a model behaving well. Each stage is a filter that a template either survives or does not.

A sharpened graphite pencil resting on squared paper at a shallow angle, the grid falling out of focus.
Manufactured, then checkedAn item is written, run twenty-five ways, blind-solved, linted, and re-verified before a child can see it.

How a problem earns its way in

5 gates
  1. Drafted with its own proof. A model writes a parameterized template and a self-contained verification script.
  2. Run 25 ways. The script executes across twenty-five sampled parameterizations in a network-less sandbox. It must pass all of them.
  3. Blind-solved independently. A separate model call re-solves five rendered instances with no solution anywhere in its context. Any disagreement kills the template.
  4. Linted. Reading level, cultural neutrality, personal information.
  5. Re-verified to go live. Even after all that, an item is only promoted once its stored answer proves out symbolically a second time. Failures are quarantined and written to an append-only audit log.

apps/workers/src/factory · runFactory() · promoteVerifiedToLive()

06 — the learner model

A tutor with a memory. For every child, for every one of the sixty skills, the system holds a small piece of persistent state — and that state, not a session transcript, is the product.

This is the thing that compounds, and the reason leaving hurts: a new tool restarts the diagnostic and the entire spacing history at zero.

What a parent actually sees

Not a SmartScore. A mastery map across the whole graph, every session transcript in full, an append-only safety feed that requires acknowledgement, and a control that pauses a topic — which the next day's plan provably respects.

The promise a parent is buying is narrow and checkable: she can't subtract negative numbers, here is the plan, here is the proof it worked.

packages/db/src/dashboard.ts · withParentScope() · Postgres RLS backstop

Per-child, per-skill state

60 × 4
  • p

    A mastery posterior. A running probability the child knows this skill, updated after every answer, discounting lucky guesses and careless slips.

  • s

    A memory stability. How long this skill will survive without review. Each success stretches the next gap; a lapse cuts it to 30% and brings it back soon.

  • d

    A personal difficulty. This child's difficulty with this skill, not the population's.

  • t

    A due date, a rep count, a lapse count, and the moment it was mastered.

packages/learner-model — pure functions, property-tested, 100% branch coverage

07 — evidence

What we will not claim. This section exists because the alternative is being caught.

A venture founded on an overstatement is fragile in exactly one way: a competent person reads the literature, finds the overstatement, and stops believing anything else you said.

The two-sigma story, told correctly

In 1984 Benjamin Bloom reported that one-to-one tutoring under mastery conditions moved students about two standard deviations. That number is quoted constantly in edtech. Almost every quotation drops the title of the paper, which was “The 2 Sigma Problem — the two sigma was the target, and the economics of delivering it were the problem Bloom was posing to the field.

What sat underneath it: two University of Chicago dissertations, instructional units of roughly three weeks on narrow content, small samples, experimenter-designed rather than standardized tests, tutoring that replaced classroom instruction rather than supplementing it — and a tutored group held to a 90% mastery bar against a comparison group held to 80%, which means some of the gap is a difference in the bar rather than in the delivery.

Advertised vs. replicated

effect size

Every replication below. None of them reached it. We build on the replicated number, which is still worth building on.

docs/TWO-SIGMA-EVIDENCE.md — binding on all marketing copy

What happened when people tried to replicate it

Replicated tutoring effect sizes from the published literature
StudyScopeEffect
Cohen, Kulik & Kulik (1982)65 studies 0.33 SD0.84 on locally-written tests · 0.27 on standardized
Nickow, Oreopoulos & Quan (2020)96 randomized PreK–12 studies 0.37 SDnot one reached two sigma
Kraft, Schueler & Falken (2024)265 randomized trials 0.42 SD0.55 under 100 students · 0.16 above 1,000

Kraft's own benchmark puts anything above 0.20 SD in the large band, so these are serious effects. The honest summary is: large effect, contested magnitude, shrinking with scale and with the rigour of the outcome measure. Two sigma is a ceiling observed once, under conditions nobody has reproduced. We do not claim it, and you should distrust anyone who does.

The finding this product is actually built on

Bastani and colleagues (2024) randomized nearly a thousand Turkish high-school maths students. Unrestricted GPT-4 improved their performance while they were using it by 48%. Then the tool was taken away and everyone sat an exam. That group scored 17% worse than students who never had access at all. A tutor-configured version with safeguards came out statistically indistinguishable from the control group.

Read that carefully, because it is the whole design brief. Performance and learning moved in opposite directions, and the variable that separated them was whether the system handed over answers. The safeguards prevented harm; they did not, in that study, produce a gain. That is why the answer is physically absent from the model's context during an active attempt — and why we are not going to tell you it makes your child learn 48% faster.

So what are we entitled to say today?

Almost nothing about outcomes — and we would rather write that sentence than have you find it out. There are no learners yet, no cohort, no measured result. The held-out assessment banks are frozen and write-protected before the first item is placed in them, and the preregistration directory is append-only, because the temptation to quietly improve the instrument arrives precisely when the results disappoint.

What we will claim is everything on this page above this section: what the system does, what it verifies, what it withholds, and what it refuses to optimize. Daily actives, session length, streaks and self-reported confidence are logged as health signals and will never appear in a claim about learning. When there is a real number, it will arrive with its comparison condition, its instrument, its delay, and its attrition — or it will not arrive.

docs/TWO-SIGMA-EVIDENCE.md · docs/EFFICACY.md — binding on all marketing copy

08 — trailhead

Built for the year your child stops letting you help. Grades 6–9, pre-algebra through the start of algebra — the handoff point where most parents run out of road.

$29/month

$290/year · second child −30% · 14-day trial

Adaptive Tutor is in build. The engine, the verifier, the safety membrane and the parent dashboard run today; the shipped curriculum currently covers 60 pre-algebra skills joined by 67 prerequisite links, and we are widening it before we take anyone's money.

Request early access

Or write to hello@adaptivetutor.dev directly — the button above opens a mail client, which is not much use inside webmail.

Overhead view of a pale oak table with a closed squared-grid exercise book, a sharpened pencil and a small eraser, with wide empty space beside them.
Where it actually happensNo trackers on this page, and none anywhere near a child's screen — not as a setting, as a build-failing test.