When I first shipped spaced repetition in November, it only worked for flashcards. You'd review a deck and the system would schedule each card based on how well you knew it. That was useful, but it was also a missed opportunity. Spaced repetition shouldn't be a feature you use sometimes. It should be the foundation of everything.
Over the past few months, I've been quietly extending our SM-2 implementation across the entire platform. Today I want to walk through what we built and why.
A Quick Refresher: What Is SM-2?
SM-2 is a spaced repetition algorithm originally developed by Piotr Wozniak in the late 1980s. The core idea is simple: when you successfully recall something, the next review gets scheduled further in the future. When you fail, the interval resets. Each item has an "ease factor" that adjusts based on your performance — harder items get reviewed more often, easier ones less.
The algorithm is elegant because it minimizes total review time while maximizing retention. You spend your time on the things you're about to forget, not the things you already know. Research consistently shows this approach outperforms fixed-interval review by a wide margin.
Where SM-2 Lives Now
Flashcards (the original). Every card in every deck has its own ease factor, interval, and mastery level. When you review, the system tracks your response quality and adjusts the schedule. Cards progress from New through Learning, Familiar, Practiced, Mastered, and finally Burned.
Vocabulary review. Every vocabulary word in our literature guides and language courses now uses SM-2. When you encounter a new word, it enters the system at interval zero. As you practice it — through recognition, recall, listening, and writing exercises — the interval grows. The vocabulary review widget on your dashboard shows words that are due, organized by urgency.
Language learning. This is where it gets interesting. Language vocabulary isn't just "do you know this word?" We track mastery across multiple modes: can you recognize it when you see it? Can you recall it from memory? Can you understand it when spoken? Can you write it correctly? Each mode has its own SM-2 parameters. You might recognize "bonjour" instantly but struggle to spell "aujourd'hui" — the system knows the difference.
Quiz review. After you take a practice quiz, questions you got wrong enter a review queue. The system schedules those specific concepts for re-testing at optimized intervals. It's not just "take the quiz again" — it's "practice the exact things you missed, right before you'd forget them."
The Memory Decay Widget
One thing I'm particularly proud of is the memory decay widget on the library dashboard. It shows you a visual estimate of how much of your studied material you currently retain, based on the forgetting curves of your pending reviews. When retention dips below a threshold, the widget nudges you to review. It's a simple visualization that turns an abstract concept — "you're forgetting things" — into something concrete and actionable.
What I Learned Building This
The hardest part wasn't the algorithm — SM-2 is well-documented and straightforward to implement. The hard part was making it invisible. Students shouldn't have to think about ease factors or intervals. They should just open CramClub, see what needs reviewing, and do it. The system does the scheduling. The student does the learning.
We also learned that the minimum ease factor matters a lot. SM-2 can drive ease factors down to very low values for consistently difficult items, which leads to frustratingly frequent reviews. We clamped the minimum at 1.3, which keeps hard items in rotation without making them feel punishing.
Spaced repetition is one of those things that sounds boring on paper but transforms the experience of studying. If you've been using CramClub for a while, you've probably noticed that you remember more than you used to. That's not an accident. It's the algorithm working quietly in the background, making sure you never quite forget.
— Peter