Every number we publish, and how you can check it.
Edtech publishes outcome numbers that nobody can audit, and the market has learned to discount all of them. So this page does the opposite: it states where each figure comes from, prints the sample size, links the endpoint that computed it, and keeps the ones that failed.
- SourcedA figure someone else measured, on someone else's data, that we can point you at. Free to claim and worth exactly as much as the source.
- MeasuredA figure computed from our own logs, at request time, with its sample size and its date. Falsifiable. Nobody in this category publishes one.
- Measured, and failedThe same thing, for something that did not work. It stays on the page. A proof page you can only pass is not a proof page.
The scheduler
On an open benchmark of about 727 million real Anki reviews, FSRS-6 — the scheduler Studara runs — predicts recall with a binned RMSE of 0.065. Read plainly: when it says seven in ten, the true rate is usually within about six or seven points of that.
Benchmarked on an open third-party dataset — 10,000 Anki users, published code, published data — and not on our own students.
FSRS is not the most accurate model on that benchmark. Several neural networks score better at predicting recall, and so does a plain moving average; the top entry beats everything because it exists to demonstrate the metric can be gamed. We run FSRS because it is open, inspectable, cheap enough to run on every card of every student, and because it turns its prediction into an interval — which is the part a study app actually needs.
- What we run:
src/lib/scheduler/fsrs.ts, versionv148.1-fsrs-scheduler, at a target retention of 90%.- Source:
- the open SRS benchmark — third-party, public dataset, public code. Verified 2026-08-07.
When we said 70%, how often did it happen?
Every time Studara schedules something, it makes a falsifiable prediction: the probability you will recall this, right now. Every graded answer writes that prediction and its outcome to an append-only log. This is that log, read back. It is the only number on this page that is about us rather than about an algorithm someone else benchmarked.
The dashed line is a perfect scheduler. Points above it mean we were under-confident; points below mean we were over-confident. Neither says anything about how well anyone studied — it is our prediction being marked, not a student.
There is not enough data to draw this curve yet.
We have 8 checkable predictions from 1 students. We do not publish this curve below 25 students, because an average over fewer people than that is a small number of individuals' study records wearing an average's clothes.
We could draw a line through what we have. It would look like proof and it would be noise, so we are showing you the counts instead. When the curve appears here it will be because the data arrived, and this page will say when.
- graded attempts with a prediction to check
- 8
- students behind them
- 1
- rows read from the log
- 13
- window
- 180 days
Excluded, and counted rather than hidden: 5 first-ever gradings of a card (no previous review, so there was no prediction to check), 0 older rows that recorded a score but not a 1–4 rating, and 0 rows where the scheduler held no stability yet. None of them is folded into the denominator.
Computed 2026-08-06T22:20:09.103Z from review_log, the same append-only table every graded answer writes, using v148.1-fsrs-scheduler at a target retention of 90%. Check it yourself: /api/proof/calibration returns exactly the object this section renders.
The essay marker, and the bar it did not clear
The calibration curve above validates the scheduler. Nothing validated the marker — and the marker is the riskier claim, because a generous or noisy mark teaches a wrong standard, which is worse than no mark. So we ran it against a held-out set with the bars written down first.
55.0% exact-band agreement, against a 75% bar. It did not clear.
n = 20 held-out responses, 0 errored calls. 95% interval 34.2%–74.2% — wide, because n is small, and that width is part of the finding. Adjacent-band agreement 85.0% against a 95% bar. The direction of the error is harsh (mean band error -0.10).
Weakest slice: waffle at 0.0% exact over 2 responses. Thinnest slice: off-question over 1.
Because it did not clear, the levels-based essay marker is switched off in the product. It is not shipped behind a disclaimer and it is not shipped in beta: the flag those features read is computed from this run, so the door stays shut until a better marker moves the number. The remedy is a better marker, never a lower bar.
Run 2026-08-03 on llama-3.3-70b-versatile, corpus pxc-marker-audit-set-v1. Check it yourself: /api/proof/marker-agreement.
What is on this page, and what is deliberately not
The curve is computed from the study records of people, many of whom are under 18. Nothing per-student appears here and nothing per-student can: the figures are counts, rates and confidence intervals over the whole platform, and the object this page renders has no field capable of holding a person.
- Aggregated: the number of graded attempts, the number of distinct students behind them, and — per decile of predicted recall — the count, the recall rate and its interval.
- Never published: any identifier, any per-student rate, any subject, school, class, region, device or date of birth. None of those is read by the query at all.
- Withheld below a floor: the whole curve below 25 distinct students, and any single decile below 500 attempts or 5 distinct students. The second floor is the one that matters: without it, one very heavy user could clear the attempt count alone and have their personal recall rate published as ours.
- Never claimed: that students who use Studara get better results than students who do not. We have not run that study. It is pre-registered and unbuilt, and when it runs we have committed in writing to publishing the nulls and the subgroups, not an average that can hide one.
If a figure on this page is ever wrong, it will be wrong because the log is wrong — not because someone typed it. There is no number in this page’s source code.