Decision support, not a verdict. Risk flags indicate that a student may benefit from timely support and should be reviewed by an educator or advisor. All data shown is synthetic.
Predictions use weeks 1–5 only. Week 2 is the earliest supported.
What this page is for
“Should I reach out to this student, and what would I say?”
Everything below is based only on weeks 1–5. Read it top to bottom: the score, then why the model gave it, then how sure it is, then what you could do.
Risk score
4%
Out of 100 students who behaved like this one, about 4 did not finish.
In plain English
Out of 100 students who behaved like this one, roughly this many did not finish the course.
How it's worked out
The model reads the student's weeks so far and produces a number, which is then corrected (“calibrated”) so the percentage means what it says.
What it tells you
A description of a pattern, not a judgement about a person. A high score means this student's behaviour resembles students who struggled.
Why it's here at all
It gives a teacher a place to start when they have 500 students and time to contact ten.
Confidence
96%
The model was run 30 times and the answers mostly agreed, so this score is stable.
In plain English
How much the model agrees with itself.
How it's worked out
The model is run 30 times with small random changes switched on. If all 30 runs land close together, confidence is high; if they scatter, it's low.
What it tells you
High confidence means the score is stable. Low confidence means the model is genuinely unsure about this particular student.
Why it's here at all
A score with no confidence attached invites more trust than it deserves.
What counts as good
Higher is steadier — but low confidence is honesty, not failure.
Uncertainty
±0.019
Those repeated runs mostly landed within 2 percentage points of each other — low spread.
In plain English
The plus-or-minus on the risk score, like the margin of error on a poll.
How it's worked out
How spread out those 30 runs were.
What it tells you
±0.05 means the 30 runs mostly landed within 5 percentage points of each other.
Why it's here at all
It's what turns 'the model is unsure' into something you can act on.
What counts as good
Smaller is steadier.
Needs human review
Not flagged
The repeated runs agreed, and the score isn't sitting on the borderline.
In plain English
The system saying: don't act on me alone for this student.
How it's worked out
Triggered when the 30 runs disagree too much, or when the score sits right on the borderline where a nudge either way would flip the decision.
What it tells you
A prompt to look at the student's situation yourself, not a conclusion.
Why it's here at all
A system that never admits doubt gets trusted in exactly the cases where it shouldn't be.
The same assessment, written out as a teacher would say it.
At week 5, this student's engagement looks broadly healthy (risk score 4%). No concerns stand out. The model draws on the whole history so far fairly evenly rather than singling out any particular week. The signals contributing most are that change in logins vs last week is below the cohort average (-0.7 vs -0.2 over weeks 3-5); share of study at weekends is above the cohort average (0.39 vs 0.30 over weeks 3-5); logins is below the cohort average (4.3 vs 4.4 over weeks 3-5). Model confidence is 96% with low uncertainty - repeated stochastic passes agree on this estimate.
How to read this: Each dot is a separate prediction, made using only the weeks up to that point. The shaded band is how much the model wavered — a wide band means unsure, not worse.
Weeks 2–8. The vertical line marks the week you have selected.
In plain English
Out of 100 students who behaved like this one, roughly this many did not finish the course.
How it's worked out
The model reads the student's weeks so far and produces a number, which is then corrected (“calibrated”) so the percentage means what it says.
What it tells you
A description of a pattern, not a judgement about a person. A high score means this student's behaviour resembles students who struggled.
Why it's here at all
It gives a teacher a place to start when they have 500 students and time to contact ten.
How to read this: taller bars are weeks that counted for more in this particular judgement. This comes straight out of the model — it is the model reporting on itself, not a guess about it.
HATF learns its own time windows rather than being given a fixed one. These are the weights it chose for this student — a volatile learner gets read through a short window, a slow drifter through a long one.
Week-to-week swings
Short-term shifts
Slow, sustained trends
How to read this: for each signal we replace it with the cohort average, re-run the model, and see how far the score moves. Bars to the right pushed the risk up; bars to the left pulled it down. This shows what the model is sensitive to — it is not a claim that the behaviour caused anything.
| Signal | This student |
|---|
Supportive actions an advisor could take this week.
Before you act
GET /students/STU_00372/explanation?week=5{
"student_id": "STU_00372",
"week": 5,
"risk_probability": 0.0364,
"risk_level": "low",
"confidence_score": 0.9617,
"uncertainty_std": 0.0192,
"uncertainty_level": "low",
"requires_human_review": false,
"review_reason": null,
"decision_threshold": 0.26,
"top_attention_weeks": [
{
"week": 4,
"attention_weight": 0.2105
},
{
"week": 3,
"attention_weight": 0.2066
},
{
"week": 5,
"attention_weight": 0.2047
}
],
"attention_is_concentrated": false,
"attention_spread": 0.0244,
"attention_weights": [
{
"week": 1,
"weight": 0.1861
},
{
"week": 2,
"weight": 0.1921
},
{
"week": 3,
"weight": 0.2066
},
{
"week": 4,
"weight": 0.2105
},
{
"week": 5,
"weight": 0.2047
}
],
"temporal_window_usage": [
{
"scale_weeks": 1,
"label": "1-week window",
"usage": 0.2227
},
{
"scale_weeks": 3,
"label": "3-week window",
"usage": 0.322
},
{
"scale_weeks": 7,
"label": "7-week window",
"usage": 0.4552
}
],
"top_behavioral_indicators": [
{
"feature": "login_count_delta",
"label": "Change in logins vs last week",
"group": "activity",
"unit": "per week",
"impact_on_risk": 0.005,
"direction": "increases risk",
"observed_value": -0.67,
"cohort_average": -0.15,
"observed_display": "-0.7",
"cohort_display": "-0.2",
"comparison": "below the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": true
},
{
"feature": "weekend_activity_ratio",
"label": "Share of study at weekends",
"group": "temporal",
"unit": "0-1 score",
"impact_on_risk": 0.0029,
"direction": "increases risk",
"observed_value": 0.39,
"cohort_average": 0.3,
"observed_display": "0.39",
"cohort_display": "0.30",
"comparison": "above the cohort average",
"window": "weeks 3-5",
"higher_is_better": false,
"concerning_side": true
},
{
"feature": "login_count",
"label": "Logins",
"group": "activity",
"unit": "per week",
"impact_on_risk": 0.0013,
"direction": "increases risk",
"observed_value": 4.33,
"cohort_average": 4.37,
"observed_display": "4.3",
"cohort_display": "4.4",
"comparison": "below the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": true
},
{
"feature": "day_regularity_delta",
"label": "Change in study-day consistency",
"group": "temporal",
"unit": "0-1 score",
"impact_on_risk": 0.0013,
"direction": "increases risk",
"observed_value": -0.1,
"cohort_average": -0.01,
"observed_display": "-0.10",
"cohort_display": "-0.01",
"comparison": "below the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": true
}
],
"protective_indicators": [
{
"feature": "forum_posts",
"label": "Discussion posts",
"group": "interaction",
"unit": "per week",
"impact_on_risk": -0.0244,
"direction": "reduces risk",
"observed_value": 2.33,
"cohort_average": 1.14,
"observed_display": "2.3",
"cohort_display": "1.1",
"comparison": "above the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": false
},
{
"feature": "assignment_avg_score",
"label": "Average assignment score",
"group": "assessment",
"unit": "%",
"impact_on_risk": -0.0137,
"direction": "reduces risk",
"observed_value": 86.33,
"cohort_average": 66.2,
"observed_display": "86%",
"cohort_display": "66%",
"comparison": "above the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": false
},
{
"feature": "forum_replies",
"label": "Discussion replies",
"group": "interaction",
"unit": "per week",
"impact_on_risk": -0.0128,
"direction": "reduces risk",
"observed_value": 3.33,
"cohort_average": 1.49,
"observed_display": "3.3",
"cohort_display": "1.5",
"comparison": "above the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": false
},
{
"feature": "quiz_avg_score",
"label": "Average quiz score",
"group": "assessment",
"unit": "%",
"impact_on_risk": -0.0114,
"direction": "reduces risk",
"observed_value": 68.96,
"cohort_average": 64.34,
"observed_display": "69%",
"cohort_display": "64%",
"comparison": "above the cohort average",
"window": "weeks 3-5",
"higher_is_better": true,
"concerning_side": false
}
],
"natural_language_explanation": "At week 5, this student's engagement looks broadly healthy (risk score 4%). No concerns stand out. The model draws on the whole history so far fairly evenly rather than singling out any particular week. The signals contributing most are that change in logins vs last week is below the cohort average (-0.7 vs -0.2 over weeks 3-5); share of study at weekends is above the cohort average (0.39 vs 0.30 over weeks 3-5); logins is below the cohort average (4.3 vs 4.4 over weeks 3-5). Model confidence is 96% with low uncertainty - repeated stochastic passes agree on this estimate.",
"recommended_actions": [
"No action needed right now - engagement is in line with the cohort.",
"Keep monitoring; the weekly view will surface any change early."
],
"method_note": "Important weeks come from the model's attention weights. Indicator impact is measured by occlusion: each signal is replaced with the cohort average and the change in risk is recorded. This shows what the model is sensitive to - it is not a causal claim.",
"responsible_ai_note": "This is a decision-support signal, not a judgement about the student. It highlights a possible opportunity for timely support and should be reviewed by an educator or advisor alongside context the LMS cannot see."
}Attention is effectively uniform here (spread 0.024 across 5 weeks). The model is drawing on the whole history evenly rather than singling out a week, so no week is highlighted — calling one “most important” would be reading noise. This is a known property of the synthetic cohort; see Limitations.
In plain English
How much the model leaned on each individual week when judging this student.
How it's worked out
Read directly out of the model's attention layer — this is the model reporting on itself, not a guess about it.
What it tells you
A tall bar on week 4 means the model's opinion rests heavily on what happened in week 4.
Why it's here at all
It points a teacher at when things changed, not just that they did.
| Cohort |
|---|
| Effect |
|---|
Change in logins vs last week Activity | -0.7 | -0.2 | +0.5% |
Share of study at weekends Timing | 0.39 | 0.30 | +0.3% |
Logins Activity | 4.3 | 4.4 | +0.1% |
Change in study-day consistency Timing | -0.10 | -0.01 | +0.1% |
Discussion posts Interaction | 2.3 | 1.1 | -2.4% |
Average assignment score Assessment | 86% | 66% | -1.4% |
Discussion replies Interaction | 3.3 | 1.5 | -1.3% |
Average quiz score Assessment | 69% | 64% | -1.1% |
Values averaged over weeks 3-5.
How this was computed