Inspiration

During a heatwave, the information a response team needs is often already in Slack: a volunteer shortage, a supply count, a partner asking for an update. The problem is that those facts are scattered across a fast-moving channel, and someone still has to turn them into coordinated action.

ThreadAid was built for public-health, nonprofit, and community-response teams that need to move quickly without losing traceability or human control.

What it does

ThreadAid turns an urgent Slack thread into a structured incident response draft.

A responder mentions ThreadAid in a channel and asks for help with an incident. ThreadAid:

  • finds relevant Slack messages and keeps their citations visible
  • retrieves a response playbook, resource data, and responder roster through MCP tools
  • creates a situation brief, prioritized actions, owners, risks, and a partner-update draft
  • requires an explicit human approval before posting any outward update

The result stays inside Slack, where the team is already working.

How we built it

We built ThreadAid as a deployed Slack Deno application with a Block Kit interface.

The Slack function receives an app mention, retrieves relevant public-channel context, and generates source links for the evidence it uses. It then calls a deployed HTTPS MCP server that exposes three tools:

  • get_playbook
  • list_resources
  • get_roster

The function sends the grounded context to a provider-light DeepSeek adapter, which returns a structured incident draft. ThreadAid renders that draft as Slack Block Kit, including citations and an approval button.

Approval state is stored in a Slack datastore. Only the person who requested the draft can approve it, and the approval is consumed after the update is posted.

Challenges we ran into

The main challenge was making the agent useful without allowing it to sound confident about facts it could not verify.

We addressed this by keeping evidence links visible, instructing the model to preserve uncertainty, and blocking outward communication until a human approves the exact draft.

We also found that Slack’s Real-Time Search API needs an action_token that is not provided by this deployed app-mention event. Instead of pretending RTS was active, we used cited public-channel history for the live path and made MCP the active deployed integration.

Accomplishments that we're proud of

We are proud that ThreadAid is not just a chat response. It completes a real coordination loop:

  • Slack evidence becomes a cited incident brief
  • operational data comes from real MCP tool calls
  • the model produces actions, risks, and a draft update
  • no outward message is posted before approval
  • the approved update is posted back into the same Slack thread

The demo shows the live deployed Slack app, visible MCP tool usage, citations, and a real approval action.

What we learned

We learned that a useful Slack agent should be narrow and accountable.

The most valuable behavior was not generating a long answer. It was connecting evidence, operational context, and a clear human decision in one native Slack workflow.

We also learned that grounding matters more than adding unrelated data sources. For incident coordination, the team’s own Slack messages are often the most relevant evidence.

What's next for ThreadAid

Next, we want to support multiple incident types, configurable organization playbooks, richer resource integrations, and role-based approval policies.

We also plan to add more Slack-native retrieval options where the required authorization context is available, support secure connections to trusted organization systems, and provide incident follow-up reminders after an approved update is posted.

Built With

Share this project:

Updates

Submission history