case study ยท featured build
Diabetes Risk Check
Free, private screening for early-diabetes symptom patterns. Answer 16 questions; a 5-expert stacking ensemble scores you locally in the browser โ no server inference, nothing uploaded. A score is a prompt to get a blood test, never a diagnosis.
Problem
Early-diabetes symptoms are easy to dismiss and awkward to check: booking a lab visit for a vague suspicion feels like overkill, while symptom-checker sites either demand sign-ups or ship your health answers to a server. The bar was a check that is instant, free, and private by construction โ not by promise.
Constraints
No backend budget and no appetite for holding health data โ so inference had to run 100% client-side. The model artifact had to be small enough to ship with a static page, and the whole pipeline had to be reproducible: anyone should be able to retrain from scratch and get the identical artifact.
Approach
Trained and compared 10 algorithms plus a 5-expert stacking ensemble (train/compare.py), publishing the full comparison table in the repo instead of cherry-picking the winner. A CTGAN augmentation study tested whether synthetic tabular data helps on this small clinical-style dataset โ with honest, mixed results kept in the write-up rather than buried.
The trained model is exported to a JSON artifact and ported to TypeScript, with a parity fixture + test gate proving the browser scores exactly what Python scored. A verify_all.sh pre-deploy gate (retrain โ export โ parity โ bundle โ hashed build) means the shipped site can never drift from the evaluated model.
Result
Live static site: 16 dropdown questions โ instant local risk pattern, with methodology, benchmark, and GAN-study pages alongside it. Zero inference cost, zero data liability, fully reproducible from one commands block in the README.
What I'd do differently
Add probability calibration (Platt/isotonic) and surface calibrated bands instead of a raw score; run a proper fairness slice across age/sex subgroups before calling it a screening aid; and package the flow as an installable PWA for low-connectivity clinics.
