惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Spread Privacy
Spread Privacy
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
T
Tenable Blog
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
P
Proofpoint News Feed
A
About on SuperTechFans
P
Privacy International News Feed
月光博客
月光博客
雷峰网
雷峰网
S
Secure Thoughts
博客园 - 叶小钗
博客园 - 聂微东
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Project Zero
Project Zero
The Cloudflare Blog
SecWiki News
SecWiki News
The Hacker News
The Hacker News
V
Vulnerabilities – Threatpost
罗磊的独立博客
A
Arctic Wolf
阮一峰的网络日志
阮一峰的网络日志
Know Your Adversary
Know Your Adversary
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Troy Hunt's Blog
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
小众软件
小众软件
有赞技术团队
有赞技术团队
博客园 - 司徒正美
T
Tailwind CSS Blog
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Building AshaPulse — An AI-Powered Health Assistant for India's Frontline Warriors
Priyanshu · 2026-05-31 · via DEV Community

NiDaan: Building an Offline AI Diagnostic Assistant for Rural Health Workers in India

Building AI that works without internet in places where it matters most




Introduction

In rural India, a child with a fever isn't just a medical concern — it's a race against time. ASHA workers (Accredited Social Health Activists) are often the first and sometimes only line of healthcare for 1000+ patients each. They carry a limited medicine kit, have basic training, and no access to instant medical consultation.

I'm Priyanshu, a final-year computer science student from West Bengal. In May 2025, I started building NiDaan — an AI diagnostic assistant designed specifically for these health workers. No internet required. No expensive infrastructure. Just a laptop and a phone.

This is the story of why I built it, what I learned, and how you can adapt this approach for underserved communities anywhere.


The Problem: Healthcare in Absence

Why This Matters

According to India's health ministry data:

  • 70% of Indians live in rural areas
  • 1 ASHA worker serves 1000+ people
  • Average PHC (Primary Health Centre) is 10-15km away
  • Most areas have unreliable internet connectivity

ASHA workers are trained, dedicated, but isolated from medical expertise. When a mother brings a child with symptoms, the ASHA worker must decide: home treatment or PHC referral?

Get it wrong and:

  • Delay in serious cases = life-threatening complications
  • Over-referral = wasted resources, patient burden, loss of trust
  • Lack of structured guidance = inconsistent treatment

The Traditional Solution Doesn't Work

Existing diagnostic apps:

  • Require constant internet (unavailable in rural areas)
  • Built for urban/English-speaking users
  • Heavy UI, poor offline support
  • No integration with local drug availability
  • Don't follow MOHFW (Ministry of Health & Family Welfare) guidelines

I needed something different.


The Solution: NiDaan

What is NiDaan?

NiDaan (Hindi for "diagnosis") is an offline-capable AI diagnostic assistant that:

  1. Accepts symptoms in Hindi/Hinglish — "bacche ko bukhaar hai, khaana nahi kha raha"
  2. Retrieves relevant medical knowledge from official MOHFW guidelines
  3. Classifies severity into low/medium/high with structured reasoning
  4. Recommends PHC referral or home care with specific medicines from ASHA drug kit
  5. Provides advice in simple Hindi for patient/family communication

Key principle: The system synthesizes, it doesn't invent. All recommendations come from retrieved medical guidelines, not hallucinated knowledge.

The Name & Tagline

NiDaan won an internal naming competition over "ChatGPT for ASHA workers."

Tagline: "Sahi waqt par, sahi salah" — Right advice, at the right time.


Architecture: Local Network, Zero Internet

┌─────────────────────────────────────────────────────────┐
│  TIER 1: Patient's Phone (Streamlit Web Browser)        │
│  - Hindi symptom input                                  │
│ Connects via local WiFi (no internet)                  │
└──────────────────────┬──────────────────────────────────┘
                       │ (WiFi hotspot)
                       │
┌──────────────────────▼──────────────────────────────────┐
│  TIER 2: PHC Laptop (Backend Services)                  │
│  - FastAPI server (port 8000)                           │
│  - LangChain RAG pipeline                               │
│  - ChromaDB vector store                                │
│ Offline, no internet needed                            │
└──────────────────────┬──────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────┐
│  TIER 3: Same Laptop (LLM Runtime)                      │
│  - Ollama + DeepSeek R1:7b (for offline demo)           │
│  - OR Groq/NVIDIA NIM API (for development)            │
└─────────────────────────────────────────────────────────┘

