Inspiration

Growing up. I watched my community struggle to coordinate during emergencies. Information scattered across WhatsApp groups, Facebook posts, and word-of-mouth. When I learned about the Slack Challenge, I saw an opportunity to solve real problems; emergency responders and non-profits use Slack to communicate, but they have no way to quickly find the protocols, shelter locations, and contacts they've already discussed. CrisisSync bridges that gap.

What it does

CrisisSync turns your Slack workspace into an emergency command center. Using AI and Slack's Real-Time Search API to instantly surface past evacuation plans, shelter locations, and emergency contacts your team has already discussed.

How we built it

CrisisSync is built with Node.js + TypeScript + Express on the backend, orchestrating calls between the Slack Web API and Google Gemini AI. When a user @mentions CrisisSync, the bot parses natural language commands (create incident, list incidents, get resources). For incident creation, the bot triggers a workspace-wide search using Slack's Real-Time Search API (via conversations.list + conversations.history) to find past discussions about floods, evacuations, shelters, and protocols. Gemini AI then synthesizes these findings into a structured briefing with severity, location, resources, and related past discussions — all posted directly in Slack. The entire system is deployed on Render for 24/7 uptime.

Challenges we ran into

The most important challenge I faced was the Slack Cli installation on Windows; it kept failing with exec format errors, so with AI assistance I pivoted to building the agent manually with Express and @slack/web-api. This gave a deeper API knowledge than before. Another challenge was the RTS (Real Time Search) API. The assistant.search.context endpoint required special assistant permissions that weren't available on my free tier, so I built a functional equivalent using conversations.list and conversations.history that achieves the same "surface intelligent insights" goal.

What we learned

This was my first time bulding a production Slack agent from scratch. I learned how Slack's event-driven architecture works; how the platform sends HTTP POSTs to your server every time someone @mentions your bot. I also looked into the RTS API, which is a way to make your bot contextually intelligent by querying live workspace data. On the deployment side, I figured out how to compile TypeScript on Render.

What's next for Crisis Sync

Next, I plan to integrate NOAA weather API webhooks for automatic incident detection, add multi-language support for diverse communities, and build a lightweight dashboard for incident analytics. Long-term, I'd like to explore FEMA data feed integration and offline SMS fallback for when disasters knock out internet connectivity.

Built With

Share this project:

Updates