Customer experience

2 Workflows2 Response Formats3 Backend Steps

Feedback & NPS Response

Reads customer feedback and NPS scores, then drafts the right reply - thank-you, apology, or follow-up.

Works with

Primary
Backup

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

Best for

  • Product teams
  • Small businesses
  • Solo makers

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

feedback_triage_workflow

Classifies feedback and starts the reply pipeline

Backend event

feedback_submitted

draft_reply fires, then starts feedback_reply_workflow

Backend event

reply_ready

AI workflow

feedback_reply_workflow

Drafts the right reply for the customer

Customer receives the response

What you get

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

Workflow

feedback_triage_workflow

Classifies feedback and starts the reply pipeline

Workflow

feedback_reply_workflow

Drafts the right reply for the customer

Response format

feedback_triage_response

Classification of the customer feedback

sentimenttopicrating_seenneeds_follow_up

Response format

feedback_reply_response

Drafted reply to the customer

reply_tonecustomer_replyfollow_up_action

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.

feedback_triage_workflow

Classifies feedback and starts the reply 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
feedback_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_namefeedback_textrating

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
feedback_submitteddraft_replystarts feedback_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.

feedback_reply_workflow

Drafts the right reply for the customer

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
feedback_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
customer_namefeedback_textrating

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-feedback-nps-response-template-v1.json3.6 KB
{
  "version": 1,
  "structures": [
    {
      "name": "feedback_triage_response",
      "description": "Classification of the customer feedback",
      "example": {
        "sentiment": "negative",
        "topic": "onboarding",
        "rating_seen": 3,
        "needs_follow_up": true
      },
      "schema": {
        "type": "object",
        "properties": {
          "sentiment": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ]
          },
          "topic": {
            "type": "string"
          },
          "rating_seen": {
            "type": "number"
          },
          "needs_follow_up": {
            "type": "boolean"
          }
        },
        "required": [
          "sentiment",
          "topic",
          "rating_seen",
          "needs_follow_up"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "feedback_reply_response",
      "description": "Drafted reply to the customer",
      "example": {
        "reply_tone": "apologetic",
        "customer_reply": "Thanks for flagging this - we're sorry onboarding was confusing, and we're on it.",
        "follow_up_action": "Share the fix when onboarding is improved"
      },
      "schema": {
        "type": "object",
        "properties": {
          "reply_tone": {
            "type": "string",
            "enum": [
              "appreciative",
              "apologetic",
              "neutral"
            ]
          },
          "customer_reply": {
            "type": "string"
          },
          "follow_up_action": {
            "type": "string"
          }
        },
        "required": [
          "reply_tone",
          "customer_reply",
          "follow_up_action"
        ],
        "additionalProperties": false
      }
    }
  ],
  "workflows": [
    {
      "name": "feedback_triage_workflow",
      "description": "Classifies feedback and starts the reply pipeline",
      "provider": "openai",
      "model": "gpt-5.6-terra",
      "backups": [
        {
          "provider": "anthropic",
          "model": "claude-haiku-4-5-20251001"
        }
      ],
      "request_type": "chat",
      "system_instructions": "Classify the customer feedback: sentiment, topic, the rating they gave, and whether a follow-up is needed. Be objective and concise.",
      "structure": "feedback_triage_response",
      "customer_fields": [
        "customer_name",
        "feedback_text",
        "rating"
      ],
      "test_mode": false,
      "cache_window_seconds": 600,
      "backend_pipeline": {
        "enabled": true,
        "events": [
          {
            "name": "feedback_submitted"
          },
          {
            "name": "draft_reply",
            "target_workflow": "feedback_reply_workflow"
          },
          {
            "name": "reply_ready"
          }
        ]
      }
    },
    {
      "name": "feedback_reply_workflow",
      "description": "Drafts the right reply for the customer",
      "provider": "openai",
      "model": "gpt-5.6-terra",
      "backups": [
        {
          "provider": "anthropic",
          "model": "claude-haiku-4-5-20251001"
        }
      ],
      "request_type": "chat",
      "system_instructions": "Draft a short reply matching the feedback: thank happy customers, apologize and take ownership for unhappy ones, and suggest a follow-up action for the team. Never make excuses.",
      "structure": "feedback_reply_response",
      "customer_fields": [
        "customer_name",
        "feedback_text",
        "rating"
      ],
      "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.