Daily reviews in a vocabulary flashcard app

DesignEasy25 min

Your task

Your language app teaches vocabulary with flashcards. Each day it shows a learner every card whose chance of being recalled has dropped to 90% or below. A card they recall comes back after a longer gap. A card they miss comes back soon.

The app has 1 million learners, and about 400,000 study on a given day. A learner has about 1,000 cards on average and up to 3,000. Learners answer about 30 million cards a day. The data team has a model that reads a card's answer history. It predicts how long until the learner's chance of recalling the card drops to 90%. It takes 1 ms (millisecond) to score one card on one CPU core.

A learner's list for the day must open in under 1 second.

What do you store for each card, when does the model run, and how is a learner's daily list built?

It covers

  • Spaced repetition
  • Model scoring
  • Daily lists