Cancellation reason

Categorize why a customer is cancelling, for product and pricing insight. The cancellation always goes ahead.

F@f

Limits to keep in mind

Never use the reason to delay, block or add steps to a cancellation.

Problem

Cancellation surveys get a free-text answer that nobody reads, or a forced dropdown that hides the real reason.

Goal

Turn cancellation comments into reasons product and pricing teams can count, while the cancellation itself is processed as asked.

Input / state

What the customer wrote when cancelling, and their plan.

comment
The customer's cancellation message or survey answer.
plan
Plan and tenure, for reporting.

Decision question

ChoiceQuestion key cancellation_reason

What is the main reason the customer gives for cancelling?

Options

  • too_expensivePrice, budget cuts or poor value for money.
  • missing_featureNeeds a capability the product doesn't have.
  • switching_toolsMoving to a named or unnamed competitor or an in-house tool.
  • not_using_enoughNot using it, project ended, or team too small.
  • technical_problemsBugs, outages, performance or integrations not working.
  • temporary_pauseExpects to come back, for example seasonal work or a break.

Allowed outcomes

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

  • Too expensiveChoice is too_expensive and confidence meets your threshold.
  • Missing featureChoice is missing_feature and confidence meets your threshold.
  • Switching toolsChoice is switching_tools and confidence meets your threshold.
  • Not using enoughChoice is not_using_enough and confidence meets your threshold.
  • Technical problemsChoice is technical_problems and confidence meets your threshold.
  • Temporary pauseChoice is temporary_pause and confidence meets your threshold.
  • Record as unclearConfidence 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

{
  "plan": "Team, 14 months",
  "comment": "Budget got cut for next quarter, can't justify it right now."
}

Outcome

Illustrative
Too expensive

Choice is too_expensive and confidence meets your threshold.

Why

Budget is the stated reason.

Using it well

  • Process the cancellation before or regardless of this answer. The reason is for insight, never a gate.
  • Technical problems are worth a follow-up from support after the cancellation is confirmed.

Request definition

POST https://api.typesafe.ai/v1/systemone
{
  "model": "jev-latest",
  "state": {
    "comment": "<comment>",
    "plan": "<plan>"
  },
  "questions": {
    "cancellation_reason": {
      "type": "choice",
      "instructions": "What is the main reason the customer gives for cancelling?",
      "criteria": {
        "too_expensive": "Price, budget cuts or poor value for money.",
        "missing_feature": "Needs a capability the product doesn't have.",
        "switching_tools": "Moving to a named or unnamed competitor or an in-house tool.",
        "not_using_enough": "Not using it, project ended, or team too small.",
        "technical_problems": "Bugs, outages, performance or integrations not working.",
        "temporary_pause": "Expects to come back, for example seasonal work or a break."
      }
    }
  }
}

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)