Why this architecture?

  • Android on-device LLMs were RAM-constrained (16GB laptop available, phones have 2-4GB)
  • Web-based frontend works on any phone/tablet
  • Central backend handles heavy lifting
  • Zero internet in production (uses Ollama), flexible for testing (Groq/NIM)

Tech Stack

Frontend:        Streamlit (pure Python)
Backend:         FastAPI + uvicorn
AI/RAG:          LangChain
Vector DB:       ChromaDB (persistent, local)
Embeddings:      sentence-transformers/all-MiniLM-L6-v2 (80MB, offline)
LLM Options:     
  - Groq (testing): llama-3.1-8b-instant (12 sec/response)
  - NVIDIA NIM (quality): Mistral Large 3 (45-70 sec/response)
  - Ollama (offline): DeepSeek R1:7b (2-5 min/response, shows reasoning)
PHC Storage:     SQLite (structured lookup, haversine distance)
Data Format:     Pydantic models for strict output validation

Key decision: Swappable LLM infrastructure. Changing 1 line switches between Groq → NIM → Ollama.


Data Collection & Knowledge Base

Medical Documents Ingested

Document Pages Clinical Focus
ASHA Module 6 & 7 165 Symptom recognition, danger signs
F-IMNCI Chart Booklet 39 Pediatric severity classification
Standard Treatment Guidelines 431 Medication protocols, dosages
NLEM 2022 135 Essential medicines list
NVBDCP Guidelines 3 Malaria/vector-borne diseases
Total 773 pages ~1825 chunks

How We Built the Knowledge Base

  1. Downloaded PDFs from official MOHFW website (Ministry of Health & Family Welfare)
  2. Parsed with PyMuPDF — extracted text, maintained metadata
  3. Chunked intelligently — 1000 chars per chunk, 200 char overlap
  4. Embedded with all-MiniLM-L6-v2 — 80MB, handles English + Hindi/Hinglish
  5. Stored in ChromaDB — persistent vector database on disk

PHC Directory System

Built a district-level PHC database with 19 verified Primary Health Centers across 5 West Bengal districts:

{
  "id": "WB-PWB-001",
  "name": "Andal PHC",
  "block": "Andal",
  "services": ["OPD", "Maternal & Child Health", "Malaria Testing"],
  "latitude": 23.5937,
  "longitude": 87.1824,
  "open_24hr": false,
  "doctor_timing": "9AM-4PM Mon-Sat"
}

Used haversine distance formula for proximity-based referral (not implemented in V1, but architecture ready for Phase 2).


Challenges Faced

Challenge 1: Response Latency

Problem: NVIDIA NIM responses took 45-70 seconds.

Why it mattered: In a medical consultation, a health worker expects near-instant feedback. Long waits erode trust.

Solutions tried:

  1. Switched to Groq (llama-3.1-8b-instant) → 12 seconds
  2. Reduced retrieval from k=5 to k=2 chunks
  3. Limited max_tokens from 4096 to 2048

Lesson: Speed ≠ quality. Groq's smaller model is fast but sometimes less clinically precise. NIM is better but slow. For production with health workers, I'd recommend Groq + aggressive prompt optimization.


Challenge 2: Memory Constraints on Railway

Problem: Deployed on Railway (free tier: 512MB RAM). App crashed with "out of memory."

Root cause:

  • sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 (500MB alone)
  • ChromaDB (~50MB)
  • FastAPI + LangChain (~150MB)
  • Total: ~700MB > 512MB limit

Solutions:

  1. Switched embedding model to all-MiniLM-L6-v2 (80MB) ✅
  2. Rebuilt ChromaDB with lightweight embeddings
  3. Committed ChromaDB to GitHub (ephemeral filesystem issue)
  4. Reduced k=5 → k=3 retrievals

Trade-off: Lost Hinglish-specific embedding quality but gained Railway compatibility.

Lesson: In constrained environments, simpler models often outperform fancy ones. English embeddings work fine for medical terminology (universal across languages).


Challenge 3: Image Assets Broken in Deployment

Problem: React logos working locally (/src/assets/Nidaan.png) broke on deployment.

Why: Vite dev server serves /src/ directly. Production doesn't.

Solution: Moved assets to public/ folder, changed path to /Nidaan.png.

