Dropout risk and early alerts
Student engagement signals, a dropout-risk score that shows its own arithmetic dimension by dimension, and alerts that always carry the evidence that produced them. When data is missing, the screen says so instead of inventing a number. Part of the Education vertical, optional and off until an administrator turns it on.
The Education screen gains the Dropout risk and early alerts block: each student's engagement signals, a risk score computed across six dimensions, and the alert queue your team works.
The score shows its own arithmetic
Dropout risk is not a number that appears out of nowhere. It is the weighted average of six dimensions: engagement, academic, financial, relationship, documents, and attendance and behaviour. For each student the screen shows every dimension's own score, the weight it carries in the model, and how much of the total came from it. The contributions add up to exactly the score on display: nothing is hidden along the way.
Stored alongside the number are the model version that produced it, the inputs that fed each dimension and the weights used in that calculation. That is what lets you answer, months later, why a given student was at high risk that week.
The higher the score, the higher the risk. The bands are low, moderate, high and critical.
A dimension with no data is not filled in
This is the most important rule on the screen, and it is worth reading slowly. When a dimension has no data for that student, it does not enter the calculation as a zero and it does not enter as an average of other students. It stays out, appears by name in the list of dimensions with no data, with the reason and the weight it would have carried, and the model's coverage drops.
The reason is simple: zero means "we measured and there is no risk at all". Writing a zero where nothing was measured turns ignorance into good news, and a student nobody can measure is precisely the one the school should be reaching out to.
When none of the six dimensions has data, there is no score. The screen shows "no data" and explains itself instead of displaying a reassuring zero. The database itself refuses to store a number in that situation.
Without a learning platform the score is worth less, and says so
Engagement is the single most predictive dimension of dropout there is, and it depends on your school's signals for logins, submissions and time on platform. If you have not connected a learning platform and have not loaded any signals, the score still works on the remaining five dimensions, but it is worth less, and the screen keeps telling you so rather than hiding it.
That is deliberate. A modest number that declares its own limits beats a confident number built over a hole.
How to load engagement signals
You paste a file with one aggregated row per student and period: how many logins, how many minutes, how many submissions, how many absences. The columns are person_ref, signal_type, value, unit, occurred_at and course_ref. The student reference can be the person's identifier in the system or the e-mail already on file.
These are aggregated signals, never click by click: the point is to follow behaviour, not to watch browsing. Re-sending the same file duplicates nothing, so repeating the load is safe.
Any reference that matches no student is handed back on screen, with the list of what did not go in. Nothing is created by guessing and nothing disappears quietly.
Screens always read the aggregate, with the date it was built visible next to it. The raw signal table exists to absorb volume and is never queried by any screen or any alert. That is what keeps the feature fast as the years go by.
Every alert carries the evidence that produced it
An alert with nothing behind it cannot be created here. Each alert stores the evidence that supports it: what was observed, what the threshold was, what value was measured, and which row proves the fact. That requirement lives in the database itself, so not even direct access creates an empty alert.
Severity is not typed in by whoever creates the alert: it comes out of the evidence. A value that overshot the threshold by a hundred per cent becomes critical; one that overshot by ten per cent becomes low. And the screen always says whether the evidence was measured by a system or stated by a person, because those two do not carry the same weight. Evidence that was merely stated never escalates to critical on its own.
The alert raised from the score carries the score itself and the dimensions that contributed most to it as its evidence. A student with no data at all raises no alert: we do not alert about what we do not know.
The system signals, it never punishes
Nothing here cancels an enrolment, cuts financial aid, blocks access or records a label against a student. The automatic work is limited to aggregating signals, recomputing the score and opening one evidence-backed alert per student per week when risk climbs. What to do about it is a human decision.
The re-enrolment queue also starts sorting by risk from here on, so the school can begin with the students who most need a conversation.