Stream results
A stream produces a weighted score per student and a ranking across the cohort, plus several views onto the same data.
How the score is calculated
Each student's score is the weighted average of their test results, using the weights you set. A student with no completed tests has no score rather than a zero — an empty average is not the same as failing.
Missing tests
What happens when a student does not sit a test is a stream-level setting, and it changes what every score means:
| Policy | Effect |
|---|---|
| Deadline only (default) | Counts as zero once the test's window has closed, and is ignored before that |
| Strict | Counts as zero immediately |
| Flexible | Excluded from the average entirely |
Deadline only is the sensible default: mid-programme rankings are not distorted by tests nobody has sat yet, and a genuinely missed test still costs the student once the window shuts.
Flexible is the one to think hardest about. It means a student who sat two of six tests is averaged over the two they chose, which usually flatters them relative to someone who attempted everything. That can be right — for optional modules — and is badly wrong for a core sequence.
Choose before you activate the stream. Changing the policy later re-scores and re-ranks the whole cohort retroactively.
Where to read results
The cohort table on the stream page gives each student's status, progress and score at a glance. Start here, decide who to look at, then open them individually.
The results matrix is students against tests, every score in one grid. This is the view that shows patterns rather than people: a column where everyone did badly is a problem with the assessment, not with the cohort, and it is invisible in per-student scores.
Statistics covers the cohort as a whole — overview, performance, rankings, a score heatmap and a leaderboard.
Rankings
Rankings order the cohort by weighted score, and can be recalculated on demand from the statistics page.
Recalculate after anything that changes inputs: late results marked, a weight changed, a missing-test policy switched, or essay questions marked after the deadline. Scores are stored alongside each student for speed, so a ranking read before those land is stale rather than wrong.
Treat the leaderboard as a working tool, not an output. Publishing a live ranking to a cohort changes behaviour — usually toward optimising the number rather than learning the material — and the difference between rank 40 and rank 55 is frequently one missed deadline rather than any difference in ability.
Reading a ranking honestly
Two students with the same score have often not done the same thing, and the missing-test policy is where that hides. Under flexible, a 78 across two tests and a 78 across six are the same number and are not the same student.
Before any decision about an individual, open their page and look at the row. The score is a summary of the row, and the row is the evidence.
Decisions
Nothing in a stream decides anything. Statuses like Selected for interview, Rejected and Disqualified are set by a person, and no threshold, ranking or heatmap moves a student between them automatically.
That is the same rule as the hiring side, for the same reason — see Reviewing results. If you use a stream to select people for interview, the selection is yours, and a student who asks why they were not selected is asking you, not us.