Inspiration
When a crisis hits an organization, the tools that coordinate the response are built for enterprises. PagerDuty and Opsgenie run $9 to $21 per user per month. A 50-person school pays roughly $12,000 a year. So the places that need coordination the most, schools, nonprofits, houses of worship, small clinics, fall back on panic in group chats, phone trees that fail, and paper rosters nobody can find. During an active shooter, a fire, or a ransomware attack, personnel accountability that should take 3 minutes takes 30.
I wanted to put a full crisis coordination system where these teams already are, Slack, for free, and make it smart enough to actually help
What it does
FirstResponder turns any Slack workspace into a coordination center in under 60 seconds. It handles 10 crisis types, fire, earthquake, flood, active threat, cyberattack, data breach, outage, severe weather, medical, and general incidents, with a scenario-specific playbook and protocol for each.
The key idea: you upload your organization's data as CSVs (floor plans, personnel, evacuation routes, classrooms, utilities, hazmat, on-call schedules) and the agent uses it to give guidance specific to YOUR building and people, not generic advice.
/crisis startdeclares an incident, posts the playbook, and seeds a personnel roster from the channel.@FirstResponderis a Claude-powered agent with 34 tools. Ask "who's in danger?" during an east-wing threat and it answers with the exact people by name, flags the two teachers who use wheelchairs, and marks which exits lead toward the threat as BLOCKED.- Students are accounted for by classroom, never by name (privacy by design). Teachers report their room ("Room 104, 23 of 25 safe, 2 missing") and the incident commander gets a live board: safe rooms, missing kids, silent rooms.
- Check-ins by emoji, SITREPs generated by reading the channel via the Slack MCP and Real-Time Search API, after-action reports, and a learning engine that surfaces lessons from past incidents.
How we built it
- Bolt for Python over Socket Mode for the Slack app.
- Claude Agent SDK orchestrating 34 typed tools across three layers: crisis coordination, a SQLite learning engine, and a SQLite knowledge base.
- Slack MCP Server + Real-Time Search API to read channel history for grounded SITREPs.
- Two SQLite databases for zero external infrastructure.
- Self-hosted on our own Google Cloud e2-micro VM in a Docker container (Python + Node + the Claude Code CLI), because a Socket Mode agent that spawns a subprocess cannot run on Slack's hosted platform.
Challenges we ran into
- Making answers actionable, not just alarming. "325 students in danger" is a scary number, not a plan. We had to build classroom-level accountability so the commander knows exactly which kids are safe and which are missing.
- Running a Python + Claude Agent SDK app in production. The SDK drives the Claude CLI as a subprocess, so it cannot run on serverless or Slack's hosted Deno platform. We containerized it (Python + Node + the CLI) and self-host it on a Google Cloud VM.
- Enterprise-grid Slack quirks that only appear in a real deployment, not on a laptop: resolving the workspace team ID for channel creation, the headless CLI refusing elevated permissions as root, and keeping the container image small enough for a free-tier VM.
- Making threat-aware evacuation routing deterministic. The "which exits lead toward the shooter" logic had to come from the data, not the model's guess, so it is reliable every time.
- Accounting for students without ever storing student data.
Accomplishments that we're proud of
- An agent that knows YOUR building. It answers with real names, rooms, phones, and routes, not generic playbook advice.
- Classroom accountability the way schools actually run lockdown roll call: the teacher is the reporter, and no student is ever stored by name.
- Deterministic threat-aware routing that blocks the exits leading toward the threat and steers everyone away.
- 34 agent tools across 10 crisis types, all live and running in the cloud on a $0 always-free VM, with zero external infrastructure.
- We use all three challenge technologies: Slack AI capabilities, MCP server integration, and the Real-Time Search API.
What we learned
- A headcount is not accountability. You need to know which specific people are safe, and for a school that means tracking by classroom, not by name.
- Test in the real deployment, not the laptop. The bugs that mattered (enterprise team IDs, root permission rules, disk limits) only showed up once it was running in the cloud.
- Privacy can be a feature, not a constraint. Modeling students as classroom headcounts is both safer and closer to how schools actually operate.
- Emergency UX means crisp, patterned messages. Nobody reads paragraphs mid-crisis, so the agent leads with the one thing that matters and cuts the rest.
What's next for FirstResponder
- Submit to the Slack Marketplace for multi-workspace distribution.
- Two-way sync with district SIS/HR systems so rosters and classrooms stay current automatically.
- SMS fallback to reach staff who are not in Slack.
- A drill and training mode so teams can practice the response before they need it.
Log in or sign up for Devpost to join the conversation.