Triage, Debug, and Ship Code From Slack blog.duolingo.com
Aaron Wang’s point is that adoption is a distribution problem, not a capability one. Duolingo found engineers would not set up MCP servers themselves, so rather than write a better setup guide they put the agent where people already were:
If people won’t configure MCP themselves, we can bring MCP to them.
@DuolingoAI is built on the Claude Agent SDK and Slack Bolt, with internal HTTP-based MCP servers fronting Honeycomb, Grafana, Sentry, PagerDuty, GitHub, Jenkins, Jira, AWS and BigQuery. Write operations get Approve and Cancel buttons, tool access is gated by a role-based allowlist, and a validation sub-agent cross-checks links and names before a response goes out. DMs and private channels are not logged.
Since launching last September it has reached around 300 weekly active users, roughly 30% of the company, monitoring 20-plus help desk channels with an upvote rate settled around 80%. Ship a code change and clicking Approve starts a Temporal workflow that spins up a sandboxed Claude agent to write the code and push a branch, which looks like an ancestor of the registry-defined agent platform they described later. The core framework is open-sourced at github.com/duolingo/slack-ai-agent.
The honest note is about the gap between demo and service: Getting the Slack App to work on a single query was straightforward. Getting it to work reliably across thousands of queries per week for hundreds of people was a different story. Their conclusion is that convenience wins, and an app you can @-mention beats any setup guide.