+ The only open question is who ends up holding the file — a company, or the family.
+ primer is the open, local-first learner record it should run on. One SQLite file
+ on your machine, an MCP server so any tutor can read it, and a review gate no
+ model can lift.
+
$ curl -fsSL https://raw.githubusercontent.com/VedSoni-dev/primer/main/install.sh | sh
+
+
+
+
Apache-2.0
+
local-first
+
no account
+
no API key
+
nothing phones home
+
+
+
+
+
+
+
+
+
+ the record is the product◆
+ the interface is disposable◆
+ evidence over scores◆
+ the child never talks to a model◆
+ no streaks, no coins, no timers◆
+ export carries the whole history◆
+ every write has an actor◆
+ the record is the product◆
+ the interface is disposable◆
+ evidence over scores◆
+ the child never talks to a model◆
+ no streaks, no coins, no timers◆
+ export carries the whole history◆
+ every write has an actor◆
+
+
+
+
+
+
+
01 / the ask
+
YC asked for it by name.
+
+ Fall 2026 Requests for Startups. Thirteen ideas YC wants funded, and the first is
+ called The Primer — a straight description of Neal Stephenson's
+ A Young Lady's Illustrated Primer, shipped as a consumer product. It is a
+ public page. Nothing here is leaked or inferred.
+
+
+
+
+ While we think this begins as something a parent buys to help their child learn
+ basic skills, it is also the entry point to far greater ambitions.
+
+
+ Y Combinator, Requests for Startups — The Primer
+ ycombinator.com/rfs ↗
+
+
+
+
+
+
Read as an investor
+
Large market, long retention, an expanding surface area starting from a wedge product parents already pay for.
+
+
+
Read as a parent
+
The reading app is the wedge. The wedge goes somewhere. Nobody wrote down where.
+
+
+
+
+ Both readings are correct, and the honest half of the pitch is genuinely true: every
+ child deserves the tutoring only wealthy children get today. That is exactly why this
+ gets built. So the argument worth having is not whether — it is on what terms.
+
+
+
+
+
+
+
+
02 / the stakes
+
A primer is the book you read first.
+
+ To prime someone is to decide, before they decide anything, what will
+ come easily to their mind later. To teach a child well you have to know things about
+ her nobody writes down. A good tutor holds all of it for one year. A record holds it
+ forever. That is why it teaches — and why it is worth being careful about.
+
+
+
+
+
+ learner_context("Ada")
+ 28 tools · one call
+
+
+
misconceptionreads every short e as short i4 sessions
+
frustrationshuts down when a timer is visible2 markers
+
interestdinosaurs — works twice as longstable 6w
+
trustworks for dad, not for the app's voiceobserved
+
self_belief“I'm bad at reading” after two missesverbatim
+
attentionloses her at minute 11n=37
+
accommodationno countdowns, no streaksparent-set
+
↳Same rows. In other hands, not a lesson plan — a map of where she gives.
+
+
+
+
+
+
1child
+
One adult holds the whole picture and carries it for a year. This is what a good tutor already is, and it is fine.
+
+
+
0days · three years
+
The record stops being a snapshot and becomes a trajectory — not what she knows, but how she bends.
+
+
+
0childhoods · one login
+
Now scale it the way a company must. Nobody has to be malicious. Engagement to defend, renewals to protect, a board to answer to. Ordinary incentives are enough.
+
+
+
+
+
+ 01
+
The company dies, the child starts over
+
Ship an interface, treat the learning history as exhaust. Pivot, acquisition, shutdown — the history goes with it. Every teacher already knows this, because they have re-assessed the same child three years running.
+
+
+ 02
+
Export becomes a churn button
+
Once one company holds a few years of a few million childhoods, portability is a feature that costs retention. No growth team ships a churn button. Terms are settled early or not at all.
+
+
+ 03
+
The teaching disappears into the weights
+
Pedagogy locked in a proprietary model cannot be read, forked, or proven wrong. A bad prerequisite edge quietly mis-teaches a real child, and no outsider can even file the bug.
+
+
+ 04
+
Engagement machinery, aimed at a six-year-old
+
Streaks, coins, leaderboards, countdowns. A twelve-minute session that ends on a win beats forty minutes that ends in tears — but only one of those numbers reaches a board deck.
+
+
+
+
+
+
+
+
+
03 / the terms
+
Open source here is not a license. It is the threat model.
+
+ None of this is a values page. Each item is a constraint in the repository, and most
+ have a test asserting them. That is the only kind of commitment that survives an
+ acquisition.
+
+
+
+
The record is the product
There is no app in the repo, on purpose. The tutor generates a page for one child for one afternoon and throws it away. Anything that makes the record depend on a UI is a bug.
+
One file, on your machine
SQLite, 20 tables, in the family's home directory. No account, no server, no API key left lying around a family's laptop.
+
Evidence over scores
Every number derives from append-only observations kept forever. evidence_for returns the raw attempts behind any estimate, verbatim.
+
Export carries everything
Observations, sessions, generated activities, and the curriculum packs the history depends on — documented and versioned in FORMAT.md so this project is not the only thing that can read a child's record.
+
The child never talks to a model
The fast loop never calls one. She meets a static page an adult approved. The model works on the record, not on the child.
+
A review gate that cannot self-lift
Everything generated lands in pending_review. Rejections are read back on the next planning run, so saying no teaches the tutor instead of just blocking it.
+
The unattended run is caged
No shell, no filesystem, no web, no inherited config, an explicit tool allowlist, and a budget ceiling the runtime enforces rather than our own accounting.
+
No engagement machinery, structurally
No streaks, coins, leaderboards, timers — and nothing in the schema to optimize minutes-on-task with.
+
Deletable, and it means it
primer delete --learner <name> --yes removes every row, plus that child's recordings and generated activities on disk, and reports any file it could not remove.
+
+
+
+
what the unattended tutor may touchasserted by tests
+
claude -p --tools "" // every built-in tool off — no bash, fs, or web
+ --strict-mcp-config // cannot see your other MCP servers
+ --setting-sources "" // no CLAUDE.md, no hooks, no plugins
+ --mcp-config <primer only> // this record and nothing else
+ --allowedTools mcp__primer__learner_context,…
+ --max-budget-usd <left today> // ceiling enforced outside our accounting
+
+
+
+
What the autonomous loop cannot do
+
+ create or delete learners
+ change accommodations
+ set goals
+
+
Those tools exist where a human is asking for them, and are absent from the unattended loop. If the tutor thinks an accommodation is wrong it writes a note, and a human decides.
+
+
+
+
+
+
+
+
04 / receipts
+
Nobody in this story has to be a villain.
+
+ That is the uncomfortable part. There is no cackling — there is a cap table, a growth
+ target, and a renewal date, and those are enough. So this is not about anyone's
+ character. It is about incentives, addressed to the people who actually decide.
+
+
+
+
+ To YC
+
You wrote the honest sentence out loud. Good — now fund the version where the ambition is not owning the child's file. One question for every founder pitching this RFS: can the family walk out with the whole record, in a documented format, on day one? If it needs a slide, it is a no.
+
+
+ To the founder who wins it
+
You will be told portability is a v2 feature. It is the one feature that cannot be added later, because by v2 you will have a retention number that depends on it not existing. Build on an open record while it costs you a weekend.
+
+
+ To the labs
+
The model is not the moat and you know it. The moat about to get built is the memory of a childhood. If long-horizon tutoring is coming, the state should be a file the family holds and any model can read — including a competitor's.
+
+
+ To edtech
+
A decade of products treated a child's learning history as exhaust, then took it down with them. That is not a rare tragedy, it is the default outcome. Export is not a courtesy. It is the product.
+
+
+ To parents
+
The question is not “is it adaptive.” It is where does the file live, can I read it, can I take it, and who else has a copy? If the answer is a dashboard, the answer is no. You are the last gate — this is built to keep you in that job.
+
+
+ To teachers
+
213 skills, pre-K to grade 3, English only, and somewhere in that graph a prerequisite edge is wrong. Wrong edges quietly mis-teach real children. You are the only people who can find them, and no startup can outspend you on it.
+
+
+ To us
+
One child. One week. Curriculum stops at grade 3. The BKT parameters are principled defaults, and the fitting code refuses to run on a sample this small rather than print a confident number. Releases currently ship a Windows binary only. Check every claim on this page against the repo — including this one.
+
+
+
+
+
+
+
+
+
05 / what it is
+
A record and a server. That is the whole trick.
+
+
+
+
Open Learner Record
+
20-table SQLite schema, append-only evidence, forward-only migrations. Full spec in SPEC.md, interchange format in FORMAT.md.
+
+
+
Mastery model
+
Bayesian Knowledge Tracing over a two-component forgetting curve. Mastery is a cache — replayable from raw evidence at any time.
+
+
+
Scheduler
+
Ranks lapsed / due / stuck / frontier across strands, so a session is never eight vowel drills.
+
+
+
Placement
+
A cold start is placed, not assumed. Probes at the band age suggests, bisects to where the child actually is.
+
+
+
Curriculum
+
213 skills, pre-K–grade 3, reading / writing / math, with a prerequisite graph that crosses domains.
+
+
+
MCP server · 28 tools
+
learner_context returns the whole child in one call: mastery, what slipped, misconceptions, interests, accommodations, and which past interfaces actually worked. Same implementations for the human-driven and unattended paths.
+
+
+
Autonomous tutor
+
Drives claude -p on a loop. Your existing login, no API key. Queue, review gate, budget.
+
+
+
Surface
+
/k/<name> is the only URL a child needs. /review is the adult gate. Localhost by default.
+
+
+
+
+ One runtime dependency: the MCP SDK. Storage is node:sqlite, built into Node 22+.
+ The model is reached through the claude binary you already have.
+
+
+
+
+
+
+
+
06 / build
+
The proprietary version will have polish and a marketing budget.
+
+ That is a real fight, and pretending otherwise is stupid. The open version wins on the
+ three things a company structurally cannot offer — your record is yours, the teaching is
+ inspectable, the curriculum was improved by a thousand teachers instead of a growth
+ team. All three are made of contributions.
+
+
+
+
most needed
Curriculum beyond grade 3, and beyond English. A content job, not an engineering one.
+
most needed
Teachers and reading specialists auditing the prerequisite graph.
+
needed
macOS and Linux release binaries. CI has never successfully run.
+
needed
Real evidence samples, so BKT parameters can be fitted instead of assumed.