About the project
What we built
RescueMesh is a local-first emergency coordination app. A citizen describes what is happening in free text. On-device QVAC turns that into a structured incident. Pear replicates it to brigade and command peers. The original reporter can go offline. The incident stays.
WhatsApp communicates. RescueMesh coordinates.
The problem
After a disaster, coordinators drown in unstructured messages: trapped people, bleeding, blocked roads, duplicate pleas. Chat tools move words. They do not produce a shared operational picture.
How it works
- Reporter (Peer A) writes or dictates a report. Example: a bus crash at Plaza San Martin, three people, one trapped, one bleeding.
- QVAC runs locally (
Analyzing locally…). It extracts priority, location, affected/trapped counts, medical flag, needs, and a short English operational summary. Invalid JSON retries once, then falls back to manual review. Nothing is sent to a cloud AI API. - Responder (Peer B) sees
NEW CRITICAL INCIDENTon the dashboard, ordered by priority, without a RescueMesh backend. - Command Center (Peer C) is a third peer with the same replica.
- Kill Peer A from the UI. Peer B still has the incident.
What the runtime shows
- AI LOCAL ✓
- P2P CONNECTED ✓
- CENTRAL SERVER NONE
No Firebase, no Postgres in the middle, no OpenAI. Each laptop process has its own store. Incidents sync over Pear (Hyperswarm + Corestore + Hyperbee) when a physical path exists. We do not claim it works with zero connectivity.
Also in the demo
- Spanish input → English operational summary (raw report kept)
- Local voice dictation
- Likely-duplicate hints (suggest, do not silent-merge)
Stack
Next.js, TypeScript, Tailwind, QVAC on-device, Pear P2P. Three peers on one laptop: Citizen :43147, Brigade :43148, Command :43149.
Hacki