BlogSpaced repetition without writing flashcardsRelease

Spaced repetition without writing flashcards

In short

  • Every question you answer in KoiSwarm is now scheduled for review automatically.
  • No self-rating. Your existing grade becomes the rating.
  • Scheduling uses FSRS-6 via the official py-fsrs library, not an in-house copy.
  • Rolling out one source agent at a time, so your queue may still be filling.

Spaced repetition is the least controversial finding in the study literature. It is also the one students abandon most often. Not because they stop believing in it — because of the bookkeeping.

To run it properly you have to write the cards, keep the deck tidy, show up daily, and after every single card decide honestly whether that was Hard or Good. Miss two weeks and you return to a backlog that feels like a punishment. The technique is free; the admin is what costs you.

Forgetting Agent is our attempt to delete the admin and keep the technique.

What changed

Every question you answer in KoiSwarm — an MCQ, a USMLE vignette, a short-answer question, an anatomy label, a viva objective — is now scheduled for review automatically.

You do not create anything. You do not maintain a deck. You do not rate yourself. You practise the way you already practise, and the questions come back on the days they should.

The part we are most pleased about: no self-rating

This is the change that matters most, and it needs explaining because it sounds minor.

Every traditional spaced-repetition tool ends each card the same way. You see the answer, and you tell the software how well you knew it: Again, Hard, Good, Easy. That button press is the input the entire schedule depends on.

It is also a bad input, for reasons that have nothing to do with your honesty:

  • You are judging your recall after seeing the answer, which is exactly the condition under which people overestimate what they knew. The answer feels familiar, so you press Good.
  • The judgement is noisy. The same performance gets rated differently depending on whether you are ten cards or a hundred cards into a session.
  • It is a decision, and it repeats hundreds of times a day. Decisions are the thing that makes a review queue feel heavy.

In KoiSwarm the rating already exists before you would have pressed anything. You answered an MCQ — it was right or it was wrong. You answered an SAQ — it was marked against a guide and given a score. You answered a viva question — the examiner scored it. That is a grade produced by the task itself, not a self-assessment made after the reveal.

So we use it:

What you did What it becomes
MCQ, USMLE, Labelling Correct, or not
SAQ The marked score, banded
Live Talk The score for that objective in the spoken session

If you used a hint or revealed the answer, the rating is capped — a question you needed help with is not recorded as clean recall.

The practical result: your schedule stays accurate during a week when you never open Forgetting once. Everything you do in the rest of the workspace is already maintaining it.

FSRS-6, and specifically not our own version of it

Scheduling runs on FSRS-6 through py-fsrs, the reference implementation maintained by the Open Spaced Repetition project. This is the same algorithm family Anki adopted as its modern scheduler.

We want to be direct about why we did not write our own. We have implemented FSRS from scratch before — for research articles on this blog, where the point was to study the model’s behaviour. Reimplementing it in the product would have meant your revision schedule depending on our arithmetic being right, with no external check. The reference implementation is used by a large user base and audited by people who work on this specific problem full time. Depending on it is the boring, correct decision.

Two engineering choices sit on top of it that are worth knowing about:

Your history is an append-only log. Attempts are appended, never edited, and a question’s schedule is derived by replaying that log from the beginning. The same history always produces the same due date.

Because of that, scheduler improvements are retroactive. When the algorithm is updated, your existing history is replayed through the new version. You do not get the improvement only on questions you answer from that day onward.

The default target is a 90% chance of recall at the moment a question comes due.

Reviews happen where the question was born

A review is not a stripped-down flashcard version of the original question. The session opens in the agent that made it — an MCQ goes back to MCQ with its options, a spoken objective goes back to Live Talk and you say it out loud.

This matters because recall is context-sensitive. Practising a spoken answer by reading a card silently trains a different thing than the exam will ask for. If the original task was worth doing, the review is worth doing in the same form.

Sessions are capped at five questions and, where possible, drawn from the same original set, so a review is a short focused block rather than a shuffled queue of unrelated material.

Scope, for when a block ends

Everything you have practised is in scope by default. You can narrow it to the last 30, 60, or 90 days, to everything since a chosen date, or to a fixed range.

The honest use for this: when you finish a block, some of that material genuinely stops being worth carrying, and a review queue that will not let go of it is a queue you will eventually stop opening. Being able to draw a line under a finished module is what keeps the rest of the queue credible.

One reminder a day, if you want one

Forgetting can send a single Telegram message a day, at a time and timezone you choose, telling you what is due. Once daily, clearly labelled, off unless you turn it on. We are not going to build a notification habit loop.

What we have not solved

Your queue is still filling. We are enabling source agents one at a time rather than switching everything on at once. If an agent you practised in recently is not yet contributing, it has not been turned on for you yet.

Deleted material disappears from reviews. Forgetting stores a reference to your original question, never a copy. Delete the set and the scheduled review is dropped rather than resurfacing content you removed. That is the behaviour we want, but it does mean a tidy-up can shrink your queue.

We have not run a controlled trial against Anki. We could tell you FSRS-6 outperforms SM-2, and our own simulation says it does — but that simulation used FSRS’s memory model as the ground truth, which stacks the deck in its favour, and we said so at the time. What we can claim without hedging is narrower and more useful: the reason people stop doing spaced repetition is the maintenance cost, and we have removed most of it.

A due date is a prediction about your memory, not a claim about medicine. The question and its explanation carry the same caution they did when first generated. Check anything clinically important against an authoritative source.

Where to find it

Forgetting is in the agent list, and shows what is due broken down by the agent each question came from. The documentation covers scope settings, reminders, and how ratings are derived in more detail.

If you have been practising in KoiSwarm already, there is nothing to set up. The queue has been building.