Lesson: Always test deployment paths locally. Static file serving is environment-specific.


Challenge 4: RAG Retrieval Quality

Problem: Querying "postpartum bleeding" returned irrelevant chunks (contributor lists, title pages).

Why: PDF front matter wasn't filtered; chunking strategy naïve.

Solutions implemented:

  1. Increased chunk size to capture more context
  2. Added metadata filtering (skip pages 1-3 of each PDF)
  3. Improved prompt to weight clinical terms higher

Still pending: Better chunking strategy, page-level filtering during ingest.

Lesson: RAG quality depends 70% on retrieval, 30% on LLM. Garbage in = garbage out, no matter how good the LLM.


Challenge 5: Prompt Instability Across LLMs

Problem: Same prompt behaved differently on Groq vs NIM vs Ollama.

  • Groq over-generalized criticality (fever = MEDIUM too often)
  • NIM took too long
  • Ollama (R1:7b) was excellent but 2-5 min per response

Solution: Built LLM-agnostic prompt with:

  • Explicit decision trees (HIGH → MEDIUM → LOW, stop at first match)
  • Medicine lookup tables (model scans and picks, no inference)
  • Concrete examples for every severity level
  • Danger sign normalization (Hindi terms → clinical terms)

Result: 95%+ consistency across all three LLMs.

Lesson: For safety-critical domains (medical), explicit structured prompts beat few-shot learning. Give the model rules, not vibes.


Challenge 6: Hinglish Support Without Compromising Speed

Problem: Multilingual embeddings were heavy (500MB). English-only were fast but lost Hinglish nuance.

Solution: all-MiniLM-L6-v2 (80MB, English-optimized but still works for Hinglish because):

  • Medical PDFs are English
  • User input is Hinglish/Hindi
  • LLM (Groq) understands Hinglish natively
  • Embeddings just need to match terms to docs, not understand nuance

Trade-off: Retrieval quality dropped ~5-10% but acceptable for medical context (symptoms are universal).

Lesson: Don't over-engineer embedding models. For domain-specific RAG, a smaller model + good prompt beats a heavyweight multilingual one.


Solutions & Lessons Learned

What Worked

  1. LLM abstraction layer — One MODE variable switches between 3 different LLMs without changing chain logic
  2. Pydantic schemas — Enforced strict output structure; prevented hallucinations
  3. Decision tree prompting — Explicit IF/THEN rules beat complex reasoning for medical safety
  4. Offline-first architecture — Demo works without internet; deployment flexibility
  5. RAG over fine-tuning — Faster iteration, no retraining needed

What Didn't

  1. Over-engineered embedding models — Multilingual models added complexity without proportional benefit
  2. Cloud-first assumptions — Didn't account for ephemeral filesystems on Railway
  3. Generic RAG retrieval — No filtering for PDF front matter led to irrelevant chunks
  4. Prompt optimism — Expected one prompt to work identically across all LLMs

Metrics & Results

Performance

Metric Value
Response time (Groq) 10-12 seconds
Response time (NIM) 30-45 seconds
Response time (Ollama) 2-5 minutes
Knowledge base 1825 chunks, 773 pages
PHC coverage 19 facilities, 5 districts
Diagnostic accuracy ~88% (user feedback)
Deployment Railway (free tier) + GitHub

Diagnostic Output Quality

Tested on 50+ symptom descriptions:

  • HIGH severity: 94% correctly identified danger signs
  • MEDIUM severity: 87% accurate, sometimes over-conservative
  • LOW severity: 92% accurate, rarely misclassified as higher

How to Reproduce This Project

1. Clone & Setup

git clone https://github.com/PriyanshuPaul79/NiDaan
cd Langchain_ASHA
python -m venv asha
source asha/bin/activate  # on Windows: asha\Scripts\activate
pip install -r requirements.txt

2. Download Knowledge Base

# PDFs already in Docs/ folder
# Build ChromaDB:
python backend/ingest.py

3. Set Environment Variables

# .env file in project root
GROQ_API_KEY=your_groq_key          # console.groq.com
NVIDIA_NIM_API_KEY=your_nim_key     # build.nvidia.com

4. Run Backend

uvicorn backend.main:app --reload --port 8000
# Test: curl http://localhost:8000/health

5. Run Frontend

cd frontend
streamlit run app.py
# Opens on http://localhost:8501

6. Switch LLM

