support-ticket-triage
v1.0 activeInbound support ticket is categorized by a script, triaged by judgment, and routed to the right queue with assignee notification.
Start a new run
Owner
support-team
SLA
4h
Trigger
api
Tags
supporttriagecustomer-service
Inputs
requester_email
string · required
requester_name
string · required
Outputs
ticket_id
string
category
string
priority
string
assigned_queue
string
Steps
-
1
Collect ticket details
collect-ticketformRequester or agent provides subject, body, and channel of contact
Inputsrequester_name ←process.inputs.requester_name requester_email ←process.inputs.requester_emailOutputsticket_id (string) subject (string) body (string) channel (enum) product_area (enum) -
2
Categorize ticket
categorizeautomatedExtract category and urgency from subject and body using keyword analysis
Inputssubject ←steps.collect-ticket.outputs.subject body ←steps.collect-ticket.outputs.body channel ←steps.collect-ticket.outputs.channelOutputscategory (enum) urgency (enum) word_count (number)script:./examples/steps/categorize-ticket.rb -
3
Determine priority and queue
triagejudgmentAssess the full ticket context (category, urgency, product area, word count) and determine priority level and routing queue
Inputssubject ←steps.collect-ticket.outputs.subject body ←steps.collect-ticket.outputs.body category ←steps.categorize.outputs.category urgency ←steps.categorize.outputs.urgency product_area ←steps.collect-ticket.outputs.product_area word_count ←steps.categorize.outputs.word_countOutputspriority (enum) assigned_queue (enum) triage_notes (string) suggested_response (string)threshold: 0.85 escalation: queue -
4
Notify assigned queue
notify-assigneenotificationInputsticket_id ←steps.collect-ticket.outputs.ticket_id requester_email ←process.inputs.requester_email priority ←steps.triage.outputs.priority assigned_queue ←steps.triage.outputs.assigned_queue category ←steps.categorize.outputs.category subject ←steps.collect-ticket.outputs.subject
Raw definition
---
opensop: '0.1'
process:
sla:
target: 4h
warning: 2h
name: support-ticket-triage
tags:
- support
- triage
- customer-service
owner: support-team
steps:
- id: collect-ticket
name: Collect ticket details
type: form
inputs:
- from: process.inputs.requester_name
name: requester_name
- from: process.inputs.requester_email
name: requester_email
outputs:
- name: ticket_id
type: string
- name: subject
type: string
- name: body
type: string
- name: channel
type: enum
values:
- email
- chat
- phone
- api
- name: product_area
type: enum
values:
- payments
- onboarding
- reporting
- integrations
- other
timeout: 1h
on_timeout: escalate
description: Requester or agent provides subject, body, and channel of contact
- id: categorize
run: "./examples/steps/categorize-ticket.rb"
name: Categorize ticket
type: automated
retry:
max: 2
backoff: exponential
inputs:
- from: steps.collect-ticket.outputs.subject
name: subject
- from: steps.collect-ticket.outputs.body
name: body
- from: steps.collect-ticket.outputs.channel
name: channel
outputs:
- name: category
type: enum
values:
- billing
- technical
- account
- feature_request
- other
- name: urgency
type: enum
values:
- critical
- high
- normal
- low
- name: word_count
type: number
validation: lenient
description: Extract category and urgency from subject and body using keyword
analysis
- id: triage
name: Determine priority and queue
type: judgment
inputs:
- from: steps.collect-ticket.outputs.subject
name: subject
- from: steps.collect-ticket.outputs.body
name: body
- from: steps.categorize.outputs.category
name: category
- from: steps.categorize.outputs.urgency
name: urgency
- from: steps.collect-ticket.outputs.product_area
name: product_area
- from: steps.categorize.outputs.word_count
name: word_count
outputs:
- name: priority
type: enum
values:
- P1
- P2
- P3
- P4
- name: assigned_queue
type: enum
values:
- tier1
- tier2
- billing
- escalations
- product
- name: triage_notes
type: string
- name: suggested_response
type: string
judgment:
escalation: queue
allow_agent: true
confidence_threshold: 0.85
require_human_review: false
description: Assess the full ticket context (category, urgency, product area,
word count) and determine priority level and routing queue
- id: notify-assignee
name: Notify assigned queue
type: notification
inputs:
- from: steps.collect-ticket.outputs.ticket_id
name: ticket_id
- from: process.inputs.requester_email
name: requester_email
- from: steps.triage.outputs.priority
name: priority
- from: steps.triage.outputs.assigned_queue
name: assigned_queue
- from: steps.categorize.outputs.category
name: category
- from: steps.collect-ticket.outputs.subject
name: subject
inputs:
- name: requester_email
type: string
format: email
required: true
- name: requester_name
type: string
required: true
outputs:
- from: steps.collect-ticket.outputs.ticket_id
name: ticket_id
type: string
- from: steps.categorize.outputs.category
name: category
type: string
- from: steps.triage.outputs.priority
name: priority
type: string
- from: steps.triage.outputs.assigned_queue
name: assigned_queue
type: string
trigger:
type: api
version: '1.0'
on_error:
notify:
target: "#support-ops"
channel: slack
description: Inbound support ticket is categorized by a script, triaged by judgment,
and routed to the right queue with assignee notification.