{
    "schema_version": "1.0",
    "exported_at": "2026-08-16T10:15:37+00:00",
    "source": "https://invitationbuddy.com/workflows/customer-support-triage-workflow",
    "workflow": {
        "name": "Customer Support Triage Workflow",
        "slug": "customer-support-triage-workflow",
        "version": "1.0.0",
        "tagline": "Classify, prioritise, summarise and route every incoming ticket",
        "summary": "Reads each new ticket, classifies it, detects sentiment and urgency, summarises the thread and routes it to the right queue with a suggested reply.",
        "description": "Support queues fail at triage, not at answering. This workflow reads every incoming ticket, works out what it is actually about, how urgent it is and who should own it, then hands the agent a summary and a suggested reply.\n\nThe agent still sends. What changes is that they open a ticket already understood.",
        "category": "Customer Support",
        "type": "Automation",
        "difficulty": "beginner",
        "automation_level": "mostly_automated",
        "pricing": "freemium",
        "language": "en",
        "trigger": {
            "type": "email_event",
            "detail": "New ticket created"
        },
        "input_types": [
            "email",
            "text",
            "api"
        ],
        "output_types": [
            "summary",
            "email"
        ],
        "author": null,
        "company": null,
        "last_updated": "2026-07-09"
    },
    "overview": {
        "purpose": "Support queues fail at triage, not at answering. This workflow reads every incoming ticket, works out what it is actually about, how urgent it is and who should own it, then hands the agent a summary and a suggested reply.\n\nThe agent still sends. What changes is that they open a ticket already understood.",
        "business_value": "Cuts first-response time and stops urgent tickets sitting behind routine ones.",
        "expected_outcome": "Every ticket categorised, prioritised, summarised and routed within seconds, with a draft reply attached.",
        "problems_solved": [
            "Urgent tickets queued behind trivial ones",
            "Agents re-reading long threads to find the actual question",
            "Inconsistent categorisation makes reporting useless",
            "Non-English tickets wait for a specific agent"
        ],
        "ideal_users": [
            "Support teams with meaningful ticket volume",
            "E-commerce operations handling order queries",
            "SaaS teams working from a shared inbox"
        ],
        "benefits": [
            "Urgency detected from content, not from the customer ticking a box",
            "Agents open tickets already summarised",
            "Consistent categories make reporting trustworthy",
            "Non-English tickets triaged immediately"
        ],
        "limitations": [
            "Suggested replies need agent review before sending",
            "Sarcasm and understatement fool sentiment detection",
            "The category taxonomy needs maintaining as the product changes",
            "Does not resolve tickets — it prepares them"
        ],
        "success_metrics": [
            "Median first response time",
            "Routing accuracy (tickets reassigned)",
            "Agent handling time per ticket",
            "CSAT versus the pre-automation baseline"
        ]
    },
    "metrics": {
        "estimated_minutes": 3,
        "estimated_cost": 0.09,
        "cost_currency": "USD",
        "estimated_tokens": 4500,
        "success_rate": 91,
        "automation_percent": 88,
        "human_review_percent": 12
    },
    "industries": [
        "SaaS",
        "E-commerce",
        "Retail",
        "Travel"
    ],
    "tags": [
        "Quick Win",
        "Real-time",
        "Multilingual",
        "Beginner Friendly"
    ],
    "ai_skills": [
        "Summarization",
        "Reasoning",
        "Translation"
    ],
    "tools": [
        {
            "name": "ChatGPT",
            "role": "primary",
            "required": true,
            "url": "https://invitationbuddy.com/ai-directory/chatgpt"
        },
        {
            "name": "Claude",
            "role": "supporting",
            "required": true,
            "url": "https://invitationbuddy.com/ai-directory/claude"
        }
    ],
    "models": [],
    "integrations": [
        {
            "name": "OpenAI",
            "kind": "ai_provider",
            "auth_type": "api_key",
            "required": true
        },
        {
            "name": "Slack",
            "kind": "communication",
            "auth_type": "oauth",
            "required": true
        },
        {
            "name": "Webhook",
            "kind": "protocol",
            "auth_type": "webhook",
            "required": false
        },
        {
            "name": "Zapier",
            "kind": "automation",
            "auth_type": "oauth",
            "required": false
        }
    ],
    "prerequisites": [
        {
            "kind": "api_key",
            "label": "LLM API key",
            "detail": "For classification and drafting.",
            "required": true
        },
        {
            "kind": "account",
            "label": "Helpdesk with webhooks",
            "detail": "Zendesk, Intercom, Freshdesk or a shared inbox with automation.",
            "required": true
        },
        {
            "kind": "software",
            "label": "Category taxonomy",
            "detail": "A documented list of categories and their owning queues.",
            "required": true
        }
    ],
    "steps": [
        {
            "number": 1,
            "title": "Ticket created trigger",
            "description": "Webhook fires with the ticket body, customer record and any thread history.",
            "input": "Ticket payload",
            "output": "Job",
            "estimated_minutes": 1,
            "difficulty": "beginner",
            "automation": "auto",
            "manual_review": false
        },
        {
            "number": 2,
            "title": "Classify and score urgency",
            "description": "Assign a category, detect sentiment, and score urgency from the content rather than the customer's self-selection.",
            "model": "GPT-4o",
            "prompt": "Classify this support ticket.\n\nTicket:\n{{ticket_body}}\n\nAvailable categories: {{categories}}\n\nReturn JSON:\n{\n  \"category\": \"one of the above\",\n  \"urgency\": \"low|normal|high|critical\",\n  \"sentiment\": \"positive|neutral|frustrated|angry\",\n  \"language\": \"ISO code\",\n  \"is_churn_risk\": true|false,\n  \"one_line_summary\": \"what they actually need\"\n}\n\nJudge urgency from the impact described, not from tone. A calm message about total data loss is critical.",
            "input": "Ticket body",
            "output": "Category + urgency + sentiment",
            "estimated_minutes": 1,
            "difficulty": "beginner",
            "automation": "auto",
            "manual_review": false,
            "tips": [
                "Tell it to judge urgency by impact, not tone — otherwise politeness gets deprioritised"
            ]
        },
        {
            "number": 3,
            "title": "Summarise the thread",
            "description": "For tickets with history, condense the whole thread to what has been tried and what is still outstanding.",
            "model": "GPT-4o",
            "input": "Thread history",
            "output": "Thread summary",
            "estimated_minutes": 1,
            "difficulty": "beginner",
            "automation": "auto",
            "manual_review": false
        },
        {
            "number": 4,
            "title": "Draft a suggested reply",
            "description": "Produce a first-draft reply grounded in the help centre, in the customer's language.",
            "model": "Claude Sonnet",
            "input": "Ticket + KB articles",
            "output": "Draft reply",
            "estimated_minutes": 1,
            "difficulty": "beginner",
            "automation": "auto",
            "manual_review": false,
            "warnings": [
                "The draft may confidently state a policy that does not exist — agents must verify before sending"
            ]
        },
        {
            "number": 5,
            "title": "Route and notify",
            "description": "Assign to the owning queue, set priority, and alert the on-call channel for anything critical.",
            "tool": "Slack",
            "input": "Classified ticket",
            "output": "Routed ticket",
            "expected_result": "Critical tickets surfaced immediately; everything else in the right queue.",
            "estimated_minutes": 1,
            "difficulty": "beginner",
            "automation": "auto",
            "manual_review": false
        },
        {
            "number": 6,
            "title": "Agent review and send",
            "description": "The agent reads the summary, checks the draft against policy, edits and sends.",
            "input": "Ticket + summary + draft",
            "output": "Sent reply",
            "estimated_minutes": 3,
            "difficulty": "beginner",
            "automation": "manual",
            "manual_review": true
        }
    ],
    "prompts": [
        {
            "title": "Classify and score urgency",
            "kind": "user",
            "body": "Classify this support ticket.\n\nTicket:\n{{ticket_body}}\n\nAvailable categories: {{categories}}\n\nReturn JSON:\n{\n  \"category\": \"one of the above\",\n  \"urgency\": \"low|normal|high|critical\",\n  \"sentiment\": \"positive|neutral|frustrated|angry\",\n  \"language\": \"ISO code\",\n  \"is_churn_risk\": true|false,\n  \"one_line_summary\": \"what they actually need\"\n}\n\nJudge urgency from the impact described, not from tone. A calm message about total data loss is critical.",
            "variables": [
                "ticket_body",
                "categories"
            ],
            "model_hint": "GPT-4o"
        }
    ],
    "use_cases": [
        {
            "title": "Shared inbox triage",
            "description": "Turn an unstructured shared inbox into a prioritised, categorised queue.",
            "industry": "SaaS",
            "outcome": "Nothing urgent gets buried"
        },
        {
            "title": "Order and delivery queries",
            "description": "Auto-classify and route high-volume order questions.",
            "industry": "E-commerce",
            "outcome": "Faster routine resolution"
        },
        {
            "title": "Multilingual support",
            "description": "Triage every language immediately rather than waiting for a specific agent.",
            "industry": "Travel",
            "outcome": "Same-day response in any language"
        }
    ],
    "faq": [
        {
            "question": "Can this reply to customers automatically?",
            "answer": "It can, and for a narrow set of well-understood queries that is reasonable. Start with agent review on everything, measure where the drafts are consistently right, and only then automate that slice."
        },
        {
            "question": "How do I stop it misjudging urgency?",
            "answer": "Instruct it to score on described impact rather than tone, then sample a week of classifications against what agents actually escalated."
        },
        {
            "question": "What about languages we do not support?",
            "answer": "It will triage and summarise them regardless, which at minimum tells you what has arrived and how urgent it is."
        }
    ]
}