AI • Civic Tech
AI-powered offline-first reunification platform built during India's first Claude Impact Lab. System helps volunteers, police, and help desks reconnect missing pilgrims across 80M+ attendees at Kumbh Mela 2027. Matches missing and found person reports using AI-assisted semantic matching, geospatial intelligence, and facial recognition — all in an offline-first PWA.
User → PWA → Service Worker → IndexedDB → FastAPI Sync → PostgreSQL → Semantic Matcher
DECISION
PWA over native mobile apps
Instant access via QR/SMS — no app store friction. 80M+ attendees can't be expected to install an app.
Alternatives: React Native — rejected for distribution friction. Flutter — same problem.
Tradeoffs: No push notifications on iOS. For this use case (data lookup), not a blocker.
DECISION
PostgreSQL over MongoDB for person data
Data integrity for person records is critical — same person should not have conflicting data across reports
Alternatives: MongoDB — rejected because schema flexibility risked data integrity for critical reunification data
Tradeoffs: Schema migrations require careful planning with Alembic. Worth it for relational integrity.
DECISION
ChromaDB for local semantic search
On-device embedding matching works without internet — critical for offline-first architecture
Alternatives: Pinecone — rejected because it requires cloud connectivity
Tradeoffs: Local vector search has recall limits vs cloud-based. Acceptable for the use case.
Name matching across Indian languages and scripts
Multilingual embeddings (e5-small) with cross-encoder re-ranking — 92% top-5 recall on Hindi names
Rule-based name matching fails for Indian languages. Embedding-based semantic matching is the minimum viable approach.
Offline-first data sync with conflict resolution
Last-write-wins with timestamp vectors and manual merge UI for critical conflicts
CRDTs would be ideal but add complexity. For this use case, LWW + human review is the pragmatic choice.
Facial recognition on low-end Android devices
Server-side face encoding, client-side capture only — encoding happens when sync connects
Offloading compute to the server when connected preserves battery and performance on low-end devices
Unit: pytest for FastAPI sync endpoints and semantic matching accuracy. Integration: offline sync protocol tested with simulated network conditions (Chrome DevTools throttling). PWA: Lighthouse PWA audit passed.
PWA served via static hosting (Netlify/Vercel). FastAPI backend on VPS with Docker Compose. PostgreSQL on cloud RDS. Service Workers for offline-first with background sync.
No production monitoring — event-specific platform (Kumbh Mela 2027). Would add Web Vitals tracking and error logging for launch. Sync conflict rate would be a key operational metric during the event.
Build the sync status indicator first (green/amber/red for connectivity status). In pilots, volunteers don't know if their report is submitted or pending sync, causing duplicate submissions.