Inspiration

NGO fieldwork in India runs on WhatsApp groups, phone calls and spreadsheets. A worker in a village reports "paani nahi aa raha 3 din se" at 11 PM, and the message lands between forwards and good-morning images. By the time a coordinator sees it, finds a free volunteer and makes the call, hours are gone. Meanwhile, three other people have reported the same problem, and two volunteers have been sent to the same place.

India has over 3.3 million registered NGOs, and most of them coordinate crises this way. Field workers report water shortages, food insecurity and medical emergencies in Hindi, Telugu, Tamil and many regional languages. Those messages get buried, volunteers sit available with no idea where to go, and coordinators spend their day reading reports and making calls by hand. The communities who need help most end up waiting the longest.

NGOs don't lack tools. They lack a coordination layer that works the way their people already communicate: messy, multilingual, low-bandwidth, and mostly on basic phones. We built PULSE around three UN SDG targets:

SDG 11.5: faster disaster response SDG 1.5: resilience for vulnerable communities, including zero-literacy and zero-English users SDG 3.8: routing medical emergencies to skilled volunteers

We started from one question: what is the shortest path from "someone needs help" to "someone is on the way" for a person with a 2G phone and no English?


What it does

PULSE is an end-to-end AI coordination platform for NGOs. It runs the whole path from a field report to a verified resolution, with no manual steps in between.

The 30-Second Pipeline

Field Worker speaks / texts / calls
↓
Backend receives via any of 5 channels
↓
Groq LLaMA 3.3 70B analyzes in any Indian language
(Gemini 2.5 Flash on standby as auto-fallback)
↓
Haversine clustering groups nearby same-type reports
↓
Urgency ≥ 80 → nearest skilled volunteer auto-assigned
↓
WhatsApp + SMS fired simultaneously
Google Maps navigation link included
↓
Volunteer replies ACCEPT → navigates → replies DONE
↓
Gemini Vision verifies proof photo (3-check fraud detection)
↓
Cluster resolved. Timestamp logged. Volunteer freed.
Total time: under 30 seconds.

1. Multi-channel, multilingual intake. A crisis can be reported in Hindi, Telugu, Tamil, Marathi, Bengali, Urdu or English through any of these:

WhatsApp: send any message to the PULSE number. Vague messages like "help chahiye" trigger a guided 4-step conversation (crisis type, people affected, days unmet, location). Detailed messages like "3 din se paani nahi, Abids mein, 50 log hain" skip the bot and go straight to AI analysis. SMS: works on any basic phone. IVR voice call: call the PULSE number, pick a language, press 1 (water), 2 (food) or 3 (medical), and record a 30-second voice report. No smartphone or literacy needed. Vapi browser voice agent: tap the mic button on the website and speak your report in any language. No phone call and no typing. When the call ends, the transcript goes to our /vapi-webhook, is analyzed by AI and saved to Firestore automatically. Vapi phone line: call +1 (803) 879 1375 from any phone. The PULSE Crisis Reporter AI assistant answers, collects the report through natural conversation, and routes it into the same AI pipeline. Manual intake form: coordinators can log crises from the dashboard and instantly see the AI's urgency score and summary.

2. Understanding. Whatever the channel or language, every report becomes structured data. An LLM (Groq LLaMA 3.3 70B, with automatic fallback to Gemini 2.5 Flash) extracts the crisis type, an urgency score from 1 to 100, the location, the language and a plain-English summary.

3. Location and clustering. The location text is geocoded through OpenStreetMap. Nearby reports of the same type (Haversine, 30 km radius) are clustered into one incident with a combined urgency score and total affected population, so ten reports of one broken borewell produce one dispatch.

4. Smart dispatch. Volunteers are ranked by skill match, distance and availability. At urgency 80 or above, PULSE auto-assigns the best match. Below 80, the cluster goes to the NGO admin, who assigns from a live Google Maps dashboard.

5. Volunteer loop. The volunteer gets a WhatsApp message and an SMS with the crisis details and a Google Maps navigation link, and replies ACCEPT, DECLINE or DONE. DECLINE triggers automatic reassignment to the next best match.

6. Proof of work. To close a task, the volunteer submits a photo. Gemini Vision checks that it matches the task type, is a real field photo and not a reused or stock image, and fits a plausible crisis context. A high fraud risk means rejection and a resubmit request, so "done" means done.

