Scaling AI-Assisted Developer Tools and Agentic Workflows at Scale

slack · Tech · 2025 · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Internal developer productivity and escalation workflows

Slack needed to scale AI-assisted developer tools from experiments to production across its engineering organization, reducing friction in coding and escalations while meeting FedRAMP/security requirements, controlling cost, preserving observability, and supporting durable multi-agent workflows.

Constraints:

Architecture

Slack moved from SageMaker experimentation to Bedrock for compliant, managed model access, then rolled out Cursor and Claude Code through Bedrock. Buddy Bot evolved from a RAG/search assistant into an escalation agent using Temporal for durable conversation workflows, Strands as the orchestrator, Claude Code sub-agents for triage and knowledge tasks, MCP servers for internal service access, and Bedrock/CloudWatch/OpenTelemetry-style observability.

Diagram confidence: explicit (topology described by the source).

flowchart LR
  A["Slack developers"] --> B["Claude Code and Cursor"]
  C["Bedrock platform"] --> B
  A --> D["Escalation bot"]
  D --> E["Temporal workflow"]
  E --> F["Strands orchestrator"]
  C --> F
  F --> G["Claude Code sub-agents"]
  F --> H["MCP servers"]
  G --> H
  H --> I["Internal services"]
  D --> A
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Slack developers Engineers using AI coding tools and asking escalation questions in Slack channels. Claude Code and Cursor, Escalation bot
Bedrock platform FedRAMP-compliant managed model platform, proxy API, observability layer, and model access point. Claude Code and Cursor, Strands orchestrator
Claude Code and Cursor AI coding assistants integrated with Bedrock for developer workflows. Slack developers
Escalation bot Agentic Slack bot handling escalation requests and knowledge search. Temporal workflow, Slack developers
Temporal workflow Durable orchestration layer that stores conversation state, retries, and resumes Slack-thread workflows. Strands orchestrator
Strands orchestrator Model-agnostic orchestration agent that decides which sub-agents to call and synthesizes responses. Claude Code sub-agents, MCP servers
Claude Code sub-agents Triage, knowledge-base, and other task-specific sub-agents launched by the orchestrator. MCP servers
MCP servers Remote internal-tool access layer for GitHub and other sensitive systems with proper permissions. Internal services
Internal services Slack/Salesforce engineering systems such as GitHub, knowledge stores, and internal tools. MCP servers

Data flow

Developers use Bedrock-backed AI coding tools for code work, while escalation requests arrive in Slack channels. The backend receives an event, starts or resumes a Temporal workflow with the Slack-thread context, calls a Strands orchestrator, launches Claude Code sub-agents through tool calls, uses MCP servers to reach internal services, summarizes sub-agent outputs to manage token use, and sends a response back to the Slack channel.

3 supporting quotes
“when a user sends a question or an escalation in Slack channel, our backend gets an event and then our backend then spins off a Temporal workflow”transcript, stated
“the Strands orchestrator agent which we build using Anthropic as well, Anthropic Claude model as well, which then decides which subagents to call”transcript, stated
“the subagents have access to the MCP servers to interact with our internal services.”transcript, stated

Why this architecture

Slack standardized around Bedrock and Anthropic tooling to reduce infrastructure overhead, maintain FedRAMP/security posture, and curb tool fatigue. For the escalation bot, Temporal removed the burden of conversation history and retry durability, while Strands preserved model agnosticism and MCP enabled secure tool access.

3 supporting quotes
“because Bedrock was now FedRAMP compliant. All the latest Anthropic models were available on Bedrock and infrastructure got easier.”transcript, stated
“we doubled down on a high impact tech stack, Amazon Bedrock and Anthropic models and tooling.”transcript, stated
“we used Temporal for reliability as the bot never forgets the conversation even during failures”transcript, stated

Models used: Anthropic Claude · Claude Code · Cursor · Bedrock models · Strands agents

Scale

Alternatives considered (roads not taken)

Continue SageMaker-managed experimentation

Rejected because: SageMaker gave control but required infrastructure maintenance; Bedrock simplified LLM scale and maintenance.

“This gave us maximum control, but it also came with a huge hidden cost of infrastructure maintenance.”transcript, stated

Keep rolling out many competing AI tools

Rejected because: Too many internal features created confusion and maintenance overhead, so Slack standardized on a high-impact stack.

“constantly rolling out new competing internal features was only causing confusion to developers and also cost maintenance overhead for us.”transcript, stated

Use only Claude Code sub-agents without Strands orchestration

Rejected because: Slack wanted to explore other models and preserve extensibility instead of sticking only with Claude Code.

“The reason we chose Strands agent here as orchestrator is to explore different LLMs, not just use Claude Code subagent”transcript, stated

Patterns

multi-agent-orchestration (orchestration)

Slack uses a Strands orchestrator to select Claude Code sub-agents such as triage and knowledge-base agents, then synthesizes their outputs.

“it's actually calling the Triage agent and KB agent. Those are all subagents we built using Claude Code.”transcript, stated
“once all of the subagents are finished running, the main agent, the orchestration agent gets the context or response back”transcript, stated

