Return reason

Turn a free-text return reason into a consistent category for routing and reporting.

F@f

Limits to keep in mind

Never use this category alone to deny a return or decide a customer is acting in bad faith.

Problem

Return forms with a free-text box produce reasons that can't be counted or routed, while forced dropdowns produce "other" for half of all returns.

Goal

Assign one reason per return so defective items get inspected and sizing problems reach the product team, without blocking the return.

Input / state

The customer's return comment and the product.

return_comment
What the customer wrote on the return form.
product
Product name and category.

Decision question

ChoiceQuestion key return_reason

What is the main reason the customer is returning this product?

Options

  • changed_mindNo longer wanted, found elsewhere, ordered by mistake or ordered several to choose from.
  • size_or_fitToo big, too small, wrong length, or doesn't fit the space or device.
  • defectiveDoesn't work, stopped working, or broke in normal use.
  • not_as_describedDiffers from the listing: colour, material, dimensions or features.
  • arrived_too_lateArrived after the date the customer needed it.

Allowed outcomes

Decided in your code from the answer and its confidence. Thresholds are yours to set and test.

  • Changed mindChoice is changed_mind and confidence meets your threshold.
  • Size or fitChoice is size_or_fit and confidence meets your threshold.
  • DefectiveChoice is defective and confidence meets your threshold.
  • Not as describedChoice is not_as_described and confidence meets your threshold.
  • Arrived too lateChoice is arrived_too_late and confidence meets your threshold.
  • Returns agentConfidence is below your threshold: probability is spread across options.

Example scenarios

Predefined demonstrations. No model is called; the outcome shown is an illustrative judgment.

Example state

{
  "product": "Wool overshirt",
  "return_comment": "Too tight across the shoulders, the next size up would be fine."
}

Outcome

Illustrative
Size or fit

Choice is size_or_fit and confidence meets your threshold.

Why

A fit problem with the product itself working as intended.

Using it well

  • Use the reason to route and report, not to refuse a return. If a reason changes who pays for return shipping, let the customer see and correct it.
  • Ask for the main reason. Comments that list several often still have one that matters most.

Request definition

POST https://api.typesafe.ai/v1/systemone
{
  "model": "jev-latest",
  "state": {
    "return_comment": "<return_comment>",
    "product": "<product>"
  },
  "questions": {
    "return_reason": {
      "type": "choice",
      "instructions": "What is the main reason the customer is returning this product?",
      "criteria": {
        "changed_mind": "No longer wanted, found elsewhere, ordered by mistake or ordered several to choose from.",
        "size_or_fit": "Too big, too small, wrong length, or doesn't fit the space or device.",
        "defective": "Doesn't work, stopped working, or broke in normal use.",
        "not_as_described": "Differs from the listing: colour, material, dimensions or features.",
        "arrived_too_late": "Arrived after the date the customer needed it."
      }
    }
  }
}

Request shape from the System One API reference; a Kev server accepts the same body. Replace the placeholder state with your data. Requests need your own API key or server.

Version History

v1Current Versionabout 8 hours ago@f

Initial version

Comments (0)