← Projects

Tract

TypeScriptReactSQLiteAnthropic SDK

Problem

Spaced repetition tools treat memory as a deck of cards to flip through, which rewards recognition rather than retrieval and says nothing about how well you actually know something across different contexts.

What I built

A local-first learning system where the core model is a knowledge-state graph rather than a deck. Free-recall sweeps periodically ask you to retrieve material with no prompting at all. AI-generated probes test the same knowledge across different modalities so recognition of a specific phrasing doesn't get mistaken for understanding. An evidence-event log records every interaction and drives scheduling through a modified FSRS algorithm. Everything runs locally: no account, no sync, no server.

Hardest part

Designing the knowledge-state graph itself. Cards are easy to model; a graph where nodes can be partially known, dependent on other nodes, and tested through multiple unrelated probes is a much harder data model to get right, and I rewrote the schema three times.

What I'd change

I'm currently adding per-modality FSRS rescaling, since right now all probes feed the same scheduling curve even though recall difficulty differs a lot by modality. I'd have built that in from the start rather than retrofitting it.