projects / easemysemester / features
Cram runs bounded by time, not by bank size
Cram runs were rebuilt from "the whole eligible bank" into a student-picked 10/25/45 minute run sized from the corpus's real word counts.
feature · current · updated 2026-09-16 · EaseMySemester case study
Cram's original CTA read "Cram this list, 727 questions, condensed" beneath a seven-topic list, and opened a run of all 727. At a measured 75-word median card and 150 wpm, that is 6.4 hours of reading, against a feature built on "the last thirty minutes before an exam."
What changed
The student picks a duration (10 min / 25 min / 45 min) before the run
starts. The run is sized from the actual word counts of the eligible cards at
a measured reading pace, not a hardcoded constant, since the corpus is
regenerated and its median word count moves with it. Cards are drawn from the
focused subject, highest-ranked
unread first, declined questions excluded as before; if the focused subject
has fewer eligible questions than the duration needs, the run is simply
shorter rather than borrowing from another subject.
The CTA's number went through three drafts
The scope required the home CTA to name the duration and subject, not the
size of the bank. The CTA next named a pool size for the focused subject
(259 questions for Physiology, about 2.2 hours at the measured median, down
from 6.4 for the whole bank) rather than a run length. The underlying
tension: duration is chosen on the cram screen, after the tap, so the home CTA
cannot name a duration not yet picked. The eventual fix dropped the count from the home screen entirely (Cram Biochemistry · Paper 2, Pick a length); the honest, per-duration count was already on the cram screen's
own duration buttons, each computed by the same rule that slices the run.
Verified
Run at 375×812: duration buttons showed non-fixed-multiple counts (25/63/105 questions for 10/25/45 minutes on the same subject), and a completed run reported "You read through 63 questions in 1:49." A test asserts the CTA count equals the run length for every duration, including the short-bank case.
Status
Shipped, 2026-09-10. See overview.