7. Escalation and foresight. Unresolved clusters escalate in urgency every hour, so no crisis stays low-priority forever. PULSE also analyzes historical patterns by region, crisis type and month to send predictive alerts, and generates professional impact reports for funders on demand.

8. One live dashboard. Admins see color-coded crisis clusters on a real-time Google Maps view, a live feed of incoming reports, predictive alerts, and cluster controls (assign, reassign, force-assign, resolve with a note). Task status moves through Assigned, Accepted, Proof Awaiting, Verified and Resolved, each step timestamped. Every record is tagged by ngo_id, so each NGO sees only its own data, and the interface works in seven languages. Volunteers have a no-login portal where they look up their tasks by phone number.


How we built it

Three people built three independently deployed services:

Service Stack Role
AI service Python, Flask, Groq LLaMA 3.3 70B, Gemini 2.5 Flash, OpenStreetMap Nominatim, Haversine Crisis analysis, geocoding, clustering, volunteer matching, escalation, predictive alerts, impact reports
Backend Node.js, Express, Render, Twilio, Vapi, Firebase Admin, node-cron 22+ routes for WhatsApp, SMS, IVR and voice webhooks, Gemini Vision proof verification, hourly escalation cron, token-verified NGO routes
Frontend React, Vite, Tailwind CSS, Framer Motion, Firebase Hosting, Google Maps API, i18next, Vapi Web SDK 10-page admin and volunteer app, live map, real-time Firestore sync (onSnapshot), 7-language interface

Firebase Firestore ties it together with collections for reports, volunteers, clusters, tasks, NGOs, bot conversations and predictive alerts. Firebase Auth handles NGO login and route protection.

Splitting the services let us build in parallel, and lets each one scale and fail independently. We kept a development log for every route, feature and decision from day one, so three people stayed in sync across three codebases.


Our Team

PULSE is built by three student developers. Each of us led one of the three deployed services, so every layer has an owner who can answer for it.

Umaima, AI/ML Lead: built the Flask AI microservice: Groq + Gemini crisis analysis and urgency scoring, Haversine clustering, volunteer matching, Gemini Vision proof verification, predictive alerts and impact reports. Zunairah, Backend Lead: built the Node.js/Express backend: Twilio WhatsApp, SMS and IVR, the Vapi voice integration, Firebase Auth and Firestore, the volunteer coordination flow, the chatbot, the hourly escalation cron, NGO admin controls, multi-NGO isolation and the multilingual i18n layer. Alizah, Frontend Lead: built the React + Vite dashboard: the live Google Maps view, all 10 pages, the UI design system, real-time Firestore sync, the no-login volunteer portal, analytics and Firebase Hosting deployment.

We worked the way a startup team does: three independently deployed services, clear API contracts between them, and a development log for every route and decision. PULSE placed in the top 106 of 6,700+ teams at GDG Solutions Challenge 2026, and we've kept building since.


Challenges we ran into

  • Messy, code-mixed input. Reports like "help chahiye" or "paani nahi hai" carry almost no information, and guessing would produce confident wrong dispatches. We built a guided WhatsApp flow that asks for what's missing, and only complete reports go to the AI.
  • An AI outage can't mean a missed emergency. We added automatic fallback from Groq to Gemini so analysis keeps running when a provider fails.
  • Turning spoken reports into structured data. Voice reports from IVR and Vapi arrive as transcripts. We built the Vapi webhook so a spoken report ends up as the same scored, geocoded record as a typed one.
  • Ten reports of one crisis must not mean ten dispatches. We cluster same-type reports within 30 km before assigning anyone, so volunteers aren't double-sent. Tuning the grouping and urgency aggregation took iteration.
  • "Done" is easy to fake. A volunteer can send any photo, so Gemini Vision checks task relevance and authenticity before a task closes, with a reject-and-resubmit loop.
  • Reporters without smartphones. We built IVR and SMS paths and rethought the interaction as simple keypresses and short voice prompts, so a basic phone is enough to report.
  • Three services, three builders. Keeping request formats, Firestore schemas and ngo_id isolation aligned across separate deployments took constant communication and the development logs.

Who it's for

  • Users: field workers who report, volunteers who respond, and NGO coordinators who run the dashboard.
  • Buyers: small and mid-size NGOs and relief groups running field programs in water, food and health, plus the CSR teams and grant-makers who fund them.

