Engineering / Research

Ranking, not filtering

Asking for a morning or evening timetable never makes results disappear. It only reorders them.

The rule

Approach A subject can't fit the session you asked for
Hard filter (rejected) Zero results, even if everything else matched
Soft rank (shipped) Best available result, mismatches named plainly

Every session preference works this way now. Results are ranked by how many subjects match, then by a tiebreak — nothing is ever excluded.

How we got here

  • An earlier version of the matching logic treated session preference as a hard filter — all or nothing.
  • A legacy scheduling tool supported both a strict "hard" filter and a "soft" rank that never excludes. Soft was its default; hard was opt-in.
  • That default was a signal worth listening to, not just a fact to note.
  • Hard filtering was removed entirely, not kept as a toggle.

Why

  • A result matching everything except one unavoidable subject is still a real, usable timetable.
  • Hiding it behind a strict filter helps no one — an empty screen isn't more honest, it's just less useful.
  • Naming the mismatch plainly beats pretending the constraint doesn't exist.