DOCUMENTATION

Build typed AI classifications from JSON state

JEV AI Model separates the facts you provide from the question you ask. This guide explains the input model, the three output types, and how to read every result.

1. Describe the state

State is a JSON object containing the facts the classifier may use. Keep field names stable across records so one question can be reused over a dataset. The model should not need to infer facts that are missing from state.

{
  "candidate": "Senior backend engineer",
  "years_experience": 8,
  "skills": ["Go", "PostgreSQL", "distributed systems"]
}

2. Choose a question type

Noul

Likelihood

Returns the probability that your statement is true, from 0 to 1. The number is the answer and the certainty together.

Score

Rating

Rates the state against ordered levels you define, returning a number on that scale plus a probability for each level.

Choice

Selection

Selects one option and returns the probability distribution across every option you supplied.

3. Ask several questions at once

One request carries one state and as many questions as you need. They are evaluated independently against the same state, so adding questions barely changes the response time and no answer can bias another.

{
  "state": { "candidate": "…", "job_posting": "…" },
  "questions": {
    "relevance": {
      "type": "score",
      "instructions": "How relevant is this candidate to the posting",
      "criteria": ["Unrelated", "Adjacent field", "Some direct", "Deep direct"]
    },
    "advance": {
      "type": "noul",
      "instructions": "This candidate should advance to an onsite"
    }
  }
}

4. Read the result

Answers come back keyed by the ids you sent. A Noul is a single probability. Score and Choice add a confidence value alongside the full distribution, so your code can act on the answer and decide separately whether it is certain enough to act without review.

{
  "model": "jev-1.13.0",
  "answers": {
    "relevance": {
      "type": "score",
      "score": 2.52,
      "confidence": 0.52,
      "legend": { "0": "Unrelated", "1": "Adjacent field",
                  "2": "Some direct", "3": "Deep direct" },
      "probabilities": { "0": 0.0, "1": 0.05, "2": 0.38, "3": 0.57 }
    },
    "advance": { "type": "noul", "noul": 0.74 }
  },
  "usage": { "input_tokens": 328, "output_tokens": 34 }
}
Try the documented workflow