Return reason
Turn a free-text return reason into a consistent category for routing and reporting.
F@fLimits 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
return_reasonWhat 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
IllustrativeChoice 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
Initial version