The Slack bot, eight features richer · one flag, three cells · walked the runbook, fixed what it found · fifty merged
SCROLL ↓
Eight features · twelve pull requests · 9,769 lines · each with its spec and its tests
Eight stacked PRs, each independently reviewable, each with its spec written alongside the code and sandbox-checked on real staging data where it touched the database. The bot went from answering questions to catching you up, briefing you, remembering what to ask, and telling you how fresh its sources are.
slack-bot-preview · read at every rail, every card, every button
Every app. The demo room.
100%Three internal apps, by slug. Everyone else: yesterday’s bot.
3 appsExists so promotion changes nothing. Dark.
0%The request came mid-stack: “gate all the new features behind a single feature flag, in case this gets promoted to prod by someone.” One helper, one flag, created in all three PostHog projects before the first merge. Each PR gates its own surfaces, so main was never ungated at any point in the order.
Tested feature by feature in #dev · every finding fixed and re-promoted the same day
invalid_blocks · three delivery attempts failed · one placeholder that never resolved
The stuck placeholder looked like a slow model. It was Block Kit: a block whose buttons share an action id is invalid, so any answer that earned two chips was undeliverable. Found in Loki, fixed in a hotfix, promoted together with the rest of the findings.
Twelve merges on Sunday · one PR of 9,530 lines · Lightfield retired
Forty-eight opened this week · fifty merged · seven of this week’s still open
MERGEDOPENED
An answer’s footer teaches one thing at a time — a rotating tip about what the bot can do.
IN REVIEWFriday is the only day that merged as much as it opened — fourteen and fourteen — because Friday was the day the bot stack landed and the runbook’s findings went straight back in. Everything the Slack bot needed is in; what’s open is the long tail.
Fifty merged, seven open · one Slack bot, eight features richer