But they’ve already done those questions!
Smart question picking. Different questions for familiar topics, with the tricky ones getting another turn.
We did this one
already!
Vinky tracks every question your child has seen. Each new revision starts with questions they haven’t seen yet, spread across every topic you picked.
Unlike some of us, Vinky actually remembers what happened last week.
// builds every revision, one question at a timefn build(child, topics, minutes) { history = child.history(subject) // every answer, ever // REMEMBER ME? take quiet_topics(history, idle > ▓▓▓) .limit(▓) // UNFINISHED BUSINESS take missed(history) .newest_first().cap(▓▓▓) // NO RERUNS take unseen(topics) .spread(across: topics) fill oldest_seen(history) // seen them all?}on answer → history.update() // next revision, same againTricky ones get
another go.
Questions they got wrong come back in their next revisions, most recent first. Just a few at a time, so it never turns into a punishment round.
Persistent? Yes. Annoying? Only a little.
Out of sight…
not out of mind.
If a topic in your selection hasn’t come up in a while, Vinky slips in a quick check-up from it. Old work stays fresh, without you having to remember what they did in Term 1.
So exam week isn’t the first time they’ve seen it since March.
// builds every revision, one question at a timefn build(child, topics, minutes) { history = child.history(subject) // every answer, ever // REMEMBER ME? take quiet_topics(history, idle > ▓▓▓) .limit(▓) // UNFINISHED BUSINESS take missed(history) .newest_first().cap(▓▓▓) // NO RERUNS take unseen(topics) .spread(across: topics) fill oldest_seen(history) // seen them all?}on answer → history.update() // next revision, same again