Why existing options fall short

Status quo: WhatsApp groups, phone calls and spreadsheets. Nothing scores urgency, removes duplicates, or proves a task was done. Volunteer-management and crisis-mapping tools mostly assume smartphone-literate, English-first users and manual assignment, and few verify completion. PULSE is built for the reporter on a basic phone and closes the loop automatically: report, dispatch, proof, escalation.


Safety, privacy and trust

Crisis reports contain phone numbers and locations, so every record is isolated by ngo_id and NGO routes require verified Firebase tokens. Auto-dispatch only triggers at urgency 80+, and admins can reassign, force-assign or resolve at any step. Proof photos are checked before a task closes. Next: reporter consent flows and DPDP Act compliance.


Business model

  • Free tier: 1 NGO, up to 50 reports a month, web dashboard. This drives adoption.
  • Pro, ₹2,999 per NGO per month: all intake channels, auto-dispatch, photo verification and impact reports.
  • Usage pass-through: Twilio, IVR and SMS costs billed at cost plus a small margin.
  • Funder tier, ₹25,000 per year: CSR teams and grant-makers get verified impact dashboards built from proof photos and completion data.
  • Unit economics: each report costs roughly one LLM call, one geocode and a few messages, so costs scale with usage rather than with headcount.
  • Go-to-market: pilot with NGOs in Hyderabad and Telangana, then expand through NGO networks and CSR partners.

Scalability

  • Three independent services scale and fail separately.
  • Data is isolated per ngo_id, so adding an NGO means adding a tenant, not a deployment.
  • Groq-to-Gemini fallback gives AI redundancy.
  • Planned for scale: geospatial ML on Vertex AI in place of Haversine clustering, and the escalation cron moved to Google Cloud Functions.

Accomplishments that we're proud of

  • A fully deployed end-to-end product, not a prototype, with a live site, a working phone line and a live demo anyone can try.
  • Multiple ways to report (WhatsApp, SMS, IVR, a browser voice agent, a phone line and a manual form) in seven languages, so the tool meets people where they already are.
  • Automated dispatch from report to assigned volunteer in seconds, with no coordinator having to touch a critical case before a volunteer is notified, and admins can override at every step (urgency 80+).
  • Photo verification with fraud detection, which gives NGOs and donors real accountability.
  • Real-time everything. The dashboard updates in under a second through Firestore onSnapshot.
  • Multi-NGO data isolation from day one.
  • Proactive, not just reactive, through hourly escalation and predictive alerts.
  • Inclusive by design, serving zero-literacy and zero-English users through IVR, voice and regional languages.
  • Three teammates, three microservices, one working product, shipped on a real deadline.

What we learned

  • Design for the reporter's constraints first (language, device, connectivity), and the dashboard second.
  • In urgent systems, fallbacks matter more than clever models. Model fallback, session expiry, token verification and escalation mattered more than any single AI feature.
  • Structured output from messy input is the real AI challenge. Getting consistent, scored data out of vague multilingual text took more design than choosing the model.
  • Verification builds trust. A "done" that can't be checked isn't done, which is why proof verification became a core feature.
  • Voice is a powerful interface for underserved users. It's far easier to speak a report than to type one.
  • Splitting AI, backend and frontend into separate services let three people ship in parallel, but only with clear API contracts and good logs.
  • Free and open tools go a long way on a student budget.

What's next for PULSE - AI Disaster Coordination for NGOs

Next 0–3 months

  1. An offline-first mobile app that queues reports and syncs when connectivity returns, plus an SMS-only mode for 2G feature phones.
  2. Volunteer reputation scoring based on response time and proof quality.
  3. Moving the escalation cron to Google Cloud Functions.

Medium term (3–12 months)

  1. Expansion from three crisis types to 10+, including shelter, sanitation and elderly care.
  2. Geospatial ML on Vertex AI to replace Haversine clustering.
  3. Integration with state disaster-management systems at district level, and cross-NGO resource sharing.

Long term

  1. An open-source release for NGOs across South Asia and Sub-Saharan Africa, Looker Studio dashboards for government and donor reporting, and a Google.org partnership for institutional scale.
  2. Our north star is to do for community crisis response what UPI did for payments: make it simple, universal and trusted.

Built With

Share this project:

Updates

Submission history