Accepted researchPiCET-2026 · in press, IET Conference Proceedings

Reach students before they disappear.

One in three students who enrol online never finish, and institutions usually notice too late. This system predicts dropout risk from week 2 of 8, explains every score in behaviours an advisor can check, and says out loud when it doesn’t know.

100% synthetic data Trains on a CPU No cloud, no login, no PII 110 tests passing

student_high_risk_001

Held-out test student · week 8 of 8

Medium · 57%
Week 2 · 28%flag line 26%Week 8 · 57%
Confidence
87.7%
First flagged
Week 2

Six weeks of warning. The score crossed the flag line in week 2 and kept climbing. This student did not finish — and the model never trained on them.

0.789

ROC-AUC at week 2

Early enough to act on

0.876

ROC-AUC by week 8

Useful early, better later

28.4%

Sent to a human

Rather than guessing

0.038

Calibration error

0.30 really means ~30%

The problem

An early-warning system has an awkward shape most tutorials skip.

Four constraints decide the whole design. Every engineering decision traces back to one of them.

It has to be early

95% accuracy in the final week is useless — the student has gone. Performance is reported per week, never pooled into one flattering number.

Time flows one way

Week 3 predicted with week 7 data gives beautiful metrics and a worthless system. Causality is enforced in the architecture and proved by tests.

The costs are asymmetric

Missing a struggling student is a real harm; an unnecessary check-in costs five minutes. The threshold is tuned on F2, capped at a 40% flag rate.

It must stay support

A score without a reason can’t be argued with or overruled. No endpoint does anything to a student, and the language is supportive by contract.

The system

A paper ends at a results table. A product has to answer “why this student?”

Synthetic LMS logs in, a triage list an advisor can work through on a Monday morning out.

01

Synthetic data

500 students, 8 weeks, 7 behavioural archetypes.

02

Causal features

25 weekly features, every one from weeks ≤ t.

03

One HATF model

59,951 parameters serve every prediction week.

04

REST API

Nine FastAPI endpoints with OpenAPI docs.

05

The dashboard

Triage, reasoning, fairness and a model card.

Explains every score

Which behaviours moved the number, in real units against the cohort average — with safeguards that stop the explanation contradicting itself.

Says when it doesn’t know

Monte Carlo Dropout escalates 28.4% of predictions for human review instead of guessing.

Measures its own bias

Fairness across gender, age group and academic background — published including the parts that did not work.

Checks its own homework

Eleven models trained under identical conditions, and the comparison published even though HATF loses.

Inside the model:multi-scale causal convolutions (k = 1/3/7)unidirectional LSTMmasked temporal attentionMC-dropout head, 30 passes

Results

How early does it actually work?

Measured on held-out test students (500 students × 8 weeks, seed 42) and regenerated by every pipeline run.

ROC-AUC by prediction week

0.789
W2
0.804
W3
0.831
W4
0.847
W5
0.862
W6
0.875
W7
0.876
W8

Bars start at 0.700, not zero, so the trend is visible. Each week uses only weeks 1..t, and this synthetic task tops out around 0.91 — so the curve is close to its ceiling from week 4 onwards.

Pooled across weeks 2–8

ROC-AUC95% CI 0.751 – 0.924
0.845
F195% CI 0.569 – 0.794
0.693
Recallthe error that matters
0.816
Operating thresholdF2-optimal, capped at 40%
0.26

The intervals are the result. The test split is 83 students and the bootstrap resamples at the student level. Wide intervals are a real property of this POC, not something to round away.

The uncomfortable part

The proposed model finishes last. Here is the table anyway.

Eleven models, identical splits, seed, class weighting, calibration and threshold. A baseline table you only publish when you win is not a baseline table.

ModelROC-AUC
Transformer0.875
CNN0.870
LSTM0.869
Attention-CNN0.866
CNN-LSTM0.863
HATF (fixed windows)0.857
Random Forest0.854
Logistic Regression0.853
SVM0.845
HATF (proposed)0.845

The whole table sits inside the noise

Best-to-worst spread is 0.030 AUC; the 95% interval on any single model is about ±0.05. Eighty-two test students cannot rank eleven architectures. Capacity is also mismatched — 59,951 parameters against 320 training students, while a CNN gets within 0.03 on 8,321. On the 1,200-student profile HATF moves from last to 6th.

So why does HATF still ship?

A product reason, not a metric one. At statistically indistinguishable accuracy it is the only model here that also produces attention, adaptive-window usage and MC-dropout uncertainty — everything the explanation layer and the review rule are built on.

0.000000

Counterfactual invariance

Every demographic of every test student rewritten, the model re-run. Largest change: zero.

No change

From the fairness penalty

It moved every held-out gap by 0.0000. A free no-op rather than a trade-off — reported as one.

Limitations, stated plainlyA POC that oversells itself is worse than one that doesn’t exist.

  • Synthetic data may not reflect real student behaviour.
  • Not validated for production — no external validation, no deployment.
  • Attention came out effectively uniform, and is reported that way.
  • Fairness is measured, not solved. Some groups are below the reliability threshold.

Run it

Four commands, no cloud account.

Everything runs locally on CPU. No API keys, no database, no login — the whole pipeline takes about ninety seconds.

Quickstart
make install     # venv + dependencies
make pipeline    # data → features → train → predict
make api         # http://localhost:8000/docs
make web         # http://localhost:3000

Windows: .\make.ps1 — or docker compose up --build to skip the toolchain.

Nine REST endpoints

The dashboard is a pure client of this API — it holds no model and no data of its own.

  • POST/predictrisk for one student at one week
  • GET/students/{id}/explanationattention, indicators, actions
  • GET/cohort?week=the whole cohort, re-scored
  • GET/fairness-reportevery sensitive attribute
Interactive OpenAPI docs
Built withPyTorchFastAPIpydanticscikit-learnNext.js 15React 19TypeScriptTailwind 4pytestuvDocker

The research

Hybrid Attention-Based Temporal Modeling for Early Dropout Prediction

Jha · Mathur · Purohit · Soni · Singhal · Joshi — PiCET-2026, in press with IET Conference Proceedings (Scopus). The paper reports F1 94.2% and AUC 96.1% on 7,935 real students; this POC runs on synthetic data and reports its own numbers, so the two are not comparable. What it delivers is one of the paper’s own future-work items — the dashboard that gets the prediction in front of an educator in time.