🎫
Support Triage CrewAI
blueprint · 3 agents · 1 MCP server
455★ stars
51forks
4.3rating
What it does
A crew that takes the first pass on support. A classifier categorizes the ticket, a drafter writes a reply, and an escalator flags anything unusual to a human with its reasoning, posting the note to Slack.
The cast · 3 agents
Drafterdrafterreasoning
Draft a helpful reply for the categorized ticket.
no tools · reasoning only
Escalatorescalatorfast
If the ticket is unusual or high-risk, post a note to Slack for a human, with your reasoning.
slack.post_message
Classifierclassifierreasoning
Categorize the ticket by topic and urgency.
no tools · reasoning only
Flow
→ Classifier → category
→ Drafter → draft
→ Escalator → note
Interface
Inputs
ticketstring
The incoming support ticket.
Outputs
draftstring
The drafted reply.
Depends on · 1 MCP server
🔌io.github.slack/slack-mcpnot in the registry yetslack
⤓ Export runnable code
# Generated by @socketcat/compiler for target: langgraph
# blueprint: com.socketcat/support-triage v1.0.0 schema: socketcat.dev/blueprint/v0
# This code is yours. Edit it freely. The socketcat_runtime helper is optional and can be vendored.
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
import socketcat_runtime as _rt
class State(TypedDict, total=False):
ticket: object
draft: object
category: object
note: object
def node_AgentInvoke_0(state):
return _rt.run_agent("classifier", state, {"ticket":"ticket"}, "category")
def node_AgentInvoke_1(state):
return _rt.run_agent("drafter", state, {"category":"category"}, "draft")
def node_AgentInvoke_2(state):
return _rt.run_agent("escalator", state, {"draft":"draft","category":"category"}, "note")
def build():
b = StateGraph(State)
b.add_node("AgentInvoke_0", node_AgentInvoke_0)
b.add_node("AgentInvoke_1", node_AgentInvoke_1)
b.add_node("AgentInvoke_2", node_AgentInvoke_2)
b.add_edge(START, "AgentInvoke_0")
b.add_edge("AgentInvoke_0", "AgentInvoke_1")
b.add_edge("AgentInvoke_1", "AgentInvoke_2")
b.add_edge("AgentInvoke_2", END)
return b.compile()
INPUTS = ["ticket"]
OUTPUTS = ["draft"]
if __name__ == "__main__":
_rt.main(build, INPUTS, OUTPUTS)
▸blueprint.json (the portable format)
{
"id": "com.socketcat/support-triage",
"flow": {
"type": "sequence",
"blocks": [
{
"in": {
"ticket": "ticket"
},
"out": "category",
"use": "classifier",
"type": "agent"
},
{
"in": {
"category": "category"
},
"out": "draft",
"use": "drafter",
"type": "agent"
},
{
"in": {
"draft": "draft",
"category": "category"
},
"out": "note",
"use": "escalator",
"type": "agent"
}
]
},
"tags": [
"support",
"triage",
"comms"
],
"title": "Support Triage",
"agents": {
"drafter": {
"model": {
"hint": "reasoning"
},
"title": "Drafter",
"instructions": "Draft a helpful reply for the categorized ticket."
},
"escalator": {
"model": {
"hint": "fast"
},
"title": "Escalator",
"tools": [
"slack.post_message"
],
"instructions": "If the ticket is unusual or high-risk, post a note to Slack for a human, with your reasoning."
},
"classifier": {
"model": {
"hint": "reasoning"
},
"title": "Classifier",
"instructions": "Categorize the ticket by topic and urgency."
}
},
"estate": {
"note": {
"type": "string",
"description": "The escalation note posted to Slack, when one was needed."
},
"draft": {
"type": "string",
"description": "The reply the drafter wrote."
},
"category": {
"type": "object",
"description": "The ticket's topic and urgency from the classifier."
}
},
"$schema": "socketcat.dev/blueprint/v0",
"authors": [
{
"url": "https://socketcat.com",
"name": "SocketCat"
}
],
"license": "MIT",
"servers": [
{
"ref": "io.github.slack/slack-mcp",
"alias": "slack"
}
],
"summary": "Classifies a support ticket, drafts a reply, and flags edge cases for a human.",
"targets": [
"crewai",
"langgraph",
"*"
],
"version": "1.0.0",
"interface": {
"inputs": {
"ticket": {
"type": "string",
"description": "The incoming support ticket."
}
},
"outputs": {
"draft": {
"type": "string",
"description": "The drafted reply."
}
}
},
"description": "A crew that takes the first pass on support. A classifier categorizes the ticket, a drafter writes a reply, and an escalator flags anything unusual to a human with its reasoning, posting the note to Slack."
}