Inspiration
Teams make dozens of small promises in Slack every day: “I’ll send that by Friday,” “I’ll circle back next week,” or “I’ll get you the numbers.” These commitments are easy to make, but easy to lose in fast-moving conversations. We wanted to create a supportive accountability agent that helps people keep their word without turning into a surveillance or “snitch” bot.
What it does
FollowThrough detects commitments in Slack conversations and turns them into a human-confirmed follow-up loop.
It extracts who made the commitment, what they promised, who it was promised to, and the deadline. For unclear timing such as “next week,” it asks a single clarification question instead of silently guessing. Once the person clicks Track it, FollowThrough keeps the commitment private, sends friendly nudges, links back to the original thread for context, supports snoozing and completion, and can send weekly summaries.
It can also synchronize tracked commitments to Notion through MCP, making Slack commitments visible in an external workspace without requiring teams to change how they communicate.
How we built it
We built FollowThrough as a Slack Socket Mode app with Node.js and Slack Bolt. Socket Mode lets the bot stay connected without exposing a public webhook endpoint.
For commitment extraction, we use a resilient AI pipeline:
- Gemini on Vertex AI attempts structured extraction.
- Groq is used automatically if the first provider is unavailable.
- Safe rule-based extraction is the final fallback.
The bot stores only the normalized commitment data needed for follow-up: owner, action, deadline, status, recipients, and a link to the original Slack message. It uses Slack Block Kit for confirmation cards, date clarification, nudges, and completion controls.
For external tracking, we implemented an MCP client and a Notion-backed MCP adapter that creates or updates a commitment row in a Notion data source. The app is deployed as an always-on AWS EC2 service with automatic restart behavior.
Challenges we ran into
The hardest challenge was making accountability feel helpful rather than punitive. We designed the product around consent: nothing is tracked until the person confirms it, nudges are private by default, and escalation is opt-in.
We also handled practical reliability challenges:
- Interpreting natural-language deadlines, especially ambiguous phrases like “next week.”
- Preventing AI provider outages or quota limits from breaking the core experience.
- Keeping Slack interaction buttons reliable across deployment environments.
- Avoiding duplicated Socket Mode connections, which can split events between local development and production.
- Making Notion sync work safely in a background service through MCP.
Accomplishments that we're proud of
- Built a complete Slack accountability loop from message detection to completion.
- Added structured extraction for owner, promise, deadline, and recipient.
- Designed a human confirmation checkpoint before tracking anything.
- Added fuzzy-deadline clarification rather than incorrect silent assumptions.
- Added private contextual nudges that link back to the original conversation.
- Built Gemini → Groq → safe-rules reliability fallback.
- Added weekly digests, completion, snooze, and opt-in escalation logic.
- Integrated Notion synchronization through MCP.
- Deployed the bot as an always-on AWS service.
What we learned
We learned that a strong AI workflow needs both intelligence and graceful failure modes. Structured AI extraction is useful, but reliable products need validation, clear user controls, and deterministic fallback behavior.
We also learned that Slack apps are more than message listeners: interactive Block Kit actions, Socket Mode lifecycle management, permissions, and deployment consistency all matter. Finally, MCP gave us a clean way to connect Slack-native behavior with external systems like Notion without hard-wiring the product to one tracker.
What's next for FollowThrough
Next, we want to add richer preference controls: personal nudge schedules, timezone-aware reminders, and per-channel opt-in settings. We also plan to support more external systems such as Linear, Google Sheets, and project-management tools.
Longer term, FollowThrough could identify recurring blockers, help teams renegotiate unrealistic deadlines, and provide a personal accountability dashboard—all while keeping the experience private, supportive, and human-centered.
Built With
- amazon-web-services
- docker
- gemini
- github
- google-vertex
- groq
- javascript
- json
- mcp
- model-context-protocol-(mcp)
- node.js
- notion
- notion-api
- slack
- slack-agent-builder
- slack-ai
- slack-block-kit
- slack-bolt
- slack-real-time-search-api
- slack-socket-mode
- slackbolt
- slackboltkit
Log in or sign up for Devpost to join the conversation.