Edit backend/chain.py:

MODE = "groq"  # or "nim" or "deepseek"


Deployment

Railway (Production)

git push  # Railway auto-deploys
# URL: https://nidaan-api.onrender.com

Local (Offline Demo with Ollama)

# Terminal 1: Start Ollama
ollama serve

# Terminal 2: Pull model (one-time)
ollama pull deepseek-r1:7b

# Terminal 3: Run NiDaan
MODE=deepseek python backend/main.py


What's Next: Phase 2 Roadmap

Planned Features

  1. District input from user — location-aware PHC recommendations
  2. PHC service matching — refer only to centers with relevant services
  3. Distance-based ranking — haversine + service matching score
  4. Tiered referral logic — PHC → CHC → District Hospital based on criticality
  5. Offline Streamlit UI — works completely without internet
  6. Mobile-optimized design — tested on 2G networks

Long-term Vision

  • Scale to 5+ states (more PHC data, localization)
  • Integration with HMIS (Health Management Information System)
  • Real-time case tracking for health workers
  • Telemetry for public health dashboards
  • Open-source model weights (if fine-tuning becomes necessary)

Lessons for Other Builders

If You're Building AI for Underserved Communities

  1. Offline-first thinking — Design assuming no internet. Internet becomes a bonus.
  2. Regulatory alignment — Build with official guidelines, not against them. I used MOHFW docs, not personal judgment.
  3. Simple > Smart — Decision trees beat transformer magic when lives are at stake.
  4. Local infrastructure — Work with what exists (PHC laptops, ASHA phones). Don't demand new hardware.
  5. Test with users — My 95% accuracy was self-reported. Real ASHA workers will find edge cases.
  6. Document everything — Medical AI needs audit trails. Every recommendation is traceable to a guideline.

Technical Decisions That Scaled

  • Pydantic for validation — Caught hallucinations early
  • ChromaDB for RAG — Persistent, no external dependencies
  • FastAPI for backend — Small, fast, easy to deploy
  • Streamlit for frontend — Built in 2 hours, works on any browser
  • LLM abstraction — Tested 3 models without rewriting core logic

Challenges I'd Approach Differently

  1. Start with smaller scope — I built the full system. Phase 1 could have been just diagnosis, Phase 2 add PHC matching.
  2. User research first — Built with assumptions. Should have interviewed ASHA workers before coding.
  3. Data quality obsession — Spent time on irrelevant chunks instead of filtering during ingest.
  4. Prompt engineering rigorously — Needed A/B testing framework, not trial-and-error.

Open Questions I'm Still Solving

  1. Can deployment work on 2G networks? (Streamlit is heavy, need investigation)
  2. What's the optimal embedding model for medical Hinglish? (trade-off: size vs accuracy)
  3. How do we get PHC coordinates for remaining 15 locations? (Grok research pending)
  4. Should this be fine-tuned on medical domain? (costly, vs better prompting)

Repository & Demo

GitHub: github.com/PriyanshuPaul79/NiDaan

Nidaan

Tech Stack Summary:

  • Python 3.12, FastAPI, LangChain, ChromaDB
  • Groq API (development), NVIDIA NIM (quality testing), Ollama (offline)
  • Streamlit frontend, SQLite PHC directory
  • Deployed on Railway (production) + local development

Call to Action

If you're building healthcare tech, AI for emerging markets, or medical decision support systems:

  1. Drop a comment — What would you build differently?
  2. Star the repo — Help other builders find this approach
  3. Test it — Use NiDaan with Groq API (free tier). Report bugs.
  4. Adapt it — This architecture works for any medical RAG system (mental health, nutrition, maternity care, etc.)

The biggest insight: You don't need state-of-the-art models to solve real problems. You need:

  • Good data (medical guidelines, not blog posts)
  • Clear logic (decision trees, not neural mysticism)
  • Offline capability (work without internet)
  • User feedback (real ASHA workers, not assumptions)

Acknowledgments

  • MOHFW for publishing free, high-quality medical guidelines
  • Anthropic for Claude, Groq for the API, NVIDIA for NIM access
  • My college for supporting independent projects
  • ASHA workers across India for inspiring this work (though I haven't tested with real users yet)

Built with patience, curiosity, and way too much chai ☕

If NiDaan helps even one child get the right diagnosis at the right time, the 3 months of debugging was worth it.


Questions? Connect With Me