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.