From notebook to live scoring dashboard: GridSentinel scores every smart meter for theft risk, explains why each account is flagged and tells your inspectors where to go first.
AMI readings and billing records from PostgreSQL or CSV dumps, validated and deduplicated.
Reproducible notebooks build the signals: consumption drops, night usage, tamper events, billing gaps.
Three models, class imbalance handled, compared on precision, recall, F1 and ROC AUC.
The champion model behind a Flask API: /score and /batch, with per-feature contributions.
The dashboard ranks accounts, explains each flag and sends inspectors where theft is likely.
Choose your role to explore the prototype.
Every step is versioned and documented, so the model keeps working when your meter fleet and customer behaviour change.
$ docker build -t gridsentinel . && docker run -p 5000:5000 -p 3000:3000 gridsentinel ✔ API ready on :5000 ✔ dashboard ready on :3000 $ curl -X POST localhost:5000/score -d '{"account_id":"ACC-111896"}' { "theft_probability": 0.982, "risk_band": "high", "top_factor": "Deviation from feeder peers" } $ python scripts/retrain.py --since 2026-10-01 → F1 0.723 vs champion 0.709 · promoted run-0412
240 accounts scored on realistic sample data.