CUSTOMER OPERATIONS / CHOICE

AI Support Ticket Routing with Jev

Build an AI support ticket classifier with Jev. Route billing, technical, and sales requests using explicit choices and a review fallback.

By AIJev Editorial · Reviewed September 18, 2026 · Interactive walkthrough

The scenario

A shared support inbox receives payment questions, broken integrations, and product inquiries. Asking customers to choose a department adds friction, while a keyword rule can confuse a failed payment with a broken checkout page. Start by identifying the team that should own the first response.

Define the decision boundary

Classify ownership only. A Billing decision must not issue a refund. Keep account changes and transaction checks in your existing support workflow, and use Other when no department clearly fits.

From input to next step

  1. Provide the customer message and short descriptions of each team’s responsibilities.
  2. Ask one ownership question and return an allowed department.
  3. Send the suggestion to the support queue, with a review path for ambiguous tickets.

Try it. Then change one thing.

Compare the original scenario with a deliberate variation. You can edit either input, run Jev, inspect the result, and share your decision card. Loading an example does not send a model request.

What to look for: Billing is a plausible result for a duplicate charge. This is an editorial expectation, not a recorded Jev response; run the playground to see the actual decision and probabilities.

Start with the original input, then compare the variation. Run each scenario to see the real model response. Switching scenarios resets the form and result.

⌘ Playground v1.13
typesafe/jev-1.13↗
01 / INPUT
75 / 20,000
A
B
C
D
50 free / IP 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

Experiment: introduce overlapping ownership

Decide whether payment recovery or restoring access is the priority. If your team disagrees, clarify the routing policy before treating any label as correct.

Use the second scenario tab above to load this variation. Compare the returned decision as well as any probabilities: a changed answer can reveal an unclear policy, and an unchanged answer can reveal that the relevant detail was not captured by your question.

Use this pattern in your application

This playground request shape uses the original scenario. It is a reference for the input, not a public integration endpoint. For application integration, follow the official TypeSafe documentation linked in our Jev API guide. Keep API keys on the server and validate the returned type before taking action.

{
  "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."
}

How to evaluate this workflow

Review a labeled sample of historical tickets. Track first-owner accuracy, reassignment rate, and the share sent to Other. Split results by department so a large billing queue does not hide weak technical routing.

Save a held-out set before changing your instructions. Compare new versions against the same examples, and review disagreements instead of assuming a valid response is a correct one. For escalation design, see confidence-based routing.

Frequently asked questions

Should I route by the largest probability alone?+

Not automatically. Compare the top categories and evaluate a review threshold on held-out tickets. A confident wrong route still creates extra work for the customer.

Are these results from a real customer deployment?+

No. These are original educational scenarios. The expected outcomes are editorial hypotheses; clicking Run Jev sends the displayed input to the model and shows its actual response.

Can I adapt this example to my own workflow?+

Yes. Replace the context, define your choices or rubric, and test against examples from your domain. The playground uses text input. Do not include credentials or unnecessary personal information.

References & further reading

Background on routing and evaluation workflows. Our requests and experiments below are original educational examples, not customer deployments. See Anthropic: Building effective agents.

For the underlying decision primitives, read TypeSafe’s System One documentation and our guide to Choice, Score, and Noul.