Customer support

2 Workflows2 Response Formats3 Backend Steps

Support Ticket Triage

Sorts incoming support tickets, sets priority, and drafts a first reply - so your team only touches the conversations that need a human.

Works with

Primary
Backup

Pick your providers and models. The download is customized to your selections.

Best for

  • SaaS customer support teams
  • Ecommerce support
  • Small support teams

How the data flows

Requests move between your backend and the AI workflows automatically. Here's the exact path a request takes.

Customer request arrives

AI workflow

ticket_triage_workflow

Classifies the ticket and starts the reply pipeline

Backend event

ticket_received

draft_reply fires, then starts ticket_reply_workflow

Backend event

reply_ready

AI workflow

ticket_reply_workflow

Drafts a first reply the support team can send

Customer receives the response

What you get

Every template is built from two kinds of pieces: Workflows and Response Formats.

Workflow

ticket_triage_workflow

Classifies the ticket and starts the reply pipeline

Workflow

ticket_reply_workflow

Drafts a first reply the support team can send

Response format

ticket_triage_response

Classification of the incoming support ticket

categoryprioritysentimentneeds_human

Response format

ticket_reply_response

Drafted first reply and next steps for the customer

replynext_stepsneeds_human

Details

The full specification of each workflow, with plain-English explanations. Everything below is set in the downloaded file and can be changed after import.

ticket_triage_workflow

Classifies the ticket and starts the reply pipeline

Model & backupsLearn more
xai · grok-4.5Backup 1: anthropic · claude-haiku-4-5-20251001

The primary model plus automatic fallback models if the primary is unavailable.

Response formatLearn more
ticket_triage_responseReturns a structured object instead of free-form text.

The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.

Customer data it usesLearn more
ticket_idcustomer_message

Fields you include in each request so the workflow can personalise its answer.

Memory windowLearn more
10 minutes

Identical requests are answered from memory within this window, which is faster and cheaper.

Automated pipelineLearn more
ticket_receiveddraft_replystarts ticket_reply_workflowreply_ready
How multi-step pipelines work

Steps that run automatically around this workflow, in order.

Production mode

Runs live against your connected AI provider.

ticket_reply_workflow

Drafts a first reply the support team can send

Model & backupsLearn more
anthropic · claude-haiku-4-5-20251001Backup 1: xai · grok-4.5

The primary model plus automatic fallback models if the primary is unavailable.

Response formatLearn more
ticket_reply_responseReturns a structured object instead of free-form text.

The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.

Customer data it usesLearn more
ticket_idcustomer_message

Fields you include in each request so the workflow can personalise its answer.

Production mode

Runs live against your connected AI provider.

How to use it

  1. 1

    Download the template

    The file is a portable JSON bundle - safe to share and easy to read.

  2. 2

    Open a project in ModelRiver

    Sign in, pick a project, and make sure the AI providers used by this template are connected. You can connect them from the Providers section.

  3. 3

    Import it

    Open the Import button in your project, paste or upload the file, review the preview, and confirm. Everything is created atomically, so nothing is overwritten. How import & export works

Template file

Technical users can inspect the raw bundle below.

View full template JSON
modelriver-support-ticket-triage-template-v1.json3.7 KB
{
  "version": 1,
  "structures": [
    {
      "name": "ticket_triage_response",
      "description": "Classification of the incoming support ticket",
      "example": {
        "category": "technical",
        "priority": "high",
        "sentiment": "frustrated",
        "needs_human": true
      },
      "schema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "billing",
              "technical",
              "account",
              "feature_request",
              "other"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high",
              "urgent"
            ]
          },
          "sentiment": {
            "type": "string"
          },
          "needs_human": {
            "type": "boolean"
          }
        },
        "required": [
          "category",
          "priority",
          "sentiment",
          "needs_human"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "ticket_reply_response",
      "description": "Drafted first reply and next steps for the customer",
      "example": {
        "reply": "Thanks for reaching out - I've started looking into this for you.",
        "next_steps": [
          "Try clearing your browser cache",
          "Confirm the error message you see"
        ],
        "needs_human": true
      },
      "schema": {
        "type": "object",
        "properties": {
          "reply": {
            "type": "string"
          },
          "next_steps": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "needs_human": {
            "type": "boolean"
          }
        },
        "required": [
          "reply",
          "next_steps",
          "needs_human"
        ],
        "additionalProperties": false
      }
    }
  ],
  "workflows": [
    {
      "name": "ticket_triage_workflow",
      "description": "Classifies the ticket and starts the reply pipeline",
      "provider": "xai",
      "model": "grok-4.5",
      "backups": [
        {
          "provider": "anthropic",
          "model": "claude-haiku-4-5-20251001"
        }
      ],
      "request_type": "chat",
      "system_instructions": "Classify the support ticket: choose a category, set a priority, note the customer sentiment, and flag whether a human agent must review before sending.",
      "structure": "ticket_triage_response",
      "customer_fields": [
        "ticket_id",
        "customer_message"
      ],
      "test_mode": false,
      "cache_window_seconds": 600,
      "backend_pipeline": {
        "enabled": true,
        "events": [
          {
            "name": "ticket_received"
          },
          {
            "name": "draft_reply",
            "target_workflow": "ticket_reply_workflow"
          },
          {
            "name": "reply_ready"
          }
        ]
      }
    },
    {
      "name": "ticket_reply_workflow",
      "description": "Drafts a first reply the support team can send",
      "provider": "xai",
      "model": "grok-4.5",
      "backups": [
        {
          "provider": "anthropic",
          "model": "claude-haiku-4-5-20251001"
        }
      ],
      "request_type": "chat",
      "system_instructions": "Write a friendly first reply for the support ticket. Include clear next steps the customer can take, and keep flagging tickets that need a human agent.",
      "structure": "ticket_reply_response",
      "customer_fields": [
        "ticket_id",
        "customer_message"
      ],
      "test_mode": false
    }
  ]
}

Looking for something else?

More templates are on the way. In the meantime, you can build your own workflows from scratch in the ModelRiver console.