Support Automation
Build an L1/L2 support system where agents handle routine questions across Slack, email, and Teams — escalating to senior agents or humans only when they can't resolve the issue. Most teams see 60–80% of tickets resolved without human intervention.
What you'll have
- Agents answering support questions in real-time across 3+ channels
- Automatic escalation when confidence is low or timeout is reached
- A growing knowledge base that improves resolution rates over time
- Daily standup reports showing ticket volume, resolution rates, and blockers
Architecture
| Component | Role |
|---|---|
support-agent | L1 — handles routine questions using knowledge base |
senior-support | L2 — resolves escalated issues with deeper tooling |
| Escalation chain | Routes unresolved tickets through L1 → L2 → human |
| Team KB | Shared knowledge base that agents contribute to and search |
| Channels | Slack, email, Teams — customers reach agents where they already are |
Step 1: Configure agents and channels
yaml
# astra.yml — support automation setup
agents:
- id: support-agent
systemPromptTemplate: |
You are a technical support agent for {{company_name}}.
Answer questions using the knowledge base. If you cannot resolve
the issue with confidence > 0.7, escalate immediately.
providers: [claude, groq]
tools:
allow: [knowledge_retrieve, web_search, jira_integration]
budget:
maxCostCents: 50
maxToolCalls: 15
- id: senior-support
systemPromptTemplate: |
You are a senior support engineer. You receive escalated tickets
that L1 could not resolve. You have access to internal docs and
can execute diagnostic tools.
providers: [claude]
tools:
allow: [knowledge_retrieve, code_execute, database_query, shell_execute]
budget:
maxCostCents: 200
maxToolCalls: 30
channels:
slack:
enabled: true
defaultAgent: support-agent
email:
enabled: true
defaultAgent: support-agent
teams:
enabled: true
defaultAgent: support-agentStep 2: Set up escalation
The escalation chain gives support-agent 5 minutes to resolve. If it can't (or confidence drops below 0.7), the ticket escalates to senior-support with 15 minutes. After that, it goes to a human.
bash
# Create the escalation chain
curl -X POST http://localhost:3000/escalation-chains \
-H "Authorization: Bearer ${JWT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "support-escalation",
"levels": [
{ "agentId": "support-agent", "timeoutSeconds": 300, "confidenceThreshold": 0.7 },
{ "agentId": "senior-support", "timeoutSeconds": 900 },
{ "agentId": "human-escalation", "timeoutSeconds": 3600 }
]
}'Step 3: Load your knowledge base
Pre-load common support procedures. Agents will also contribute new entries as they resolve tickets — the KB grows automatically.
bash
# Load your support knowledge base
curl -X POST http://localhost:3000/team-kb/entries \
-H "Authorization: Bearer ${JWT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"agentId": "support-agent",
"title": "Password Reset Procedure",
"content": "1. Verify identity via email. 2. Generate reset link...",
"tags": ["auth", "password", "common"]
}'Step 4: Monitor with standups
Generate a daily standup report to track ticket volume, resolution rates, tool usage, and blockers.
bash
# Generate daily support standup
curl -X POST http://localhost:3000/standups/generate \
-H "Authorization: Bearer ${JWT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{ "agentIds": ["support-agent", "senior-support"] }'Tuning
- Lower the
confidenceThresholdto reduce escalations (at the cost of some inaccurate responses) - Add more entries to the Team KB to improve L1 resolution rates
- Use peer learning to automatically extract strategies from senior-support and apply them to support-agent
- Monitor costs on the cost dashboard — Groq as primary provider keeps L1 costs very low