All articles

Jev — scoring when there is nothing to choose between

Not every decision is a choice. Jev is a System One architecture for the cases where the answer is a number on a continuum and the threshold is yours to set.

Laya answers which one. Jev answers how much.

Jev is an evolving open architecture. What follows describes how it is used on this registry; treat specific numbers as illustrative.

Plenty of production decisions have no candidate set. How risky is this payment? How likely is this account to churn? How urgent is this ticket? There is no list to pick from — there is a continuum, and somewhere on it a threshold that belongs to your business rather than to the model.

The output

from systemone import load

model = load("acme/payment-risk")
score = model.score(transaction)

score.value  # 0.83
score.calibrated  # True
score.percentile  # 0.97 relative to the training distribution

A single number, plus enough context to use it. The percentile matters more than people expect: a raw 0.83 means nothing until you know whether that is the top 3% of traffic or the top 40%.

The threshold is the product decision

This is the part that makes scoring models different to work with. The model does not decide anything. You decide, by choosing where to cut — and that choice is a business trade-off between false positives and false negatives, not a modelling one.

Which is exactly why calibration is not optional here. If you want to review the riskiest 2% of payments, you need the score to actually correspond to risk in a stable way. An uncalibrated scorer will move that 2% around as your traffic mix shifts, and you will find out from the fraud numbers rather than from a dashboard.

Jev models on this registry publish calibration_error for this reason, and many publish the score distribution alongside it.

Choosing between Jev and Laya

Your questionArchitectureCapability
Which of these options?Layachoice, route
How much / how likely?Jevscore
In what order?Jevrank
Which category?Layaclassify

A useful tie-breaker: if the answer would be a switch statement, you want a choice model. If it would be an if x > threshold, you want a scorer.

They also compose. A common shape is a Jev model scoring risk, feeding a Laya model that chooses the action — review, approve, decline — with the score as one of its inputs.

Latency

Jev models are typically the fastest thing on the registry: a couple of milliseconds on CPU is normal, because there is no candidate set to encode. That makes them viable in places a choice model would be marginal — inside a payment authorisation path, for instance, where the entire budget is tens of milliseconds.

Browse Jev models, or compare them by median latency.