Methodology

Jev supplies judgment. Code keeps control.

Nothing on this site asks a model to decide a priority. It asks six narrow questions about evidence, gets constrained probability outputs back, and then does ordinary arithmetic. This page is the whole method, including the parts that would be embarrassing if they were wrong.

1,000Accounts
6,000Jev judgments6 questions × 1,000 requests
9.37sWall clockconcurrency 100
$0.0775Cost1,845,032 input tokens

From evidence to action

The model reads the account. Your code makes the decision.

  1. 01 · Input

    One account record

    Usage, support, renewal dates and notes.

    Removed before sending: id + planted archetype

  2. 02 · Jev

    6 parallel questions

    One request. The same evidence for every question.

    • Needs attentionnoul
    • Churn evidencenoul
    • Expansion signalnoul
    • Urgencyscore
    • Primary issuechoice
    • Suggested ownerchoice
  3. 03 · Typed outputs

    Evidence, not a verdict

    Noul
    Probability from 0 to 1
    Score
    Urgency across an ordered rubric
    Choice
    Distribution over named options
  4. 04 · Your code

    Rules → a shortlist

    triage.ts applies thresholds and weights. No more inference.

    Act now: urgency ≥ 3 and attention > 0.8

    Act now / Review / No action, plus retention and sales lenses.

Ranking weights: attention 35 · churn 25 · expansion 15 · urgency 15 · renewal 10.

Human review: on flagged accounts, Choice confidence below 0.55 marks routing as uncertain.

Step one

One request per account, six questions

TypeSafe evaluates every question in a request against the same state in parallel, so six questions cost one round trip rather than six. The account record goes over with its planted archetype and its id stripped out — the model never sees which scenario the generator drew it from.

POST https://api.typesafe.ai/v1/systemone

{
  "model": "jev-latest",
  "state":  { …the account record… },
  "questions": { …the six below… }
}

Step two

The final decision never leaves the codebase

Bands, rankings and both lenses are arithmetic over the six answers. Changing a weight re-ranks 1,000 accounts instantly and costs nothing, because the evidence and the question meanings have not changed.

band =
  urgency >= 3 && needsAttention > 0.8
    ? "act-now"
  : needsAttention > 0.55
    || churnSignal    > 0.55
    || expansionSignal > 0.65
    ? "review"
  : "healthy"

priorityScore =
    needsAttention   * 35
  + churnSignal      * 25
  + expansionSignal  * 15
  + urgency / 4      * 15
  + renewalProximity * 10

// A Choice distribution flatter than 0.55 is not routed
// automatically — it is flagged for a person.

Step three

Did it actually find the right ones?

The generator knows which archetype produced each account, and Jev never sees it. That makes this table a real check rather than a demo. The generator planted 181 accounts that should need attention and 819 that should not. The triage surfaced 181, missing 1 planted problem and flagging 1 account that was meant to be quiet.

Same questions. Different signals.

Each bar shows the share of an archetype sent to each action band. Dots show mean model outputs from this synthetic run, not measured churn rates or evidence of calibration.

  • Healthy

    n = 618

    Routing outcomes

    Act now
    0
    Review
    0
    No action
    618

    Mean signals

    0%50%100%
    Attention
    10%
    Churn
    8%
    Expansion
    12%
  • Healthy noise

    n = 201

    Routing outcomes

    Act now
    0
    Review
    1
    No action
    200

    Mean signals

    0%50%100%
    Attention
    22%
    Churn
    15%
    Expansion
    14%
  • Adoption concern

    n = 45

    Routing outcomes

    Act now
    2
    Review
    43
    No action
    0

    Mean signals

    0%50%100%
    Attention
    78%
    Churn
    71%
    Expansion
    8%
  • Support escalation

    n = 25

    Routing outcomes

    Act now
    21
    Review
    4
    No action
    0

    Mean signals

    0%50%100%
    Attention
    87%
    Churn
    71%
    Expansion
    10%
  • Relationship risk

    n = 21

    Routing outcomes

    Act now
    12
    Review
    9
    No action
    0

    Mean signals

    0%50%100%
    Attention
    84%
    Churn
    92%
    Expansion
    7%
  • Renewal risk

    n = 25

    Routing outcomes

    Act now
    9
    Review
    16
    No action
    0

    Mean signals

    0%50%100%
    Attention
    77%
    Churn
    82%
    Expansion
    15%
  • Expansion opportunity

    n = 34

    Routing outcomes

    Act now
    1
    Review
    33
    No action
    0

    Mean signals

    0%50%100%
    Attention
    73%
    Churn
    6%
    Expansion
    96%
  • Ambiguous

    n = 31

    Routing outcomes

    Act now
    0
    Review
    30
    No action
    1

    Mean signals

    0%50%100%
    Attention
    69%
    Churn
    38%
    Expansion
    25%

Bars are normalized within each archetype; group sizes differ. Exact counts, signal means and urgency scores are in the table below.

Full audit data

Scroll the table horizontally to see every signal and urgency score.

Synthetic archetypes: planted accounts, routing outcomes and mean model outputs
Archetype plantednAct nowReviewNo actionAttentionChurnExpansionUrgency
Healthy61861810%8%12%0.63
Healthy noise201120022%15%14%1.23
Adoption concern4524378%71%8%2.85
Support escalation2521487%71%10%3.17
Relationship risk2112984%92%7%3.12
Renewal risk2591677%82%15%3.02
Expansion opportunity3413373%6%96%2.99
Ambiguous3130169%38%25%2.49

Attention, churn and expansion are mean model outputs across each archetype; urgency is a mean rubric score, not a probability. The separation between a planted problem and planted noise is produced by the model reading the record, not by a rule keyed to the field the generator moved.

Caveats

What this does not show

  • The accounts are synthetic. The archetypes were written to be separable, which makes them easier than real CRM data, where the notes are shorter, staler and more contradictory.
  • The planted scenarios are generator intent, not observed outcomes. This is a synthetic evaluation set: nothing on this page shows whether a flagged account would actually have churned.
  • Typed output guarantees the interface, not the truth. Thresholds worth trusting have to be evaluated on your own data and your own consequences — these were chosen by hand, on this portfolio.
  • Cost is computed from the input tokens the API reported, at Jev's published $0.042 per million input tokens with output tokens free.