Customer support

2 Workflows2 Response Formats3 Backend Steps

Refund & Order Support

Handles refund requests end-to-end: classifies what the customer needs, applies your refund policy, and drafts a clear reply - automatically.

Works with

Primary
Backup

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

Best for

  • SaaS customer support
  • Ecommerce refunds
  • Internal 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

refund_triage_workflow

Classifies refund requests and starts the decision pipeline

Backend event

request_started

evaluate_refund fires, then starts refund_decision_workflow

Backend event

request_completed

AI workflow

refund_decision_workflow

Evaluates refund eligibility and drafts the customer reply

Customer receives the response

What you get

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

Workflow

refund_triage_workflow

Classifies refund requests and starts the decision pipeline

Workflow

refund_decision_workflow

Evaluates refund eligibility and drafts the customer reply

Response format

refund_triage_response

Classification of the incoming refund request

intentreason_categorysentimentneeds_manual_review

Response format

refund_decision_response

Refund eligibility decision and customer-facing reply

decisionrefund_amount_usdexplanationcustomer_reply

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.

refund_triage_workflow

Classifies refund requests and starts the decision pipeline

Model & backupsLearn more
openai · gpt-5.6-terraBackup 1: anthropic · claude-haiku-4-5-20251001

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

Response formatLearn more
refund_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
customer_idorder_id

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

Memory windowLearn more
15 minutes

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

Automated pipelineLearn more
request_startedevaluate_refundstarts refund_decision_workflowrequest_completed
How multi-step pipelines work

Steps that run automatically around this workflow, in order.

Production mode

Runs live against your connected AI provider.

refund_decision_workflow

Evaluates refund eligibility and drafts the customer reply

Model & backupsLearn more
anthropic · claude-haiku-4-5-20251001Backup 1: openai · gpt-5.6-terra

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

Response formatLearn more
refund_decision_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
customer_idorder_id

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-refund-template-v1.json3.6 KB
{
  "version": 1,
  "structures": [
    {
      "name": "refund_triage_response",
      "description": "Classification of the incoming refund request",
      "example": {
        "intent": "refund_request",
        "reason_category": "damaged_item",
        "sentiment": "frustrated",
        "needs_manual_review": false
      },
      "schema": {
        "type": "object",
        "properties": {
          "intent": {
            "type": "string"
          },
          "reason_category": {
            "type": "string"
          },
          "sentiment": {
            "type": "string"
          },
          "needs_manual_review": {
            "type": "boolean"
          }
        },
        "required": [
          "intent",
          "reason_category",
          "needs_manual_review"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "refund_decision_response",
      "description": "Refund eligibility decision and customer-facing reply",
      "example": {
        "decision": "approve",
        "refund_amount_usd": 49.99,
        "explanation": "Item arrived damaged; approved per policy section 3.2.",
        "customer_reply": "We've approved a full refund of $49.99 to your original payment method."
      },
      "schema": {
        "type": "object",
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "approve",
              "partial",
              "deny",
              "escalate"
            ]
          },
          "refund_amount_usd": {
            "type": "number"
          },
          "explanation": {
            "type": "string"
          },
          "customer_reply": {
            "type": "string"
          }
        },
        "required": [
          "decision",
          "explanation",
          "customer_reply"
        ],
        "additionalProperties": false
      }
    }
  ],
  "workflows": [
    {
      "name": "refund_triage_workflow",
      "description": "Classifies refund requests and starts the decision pipeline",
      "provider": "openai",
      "model": "gpt-5.6-terra",
      "backups": [
        {
          "provider": "anthropic",
          "model": "claude-haiku-4-5-20251001"
        }
      ],
      "request_type": "chat",
      "system_instructions": "Classify the refund request: identify intent, reason category, and sentiment. Flag cases needing manual review.",
      "structure": "refund_triage_response",
      "customer_fields": [
        "customer_id",
        "order_id"
      ],
      "test_mode": false,
      "cache_window_seconds": 900,
      "backend_pipeline": {
        "enabled": true,
        "events": [
          {
            "name": "request_started"
          },
          {
            "name": "evaluate_refund",
            "target_workflow": "refund_decision_workflow"
          },
          {
            "name": "request_completed"
          }
        ]
      }
    },
    {
      "name": "refund_decision_workflow",
      "description": "Evaluates refund eligibility and drafts the customer reply",
      "provider": "openai",
      "model": "gpt-5.6-terra",
      "backups": [
        {
          "provider": "anthropic",
          "model": "claude-haiku-4-5-20251001"
        }
      ],
      "request_type": "chat",
      "system_instructions": "Apply the refund policy to the triaged request and order details. Decide approve/partial/deny/escalate and write a concise customer reply.",
      "structure": "refund_decision_response",
      "customer_fields": [
        "customer_id",
        "order_id"
      ],
      "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.