Inspiration

Every time someone on our team goes on leave, or even just takes a long weekend, the same thing happens: their open threads stall, people wait days for answers that only they had, and when they come back they're stuck reconstructing three days of context from 400 unread messages. The "solution" today is an OOO auto-responder that tells people you're gone and does nothing else. We wanted to build something that actually picks up the slack (pun intended) instead of just announcing the problem.

What it does

Baton watches your Slack activity and reconstructs what's actually open: threads waiting on your reply, promises you made ("I'll send that by Friday"), decisions that are stuck because of you. Type /baton handoff and it generates a clear brief for whoever's covering you, so nothing falls through the cracks while you're out.

How we built it

We used Slack's Bolt framework in Python along with the new Real-Time Search API to pull real context from a user's recent activity instead of relying on static exports or manual tagging. Claude does the actual reasoning, reading through the pulled messages and figuring out what's genuinely an open loop versus just noise. The output gets packaged into a Slack Canvas so it's easy to hand off and read.

Challenges we ran into

Getting the RTS API scopes and OAuth flow right ate more time than expected. Slack's permission model is genuinely secure, but that means a lot of trial and error before your first successful search call. We also had to be careful about what counts as an "open loop." A bad detection makes the whole product feel unreliable, so we spent real time tuning what Claude flags versus ignores.

Accomplishments that we're proud of

Getting a working end to end flow, real Slack messages in, a genuinely useful handoff brief out, inside such a tight window. The first time we saw it correctly catch a commitment we'd completely forgotten about felt like proof the idea actually works, not just sounds good on paper.

What we learned

A lot about how Slack's newer agentic tooling (RTS, MCP, Bolt) fits together, and honestly a lot about how much context silently gets lost in day to day Slack use. We didn't fully appreciate the scale of the problem until we started testing against real conversations.

What's next for Baton

Live coverage while someone's out, so if a teammate @mentions them, Baton can answer from history or route to the right cover person automatically. After that, a re-entry digest for when they're back, and an offboarding mode for when someone leaves the company entirely, so their context doesn't just vanish.

Built With

Share this project:

Updates