Skip to content

Jev Smart Routing

Jev is not a chat model. It does one thing: it makes judgements for you.

You give it a description of a situation and ask a few questions; it returns structured answers with probabilities — no prompt writing, no parsing a wall of text. With the answer in hand, your code knows who should handle the request and which flow it goes down.

What it is good for

  • Routing: is this ticket a refund, a rebooking or a question?
  • Deciding: is the customer in a hurry?
  • Scoring: how unhappy is the customer?

Three kinds of question

TypeAsksReturns
noulIs it true?noul: probability of yes (0–1)
choiceWhich one?choice: the pick, plus a probability for each option
scoreHow much?score: a value (can fall between levels), plus a probability for each level

choice and score also return a confidence. Send low-confidence cases to a person.

Step 1: create a Jev key

Jev needs a key with Jev turned on: on the console's API Keys page, click Create Jev Smart API Key. An existing key can also have the Jev switch turned on when you edit it. Keys with Jev show a Jev badge in the list.

An ordinary key calling Jev gets a 403 jev_key_required.

Step 2: call it

bash
curl https://www.routerbus.com/v1/systemone \
  -H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "My flight booked three days ago was cancelled, I still have not been refunded, and I leave tomorrow!",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Is the customer in a hurry?"
      },
      "request_type": {
        "type": "choice",
        "instructions": "What is the main request?",
        "criteria": {
          "refund": "Wants the money back",
          "rebooking": "Wants a new booking or ticket",
          "information": "Only asking for information"
        }
      },
      "frustration": {
        "type": "score",
        "instructions": "How unhappy is the customer?",
        "criteria": ["Calm", "Somewhat worried", "Very angry"]
      }
    }
  }'
  • state: the situation to judge, as text
  • questions: questions you name yourself; the names come back unchanged in the answers

The response

json
{
  "answers": {
    "is_urgent": { "noul": 0.93 },
    "request_type": {
      "choice": "refund",
      "probabilities": { "refund": 0.85, "rebooking": 0.10, "information": 0.05 },
      "confidence": 0.78
    },
    "frustration": {
      "score": 1.6,
      "probabilities": { "0": 0.10, "1": 0.20, "2": 0.70 },
      "confidence": 0.65
    }
  }
}

(Values are illustrative.) Read answers.request_type.choice in your code to decide the next step: refunds go to finance, urgent cases jump the queue.

Billing

Billed per token, drawn from your balance like any other call, and recorded in Usage Logs. Jev requests always settle at Jev's own price, whatever group the key belongs to.

RouterBus API Documentation