A DECISION PATTERN / CHOICE

Route Support Tickets with Jev

A customer should not have to know your org chart. Turn their message into a useful first routing decision.

The decision boundary

This pattern chooses the team that should first review a request. It does not approve refunds, decide eligibility, or execute account changes. Define overlapping responsibilities explicitly and add an Other option for cases that need triage.

Try your own context

Edit the example below. Selecting a preset does not use an allowance; only a successful run does.

Playground v1.13
typesafe/jev-1.13
01 / INPUT
75 / 20,000
A
B
C
D
100 free decisions per day--:--:--
02 / OUTPUT

A little context.
A clear decision.

Give Jev a state and a question.
Your decision, probabilities, and insights
will appear right here.

Ready when you are
START WITH AN EXAMPLE
FROM PLAYGROUND TO PRODUCTION

Take the pattern to
your next build.

Inspect the request shape.
Build with Jev through its official docs.

Visit Jev official docs
AIJEV PLAYGROUND REQUEST SHAPE.
{
  "playground": "https://aijev.net",
  "language": "JavaScript",
  "request": {
    "model": "typesafe/jev-1.13",
    "state": "Customer says: \"I was charged twice for my subscription and need a refund.\"",
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "Which team should handle this request?",
        "criteria": {
          "Billing": "Billing",
          "Technical Support": "Technical Support",
          "Sales": "Sales",
          "Other": "Other"
        }
      }
    },
    "provider": {
      "allow_fallbacks": false
    }
  },
  "note": "AIJev Playground request shape only. For application integration, visit https://docs.typesafe.ai."
}
AIJev Playground only Not a public integration API

What to expect

For the duplicate-charge example, Billing is a plausible routing label. This is an illustrative expectation, not a recorded model response. Run the example to inspect the actual probabilities and returned decision.

Use it in your application

{
  "playground": "https://aijev.net",
  "language": "JavaScript",
  "request": {
    "model": "typesafe/jev-1.13",
    "state": "Customer says: \"I was charged twice for my subscription and need a refund.\"",
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "Which team should handle this request?",
        "criteria": {
          "Billing": "Billing",
          "Technical Support": "Technical Support",
          "Sales": "Sales",
          "Other": "Other"
        }
      }
    },
    "provider": {
      "allow_fallbacks": false
    }
  },
  "note": "AIJev Playground request shape only. For application integration, visit https://docs.typesafe.ai."
}

When this pattern is useful

This works best when departments have well-defined scopes and representative historical tickets are available for evaluation. Measure misroutes and escalation rate, not just whether the API returned a valid label.

When a human should review

Escalate requests involving threats, sensitive account access, financial disputes, or ambiguous ownership. Human review is also appropriate when probabilities are spread across teams. Calibrate thresholds on your own data.

Frequently asked questions

Can this automatically issue refunds?+

No. This example returns a classification only. Execution and authorization belong to your application.

What happens when no option fits?+

Include an explicit fallback option and route uncertain cases for review. A constrained answer set cannot identify a category that was never offered.

Next: Agent tool selection · API integration guide · All examples.