Inspiration

India's ANMs (Auxiliary Nurse Midwives) are the last line of maternal healthcare in rural India, each responsible for 400–600 women across scattered villages. Today, they decide who to visit next based on geography and memory. There's no data-driven triage. Women with undetected hypertension, breech presentations, or incomplete immunization fall through the cracks not because no one cares, but because no one has a way to know.

Araria district in Bihar has some of the worst maternal health indicators in the country. The Annual Health Survey collected rich data on 10,000+ women there but that data sat unused in a CSV. We wanted to turn it into something an ANM could act on before the next home visit.


What it does

SurakshaSakhi is a Maternal Risk Intelligence platform built specifically for ANMs. It does three things:

Predicts risk across three dimensions for currently pregnant women in the district:

  • Delivery complication risk across 6 separate classifiers encompassing the following issues: premature labour, obstructed labour, excessive bleeding, convulsions, breech, prolonged labour.
  • Home delivery risk: women unlikely to reach a facility in time
  • Immunization dropout risk: children likely to miss BCG, polio, DPT, or measles

Prioritises who to visit first, not the closest woman, but the highest-risk one. Each woman gets an overall risk score and a priority rank. The ANM sees a village-level heatmap and a ranked patient list, both colour-coded by urgency. Along with that, a global metric dashboard using Databricks Dashboard

Answers natural language questions in Hindi and English via a voice assistant powered by Databricks Genie. An ANM can ask: "इस हफ्ते सबसे खतरनाक 5 महिलाएं कौन सी हैं?" and get a spoken answer with a data table — no typing required.


How we built it

Data pipeline on Databricks: Raw AHS survey CSV (10,606 rows × 350 columns) ingested into Delta Lake via Unity Catalog.

Three sklearn RandomForest models — Spark MLlib is security-whitelisted on Databricks Free Edition, so we converted to pandas and used sklearn with class_weight="balanced" for the 5–14% positive rate imbalance. All models tracked in
MLflow (18 runs), AUC-ROC as evaluation metric. Temporal separation enforced: no label column reused as a feature.

Scoring pipeline applies all three models to the 1,734 currently pregnant women, writes workspace.suraksha.risk_scores to Delta with priority rank and risk level.

React + FastAPI app deployed as a Databricks App: connected to Databricks Genie — queries go to the Genie Conversations API, results come back as SQL + row data rendered as live tables.


Challenges we ran into

Databricks Free Edition has hard constraints nobody documents clearly — Spark ML classes throw Py4JSecurityException, MLflow Model Registry S3 uploads are blocked with AccessDenied, and mlflow.set_experiment() causes a GRPC error. We hit all three. Switched to sklearn, removed registered_model_name, dropped set_experiment(). Each took debugging time we couldn't afford.

58% of the most clinically useful columns are structurally missing — ANC symptom fields (swelling, hypertension, bleeding) are NA for women who never registered for ANC. Standard imputation would destroy the signal. We engineered
had_anc_registration as a binary flag, so the missingness becomes a feature rather than noise.

Genie API is async with polling — the start-conversation response returns a message_id at SUBMITTED status. You poll every 2 seconds until COMPLETED, then separately fetch the statement_id from the SQL execution API to get actual row
data. This three-step chain (start → poll → fetch results) needed a clean backend proxy to avoid CORS issues and token expiry in the browser.

The token is a 1-hour JWT — Rajat's curl worked once then expired mid-integration. Solved by having the backend subprocess databricks auth token --profile Ayush on every request, which handles refresh automatically.


Accomplishments that we're proud of

  • District-specific models trained on real government survey data from Araria — not a generic health demo, but something calibrated to the actual population distribution, social group breakdown, and facility access patterns of this district.
  • Temporal separation across all three models — ANC symptoms predict delivery outcomes (not used as labels), household factors predict delivery location and immunization (no data leakage). This was a deliberate design constraint we held to under deadline pressure.
  • Voice assistant that works in Hindi with natural language → Genie → SQL → spoken answer in under 10 seconds. An ANM with low digital literacy can query the entire risk database by speaking.
  • End-to-end on Databricks — Delta Lake, Unity Catalog Volumes, MLflow, Databricks Apps, Genie Spaces, SQL Statement Execution API — the full stack in 24 hours on a free tier.

What we learned

  • Structural missingness in health survey data is itself a clinical signal — the absence of ANC registration predicts risk better than any individual symptom.
  • Databricks Free Edition is powerful but has undocumented restrictions that only surface at runtime. Building on it requires defensive coding and fallback strategies.
  • ANMs are the actual users — every design decision (Hindi-first voice, village-level heatmap, priority rank instead of raw scores) came from thinking about someone who visits 15 villages a week on a scooter and has 3 minutes to decide who to see next.
  • Genie is genuinely good at converting domain questions into correct SQL when the table schema is well-named and the Genie Space is configured with context. The quality of the natural language → SQL mapping surprised us.

What's next for SurakshaSakhi

  • ASHA guideline RAG — upload MoHFW ASHA training modules and link them to individual risk factors. When a patient has a breech risk, the assistant surfaces the exact protocol the ASHA should follow.
  • Offline mode — ANMs in Araria have unreliable connectivity. A cached risk snapshot with local voice Q&A using a quantized Param-1 (2.9B) model running on-device.
  • Feedback loop — ANMs log visit outcomes back into the system. Actual delivery outcomes close the loop and retrain the models on ground truth, not just survey proxies.
  • Expand beyond Araria — the AHS dataset covers all of Bihar. The pipeline is district-agnostic; deployment to Darbhanga, Sitamarhi, and Madhepura would require only a data reload and a retrain.
  • Integration with HMIS — hook into the national Health Management Information System so risk scores are visible to block-level health officers, not just individual ANMs.

Built With

Share this project:

Updates