Comparisons· Last updated

Jev versus classification models

Jev (TypeSafe’s System One decision model) is a label-in-request classifier: you send state plus a Choice (or Score / Noul) whose options live in that request. A trained BERT, GLiNER, or logistic head is a train-your-own classifier: labels live in weights until you retrain.

This unofficial comparison is for engineers choosing a first decision layer — not a bake-off. jev.pro is not affiliated with TypeSafe AI. Confirm prices and APIs on docs.typesafe.ai. We do not sell keys.

Label-in-request vs train-your-own

Axis Jev Choice (label-in-request) Fine-tuned / zero-shot classifier
Where labels live criteria map on this call (max 255 options) Model weights or a prompt template
Change a label Edit the request; pin jev-1.13.0 if thresholds are tuned Collect data, retrain or swap a checkpoint
Output choice, full probabilities, confidence Usually argmax + optional logits; calibration is extra work
Training TypeSafe states Jev is not LoRA-adapted per customer You own the training loop
Latency / $ Vendor claims on the models page and launch post — not jev.pro measurements GPU/CPU you already run; often cheaper at huge stable volume

Jev is not “just a classifier” in the BERT sense. Official docs frame it as a System One decision primitive: no generated rationale, no open NER spans unless you turn candidates into a closed Choice. Schema-safe still does not mean factually correct.

Fair cost table (vendor figures only)

Figures below are vendor-published. Re-read the source before you bid a contract.

Item Published figure Source
Jev 1.13 list price $0.042 / million input tokens; output tokens free TypeSafe models page
Jev context 64k request budget; 32k for state + longest question Same models page
Fine-tuned BERT on your GPU Your infra + labeling — we will not invent a $/query Your ops sheet
Hosted zero-shot (GLiNER-class) Provider card, not this site That provider

Batch many atomic questions on one state: TypeSafe says the state is ingested once and questions run in parallel. A separately hosted classifier usually pays per sequence, not per extra rubric on the same text.

When a fine-tuned BERT still wins

Use a trained classifier (or rules) when:

  1. The label set is frozen and you already have tens of thousands of gold rows — a small encoder can be cheaper and fully on-prem.
  2. You need span / token labels (NER, PII offsets). Jev returns typed decisions, not character offsets.
  3. Numeric or date identity must be exact. TypeSafe’s jev-1.13 jaggedness note: keep arithmetic and date math in code.
  4. Adversarial robustness is a product requirement. Official jaggedness: state is not treated as hostile by default.
  5. You cannot send text off-box. That is a procurement constraint, not a quality ranking.

Use Jev when the taxonomy changes weekly, you need calibrated-looking probabilities without a training team, or several judgments must share one state (department + urgency + policy Noul).

Cascade pattern with confidence abort

TypeSafe’s hierarchical classification cookbook walks a taxonomy with Choice at each node. Two production habits beat a single 200-way Choice:

  1. Greedy walk — pick the top child; abort if confidence is below your floor and send the ticket to a human or a broader parent label (see their “classification using confidence” cookbook).
  2. Beam walk — keep K paths; score with length-normalized geometric mean of edge probabilities. Abort the whole beam when the top/second path ratio is near 1.

Taxonomy tips (ours, not a rival recipe clone):

Worked sketch (thresholds are yours):

# Pin a versioned ID once you fit abort floors.
# client = TypeSafeClient(model="jev-1.13.0")
ABORT = 0.55  # tune on labeled tickets; not a TypeSafe default

def walk(node, state, client):
    children = taxonomy[node]
    ans = client.system_one(
        state=state,
        questions={
            "branch": {
                "type": "choice",
                "instructions": f"Which child of `{node}` fits this document?",
                "criteria": {c: taxonomy.rubric[c] for c in children},
            }
        },
    )
    choice = ans.answers["branch"]
    if choice.confidence < ABORT or choice.choice == "other":
        return {"leaf": node, "aborted": True, "confidence": choice.confidence}
    if is_leaf(choice.choice):
        return {"leaf": choice.choice, "aborted": False, "confidence": choice.confidence}
    return walk(choice.choice, state, client)

FAQ

Is Jev a drop-in for Hugging Face pipeline("zero-shot-classification")? Same job class (closed labels on text), different contract. You rewrite labels as Choice criteria and branch in code on probabilities / confidence.

Can I combine Jev probabilities with a classical model? TypeSafe’s “how to build” and AutoResearch cookbook describe using Jev outputs as features for a downstream model. That is a composition pattern, not a claim we measured.

Do we have independent BERT-vs-Jev numbers? No. Do not treat launch-post workflow evals as a classifier leaderboard.

What this page does not claim

Hub: Comparisons. Siblings: decision boundaries, triage workflow. Canonical API: docs.typesafe.ai.

Sources

Public TypeSafe or adjacent documentation only. No private claims.