Library · Team · CrewAI · support-triage
Support Triage — CrewAI
Classify an inbound message, propose a first reply hold, and flag escalation — human sends. (CrewAI multi-agent Python sketch for one job.)
Id: crewai/support-triage · Slug: support-triage · Status: Untested · Untested on this machine — recipe reviewed for safety (no secrets, no destructive commands, no auto-spend). Mark tested after you run it locally.
What is this
AI Team for CrewAI. Classify an inbound message, propose a first reply hold, and flag escalation — human sends. (CrewAI multi-agent Python sketch for one job.)
How this runtime fits
This CrewAI sketch is a AI Team implementation typed as AI Team in the catalog. Where roles coordinate, it is fair to call it an agent team or multi-agent system — not a swarm.
Parent AI Team: support-triage · What is an AI Team?
What it does
Classify an inbound message, propose a first reply hold, and flag escalation — human sends. (CrewAI multi-agent Python sketch for one job.)
Who for
Builders working on Support jobs who can run CrewAI themselves.
Works with
Need to run
- You will run this locally or on infra you control.
- No production credentials in prompts or committed files.
- Python 3.10+
- CrewAI in a venv
- Local or keyed LLM endpoint with budget awareness
How to use
- Create a venv; install CrewAI (pin versions yourself).
- Configure a local OpenAI-compatible base URL when possible.
- Save crew_support_triage.py and run: python crew_support_triage.py
- Replace PASTE_EXAMPLE_IN with your real input.
- Read Pass/Fail gate output before trusting the draft.
Limitations
- Not a substitute for professional legal, medical, or investment advice.
- Outputs can be wrong; human review required before publish or spend.
- Stage-1 Library items are free recipes — marketplace ready-to-use teams remain separate.
- Do not attach billing cloud LLM nodes without a human budget check.
- No harvesting of personal data beyond what the operator pasted.
Test status
Status: Untested · Untested on this machine — recipe reviewed for safety (no secrets, no destructive commands, no auto-spend). Mark tested after you run it locally.
Files
crew_support_triage.py— CrewAI agents + tasksrequirements-hint.txt— Suggested packages (pin yourself)
Full prompt / config / code
# crew_support_triage.py — Support Triage (CrewAI)
# Safety: local/OpenAI-compatible endpoint preferred. No keys in source.
# pip install crewai (pin versions yourself)
from crewai import Agent, Task, Crew, Process
SYSTEM = """You are a support triage assistant. Goal: classify and draft a hold reply.
RULES:
- Human sends the message. You do not send email/chat.
- Never ask for passwords, seed phrases, or full card numbers.
- Escalate billing disputes and safety issues.
- Keep the hold reply short and kind.
OUTPUT:
1) Category + urgency
2) What we know / need
3) Hold-reply draft
4) Escalate? yes/no + why"""
GOAL = "Classify an inbound message, propose a first reply hold, and flag escalation \u2014 human sends."
lead = Agent(
role="Support Triage lead",
goal=GOAL,
backstory="Local BotShelf operator. One job, then stop. No spend. No destructive tools.",
allow_delegation=False,
verbose=False,
)
reviewer = Agent(
role="Quality gate",
goal="Check the lead output against the required sections; list gaps only.",
backstory="Pedantic reviewer. Does not invent facts.",
allow_delegation=False,
verbose=False,
)
produce = Task(
description=(
"Follow SYSTEM strictly.\n\nSYSTEM:\n" + SYSTEM +
"\n\nUSER INPUT:\n{user_input}"
),
expected_output="Complete Support Triage structured result.",
agent=lead,
)
gate = Task(
description=(
"Verify the previous result has all required sections. "
"Return Pass/Fail + missing sections. Do not rewrite creatively."
),
expected_output="Pass/Fail and gap list.",
agent=reviewer,
)
crew = Crew(
agents=[lead, reviewer],
tasks=[produce, gate],
process=Process.sequential,
)
def run(user_input: str) -> str:
return str(crew.kickoff(inputs={"user_input": user_input}))
if __name__ == "__main__":
print(run("PASTE_EXAMPLE_IN"))
Example in
From: user@example.com Subject: charged twice? Body: I see two USDT sends. Order #1842. Need help.
Example out
Category: billing / duplicate payment | urgency: high Know: order #1842, two USDT sends claimed Need: txids, amounts, times Hold-reply: Thanks — please reply with both txids… Escalate: yes — payment mismatch
Model / runtime notes
Two-agent crew (produce + gate). Keep tools disabled unless you add read-only tools on purpose.
Canonical Team
Parent: support-triage
· implementation_id: crewai/support-triage
GitHub source
teams/support-triage/crewai · commit eb87e8e049fdf9908e438305ff827c7b617505b5
· license: free-use-at-own-risk
Structural check: PASS · env: structural (structural only — does not set Verified)
Related Library items
Related marketplace Team pages
Soft thematic links only — not identity merges. Marketplace Teams ≠ Library AI Team records.
- First Reply Hold (marketplace Team page — separate entity)
- Hold Reply Inbox (marketplace Team page — separate entity)