Customer support
Refund & Order Support
Handles refund requests end-to-end: classifies what the customer needs, applies your refund policy, and drafts a clear reply - automatically.
How the data flows
Requests move between your backend and the AI workflows automatically. Here's the exact path a request takes.
AI workflow
refund_triage_workflow
Classifies refund requests and starts the decision pipeline
Backend event
request_started
Backend event
request_completed
AI workflow
refund_decision_workflow
Evaluates refund eligibility and drafts the customer reply
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
Response format
refund_decision_response
Refund eligibility decision and customer-facing 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
The primary model plus automatic fallback models if the primary is unavailable.
The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.
Fields you include in each request so the workflow can personalise its answer.
Identical requests are answered from memory within this window, which is faster and cheaper.
Steps that run automatically around this workflow, in order.
Runs live against your connected AI provider.
refund_decision_workflow
Evaluates refund eligibility and drafts the customer reply
The primary model plus automatic fallback models if the primary is unavailable.
The structured JSON this workflow returns. Fields are defined by you and enforced by ModelRiver.
Fields you include in each request so the workflow can personalise its answer.
Runs live against your connected AI provider.
How to use it
- 1
Download the template
The file is a portable JSON bundle - safe to share and easy to read.
- 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
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
{
"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.