AI

Jev: Score

Place the payload on a rubric you write — an ordered ladder of levels — and get back a number a Condition can compare.

ai.jev_score
AIJev: Score

At a glance

Does
Asks Jev where the payload sits on 2 to 10 ordered levels
Emits
jev.score, jev.confidence, jev.probabilities, jev.legend
Needs
A Jev account, an OpenRouter provider, or Watchflows Sparks

Set it up

Write the question and the Levels, lowest first — between two and ten of them, each describing a distinct, observable state. Jev answers with a position on that ladder: a number from 0 to one less than the number of levels, which drops straight into a Condition or a Math step. Confident fires at or above the Minimum confidence threshold; Unsure fires below it.

The inspector for a Jev: Score node. The question, the ordered level list, and the confidence slider.
The inspector for a Jev: Score node. The question, the ordered level list, and the confidence slider.

{{jev.score}} is the expected value across the whole distribution, so it can land between levels — 1.3 sits between level 1 and level 2. That is normal, not an error. Use {{jev.legend.1}} to show the level's own text.

Leave State empty to send the whole payload as an object. A single {{path}} that resolves to an object or array is sent structured, never as stringified JSON. Narrow it where you can — accuracy falls as unrelated context grows.

A third outlet, Failure, is the recovery path. It carries error and errorType when the call itself throws — TypeSafe down, the rate limit exhausted, a question it refuses. Leave it unwired and a thrown call stops the run as it always has; wire it and the run carries on down that branch instead.

Three things can pay for a Jev question, and Account is where you pick: a Jev account connected in Settings → Integrations, any OpenRouter provider you have added in Settings → AI Providers, or Watchflows Sparks if you have any. OpenRouter hosts the same model at the same price, so the answer, the outlets and your thresholds are identical whichever you choose — Sparks run these nodes with nothing to paste — the free 2,000 Sparks included. The Jev nodes stay out of the palette only while you have none of the three.

Configure

FieldDefaultWhat it does
Account—Who pays: a connected Jev account, OpenRouter — <provider>, or Watchflows Sparks. Left unset it uses whichever one you have — the row says which.
Modeljev-latestjev-latest, jev-preview, or a dated release like jev-1.13.0 to pin a flow whose thresholds must not drift. On OpenRouter and Sparks a dated release is sent without its patch number — jev-1.13.0 asks for jev-1.13, the same release — and jev-preview is not offered at all, so a node pinned to it says so instead of running.
State—What Jev evaluates. Empty sends the whole payload.
Question—What the rubric is measuring, in plain words.
Levels (lowest first)—2 to 10 ordered levels, each a distinct observable state.
Minimum confidence0.5At or above this the Confident outlet fires; below it, Unsure.

Output

Every key is available downstream as {{key}}, and jev arrives as real structure, not a JSON string.

KeyTypeValue
jev.scoreNumberPosition on the rubric, 0 to one less than the level count — can fall between levels
jev.confidenceNumberHow peaked the distribution is, 0–1
jev.probabilitiesObjectLevel number to probability — {{jev.probabilities.2}}
jev.legendObjectLevel number to the text you configured — {{jev.legend.2}}
jev.outletStringThe branch taken: Confident or Unsure
jev.modelStringThe Jev release that answered, e.g. jev-1.13.0
jev.providerStringWhich route answered: typesafe, openrouter or sparks
jev.usage.inputTokensNumberInput tokens billed for this call; output is free
errorStringFailure outlet only: the human-readable message
errorTypeStringFailure outlet only: the category — apiError for a refused call, invalidConfiguration for a node that is not set up, sparksExhausted when a Sparks-paid question runs out of credit, sparksSettling while Watchflows AI gets this Mac ready (a few minutes)

Example: triage a bug report

Three levels — cosmetic, workaround exists, blocking. A report that reads as mostly the middle level with a hint of the top comes back around 1.3, and a Condition on {{jev.score}} decides whether it pages anyone.

Four nodes. A report, a Jev: Score node, and a Condition reading the score.
Four nodes. A report, a Jev: Score node, and a Condition reading the score.

Paste this into the Flow Builder to get the same flow:

Ask Jev how severe a bug report is on three levels — cosmetic, has a workaround, blocking — and notify me when the score is 2 or above.

Good to know

Adjacent levels that shade into each other split the answer. Each level should name something you could point at in the text. Two vague neighbours produce an ambiguous score and an Unsure verdict.

Keep the rubric descriptive, not numeric. Jev is not a calculator and reads dates as text, so anything arithmetic belongs upstream in a Math step.