durable-execution (orchestration)

Temporal provides durable conversation workflows, retries, state storage, and resumption after failures.

“Temporal workflow orchestration around that, which basically main provides durability as well as maintains the conversational state”transcript, stated
“Temporal maintains the state in a database so it resumes where it left off.”transcript, stated

tool-use-orchestration (orchestration)

MCP servers give the bot controlled access to internal services such as GitHub and other sensitive tools.

“the subagents have access to the MCP servers to interact with our internal services.”transcript, stated
“safely access sensitive internal systems like GitHub with the right permissions.”transcript, stated

model-routing (model-ops)

Slack chose Strands and Bedrock to remain model agnostic while experimenting beyond Claude Code.

“Strands is an open-source, multi model agnostic and flexible framework”transcript, stated
“Strands provided us extensibility for any future being LLM agnostic.”transcript, stated

observability-tracing (observability)

Slack uses Bedrock/CloudWatch observability and Temporal traceability to understand LLM usage, calls, and workflow behavior.

“the inbuilt native observability of Bedrock of CloudWatch logs and metrics and alerts helped us get into some insights into our LLM usage.”transcript, stated
“with the Temporal is it also provides visibility into like all of the calls and traceability as well.”transcript, stated

Tradeoffs

Managed model platform

Chose Amazon Bedrock over continuing SageMaker/RAG infrastructure ownership.

Rationale: Bedrock met FedRAMP needs, simplified infrastructure, gave access to Anthropic models, and sharply reduced cost.

“Q1, 2024, Slack moved to Amazon Bedrock because Bedrock was now FedRAMP compliant.”transcript, stated
“they nearly saved 98% of the costs when they moved to Bedrock.”transcript, stated

Agent orchestration

Chose Strands orchestrator with Claude Code sub-agents over Claude Code sub-agents alone.

Rationale: Strands lets Slack explore other models and keep the orchestration layer extensible.

“The reason we chose Strands agent here as orchestrator is to explore different LLMs, not just use Claude Code subagent”transcript, stated

State management

Chose Temporal workflow state over application-owned conversation history and retry code.

Rationale: Temporal simplified Slack's code by handling conversational history, state, retries, and resume behavior.

“this architecture simplified our Code quite a bit as we didn't have to maintain the conversational history and durability of retries”transcript, stated

Gotchas (what bit them)

Infrastructure control came with hidden maintenance cost.

Root cause: The SageMaker/RAG approach required Slack to manage more infrastructure.

Resolution: Slack moved to Bedrock once it was FedRAMP compliant and could handle LLM scale and maintenance.

“This gave us maximum control, but it also came with a huge hidden cost of infrastructure maintenance.”transcript, stated
“Bedrock instantly simplified our infrastructure handling all of the LLM scale and infrastructure maintenance for us.”transcript, stated

Rapid tool proliferation caused developer confusion.

Root cause: The AI landscape changed quickly and rolling out competing internal features created maintenance overhead.

Resolution: Slack doubled down on Bedrock, Anthropic models, Claude Code, and Cursor as a high-impact stack.

“experimentation fatigue with different LLMs and tools.”transcript, stated
“we doubled down on a high impact tech stack, Amazon Bedrock and Anthropic models and tooling.”transcript, stated

More AI-generated code increased review load.

Root cause: AI helped engineers write more code, increasing the surface area for peer review.

Resolution: Slack is working on AI assistance to reduce review time across the developer cycle.

“We are also seeing downsides of increase in peer review time.”transcript, stated
“We are actively working on this area to reduce the review time with AI assistance”transcript, stated

Escalation conversations require durable state and retries.

Root cause: Slack thread escalations continue over time and the backend can fail while a conversation is unresolved.

Resolution: Temporal stores state, resumes workflows, and provides automated retries.

“Temporal maintains the state in a database so it resumes where it left off.”transcript, stated
“Temporal also supports like retries, automated retries so we didn't have to retry tool call failures”transcript, stated

Evaluation

Slack measures adoption, usage, PR throughput, escalation volume, developer feedback, review-time side effects, Bedrock observability, CloudWatch logs/metrics/alerts, and Temporal traceability.

Metrics: 99% developer adoption · 25% month-over-month PR throughput increase · 5,000+ escalation requests per month · 98% cost reduction moving to Bedrock · Tokens per minute · Peer review time · Developer feedback

3 supporting quotes
“Currently 99% of our developers are using some kind of AI assistance, which is huge.”transcript, stated
“we are seeing about 25% consistent month over month increase in the PR throughput.”transcript, stated
“currently our AI assistance Bot is helping over 5,000 escalation requests per month.”transcript, stated

Outcomes

Slack reports 99% developer adoption, 25% PR throughput increase in major repositories, over 5,000 monthly escalation requests, nearly 98% cost savings after Bedrock migration, and token processing growth from hundreds of thousands per minute to millions per minute.

“We have seen the metrics 99% adoption and 25% PR throughput.”transcript, stated
“we upgraded our Buddy Bot from a simple search bot into a powerful agent.”transcript, stated