I build systems that decide when to trust a model — and what to do when they shouldn't.
Most of the hard part of applied machine learning isn't the model. It's knowing how much to believe it, and designing what happens next. I work on that gap — probabilities you can set a threshold against, evaluation protocols fixed before the results arrive, and systems that degrade sensibly instead of confidently.
B.Tech Information Technology, KIIT University (2023–2027). Preparing for graduate study in AI and data science, with a focus on calibration, decision-making under uncertainty, and evaluation methodology.
Portfolio · Sentinel preprint · ORCID · LinkedIn · soumyasinha2603@gmail.com
Every system I've built reduces to the same three parts. A signal, a threshold, and an action that has to survive being questioned. The threshold is the interesting part: it is set by what the operator can actually do, not by whatever cut maximises a metric.
| System | Signal | Threshold | Action |
|---|---|---|---|
| Sentinel | Calibrated 30-day readmission probability | 0.188 — set by 10% review capacity |
Which 1,573 patients enter today's review worklist |
| Adaptive Honeypot | 21 behavioural biometric features per session | Random-Forest confidence, under 50 ms | Allow, challenge, observe, or divert into a decoy |
| ShopVision | CNN class confidence on a produce image | 0.85 auto · 0.60 confirm |
Auto-add, ask for confirmation, or fall back to manual |
Sentinel's operating point, drawn to scale. The distribution is a schematic; the threshold, the flagged count and the capture rate are measured values from the preprint.
A care-manager worklist that ranks discharged patients by calibrated 30-day readmission risk, explains each one with exact SHAP reason codes, and states its own reliability caveats in the interface rather than burying them in a report.
The field's honest discrimination ceiling on this benchmark is around 0.68 — public solutions that report 0.9+ have almost always let the same patient appear in train and test. Sentinel treats any AUROC at or above 0.72 as a defect to investigate, and everything built around that number is the actual contribution.
Captured from the live deployment. Moving the review capacity moves the threshold, and precision and recall trade against each other in real time — 5% capacity buys ~41% precision at ~18% recall; 20% buys ~49% recall at ~28% precision. Choosing that point is the product.
| Discrimination | AUROC 0.677 — sealed holdout, scored exactly once, CV-to-holdout gap −0.001 |
| Calibration | ECE 0.331 → 0.026 via isotonic regression; Brier 0.204 → 0.092, ranking unchanged |
| Clinical utility | +0.035 net benefit over treat-all across the actionable 0.05–0.15 band |
| Cohort | 99,343 encounters, 69,990 unique patients; every split grouped by patient |
| Rigour | Pre-registered fairness audit, distribution-shift study, leakage tripwire, MLflow + DVC |
Sole author — research design, evaluation protocol, modelling, and deployment.
LightGBM Optuna SHAP FastAPI Next.js MLflow DVC Docker
Repository · Preprint (DOI) · Live worklist · Scoring API (free tier — first request can take ~60s to wake)
A robustness audit of training-free hallucination signals. It asks whether geometric features of transformer hidden states — trajectory curvature, eigenscore, effective rank — predict semantic entropy better than a trivial mean-token-entropy baseline that costs nothing.
They don't. Entropy wins on every seed in five of six model×dataset cells. Eigenscore turns out to be 98–99% collinear with sequence length, and which features look reliable swings with the evaluation split. This is a negative result, reported as one.
Figure 1 from the manuscript. Eigenscore — one of the most cited training-free uncertainty features — is 98–99% sequence length. Most of what it "detects" is how long the answer was.
| Grid | 2 models × 3 datasets — Llama-3-8B-Instruct and Mistral-7B-Instruct-v0.2, identical 4-bit NF4 config; TruthfulQA, BioASQ, SQuAD v2 |
| Target | Hybrid semantic entropy over ten sampled generations, meaning-clustered by embedding cosine and NLI non-contradiction |
| Reproducibility | python verify_numbers.py re-checks all 52 headline quantities against committed result files — standard library only, no GPU, about one second |
| Stated up front | The target is heavily floored (36% of items sit at exactly zero), so every reported correlation is an attenuated lower bound |
Sole author. Experiments ran on PyTorch Transformers bitsandbytes sentence-transformers;
the committed verification path deliberately imports nothing outside the standard library, and
the repository is explicit about which parts of the pipeline are not yet published.
A seven-layer authentication pipeline that scores session behaviour and silently routes suspected attackers into a decoy banking environment instead of blocking them. Blocking tells an attacker they were detected; the API response here is structurally identical either way, so the routing decision stays unobservable.
| Detection | 88–98% on automated attack categories — 5-fold CV on a synthetic set of 4,000 normal and 1,200 attack samples |
| Named weak point | Patient human attackers score 60–70% and account takeover 55–65%, because behavioural signals converge with legitimate use |
| Latency | Random-Forest classification under 50 ms; end-to-end under 200 ms across all seven layers |
Six-person course project at KIIT. I built the security analytics layer and ran the detection evaluation — including the finding that manual-attacker recall is the system's weak point. The detector was co-implemented with a three-person core; the deception layer and authentication flow were built by others on the team.
The analytics layer I built. Confidence is bucketed deliberately: a cluster at 95%+ is unsophisticated bots, while a cluster near 65% is the signature of a slow, careful attacker — which is how the manual-attacker weakness became visible in the first place. The bank branding is part of an academic prototype that was never deployed publicly; HDFC Bank has no involvement in or connection to this project, and all traffic and accounts shown are synthetic.
FastAPI React scikit-learn SQLAlchemy Recharts
Repository (team project — forked from a teammate's upstream repository)
Also: an ESP32 health-monitoring rig built during an IoT internship at BIT Mesra — RealTime-Health-Monitoring-ESP32. ShopVision (confidence-routed checkout backend) and an insurance cross-sell pipeline over 381K records are written up on the portfolio.
Pre-registered audits of uncertainty and evaluation methodology. Two are under double-blind review, so no public copy exists to link — the rows say so rather than omitting the work.
| Year | Status | Work |
|---|---|---|
| 2026 | Under review | When Does Cross-Model Perplexity Detect Hallucinations? A Pre-Registered Stratified Audit — UncertaiNLP @ EMNLP 2026. A verifier's cross-model perplexity separates errors only when the generator holds the correct knowledge (AUROC 0.65–0.70), and sits at or below chance when it does not (0.44–0.48). All three pre-registered hypotheses were unsupported; reversals of my own conclusions are recorded in the amendment log. |
| 2026 | Under review | When Does Geometry Beat a Token-Entropy Baseline for Hallucination Detection? A Robustness Audit — UncertaiNLP @ EMNLP 2026. Artifacts: Light-SE · DOI |
| 2026 | Preprint | Sentinel: An honestly-evaluated, calibrated, and deployed decision-support system for 30-day hospital readmission risk on a public benchmark — Zenodo, 8 July 2026. DOI · Record · Code |
Sole author on all three. ORCID 0009-0009-8557-4794.
How I work. Selection rules, operating points, fairness criteria and robustness stressors are declared before scoring, so results can't be fished. Holdouts are spent once. Every number in a write-up traces to a committed file, and where a result contradicts what I expected, the contradiction is what gets published.
| Machine learning | LightGBM scikit-learn TensorFlow Optuna SHAP Transformers |
| Evaluation & rigour | Probability calibration · decision-curve analysis · fairness auditing · leakage-disciplined splits · distribution-shift testing · pre-registration |
| Systems & serving | Python FastAPI Next.js React SQLAlchemy Docker MLflow DVC pytest GitHub Actions |
| Data & analysis | Pandas NumPy Power BI Orange |
| Languages | Python TypeScript C Java SQL |
Global Immersion Program, National University of Singapore — AI-Powered Analytics (2025) · MITx Computational Data Science in Physics · DeepLearning.AI Neural Networks and CNNs.
Portfolio · LinkedIn · ORCID · Email
Implementation across these projects was AI-assisted — I use Claude Code for code generation, refactoring, and drafting, under my direction. Research design, methodology, evaluation and pre-registration protocols, and all modelling decisions are my own, as disclosed in the Sentinel preprint.




