projects / easemysemester / decisions
One definition of a paper, used everywhere
v2 standardised on counting distinct papers, not distinct sittings, for every band and count derived from question recurrence.
decision · current · updated 2026-09-16 · EaseMySemester case study
See overview.
Context
Three modules disagreed about what "a paper" is, while sharing a single banding
function whose own signature named both units at once. Read next counted
DISTINCT (year, sitting), the ranked-topics band counted
DISTINCT (year, month, sitting, paper), and onboarding counted sittings into a
column literally named paperCount. Because a year can carry more than one
paper, these produced different numbers: on production data, 12 of 218 topics
banded differently depending on which screen a student was looking at.
Decision
Papers, defined as DISTINCT (year, month, sitting, paper), became the one
definition used everywhere a paper count or a band is derived. Read next was
renamed off sittingCount/totalSittings to paperCount/totalPapers so the
old name could not come back, the onboarding count was corrected to count
papers instead of sittings, and the shared banding function's parameter was
renamed to match, with the threshold's unit stated in a comment.
Alternatives rejected
Re-tuning the 7/4 thresholds to preserve the existing band split (22 every / 78 most / 118 some) was explicitly rejected: if papers is the right unit, the resulting bands are the right bands, even if the split moves.
Why
Bands are the ranking signal, and Read next was about to be reworked on top of them.
Consequences
Read next's own paper count was already correct (the key had always included
paper), so the band split did not move; the visible fix was onboarding's
"papers" figure changing from sitting-based to paper-based (Anatomy, 11 to 23) and every
surface now deriving from one definition. A db-lane test asserts the Read next
band and the ranked-topics band agree for a known topic, closing the gap that
let the two silently diverge.
Status
Shipped, 2026-09-09.