Skip to content
Back to Blog

Jev vs Clef: Choosing Between the Five Hosted Decision Models

The five models at a glance

ModelInputsQuestion typesCredits per question per blockBest first try
JevText, JSONChoice, Score, Noul1Source: system-one.dev pricing and model catalog · Verified 2026-10-12Text only, high volume, cost sensitive
Clef FlashText, JSON, imagesChoice, Score, Noul3Source: system-one.dev pricing and model catalog · Verified 2026-10-12Images, high volume, cost sensitive
ClefText, JSON, imagesChoice, Score, Noul6Source: system-one.dev pricing and model catalog · Verified 2026-10-12When Jev or Clef Flash is not good enough
Clef OmniText, JSON, imagesChoice, Score, Noul4Source: system-one.dev pricing and model catalog · Verified 2026-10-12Images, when Clef Flash is not good enough (rate between Clef Flash and Clef)
DeciderText, JSONChoice, Score, Noul1Source: system-one.dev pricing and model catalog · Verified 2026-10-12Text only, high volume, cost sensitive

Model IDs are not written down here — read them from GET /v1/models. Each model has its own page: Jev, Clef, Clef Flash, Clef Omni, Decider.

This page compares credit price and inputs only; it cites no benchmark scores. Which model is better on your task is something your own data has to answer.

How credits work: the same request on all five models

Formula:

Every 4KB is one block, and anything smaller still counts as one block. Cost = blocks × questions × the model rate.

  • Bytes are the UTF-8 size of the whole request — state, questions and options — not a character count.
  • A non-Latin character can take several bytes, so estimate non-English requests by bytes.
  • A partial block is charged as one block.

Example 1: 9,000 bytes, 2 questions (three 4KB blocks)

ModelCalculationCredits
Jev2 × 3 × 16
Clef Flash2 × 3 × 318
Clef Omni2 × 3 × 424
Decider2 × 3 × 16
Clef2 × 3 × 636

Example 2: 2,000 bytes, 1 question (one block)

ModelCalculationCredits
Jev1 × 1 × 11
Clef Flash1 × 1 × 33
Clef Omni1 × 1 × 44
Clef1 × 1 × 66
Decider1 × 1 × 11

New accounts start with 100 credits, and credits never expire. See pricing.

Choosing in three steps

Step 1: are there images?

With images, choose among Clef Flash, Clef Omni and Clef. Jev and Decider do not read images.

Step 2: text only — start with the lowest rate

For high-volume, cost-sensitive text work, start with Jev, Decider or Clef Flash.

Step 3: if results are not good enough, compare against another model

Run the same sample set through Clef and compare.

Switching models: change the model ID

All five models share one SDK and one request shape. Switching changes the model ID; questions and state stay as they are.

The code below is illustrative and has not been run. It follows @system-one-ai/core usage shown elsewhere on this site.

ts// Illustrative code, not tested
import { createSystemOne, choice } from '@system-one-ai/core';
import { systemOneAdapter } from '@system-one-ai/adapter-system-one';
import { createFetchTransport } from '@system-one-ai/transport-fetch';

const questions = {
  team: choice('Choose the team that should handle this message.', {
    billing: 'Payments, invoices, and refunds',
    support: 'Technical issues with the product',
    review: 'Needs a person; the request is incomplete or consequential',
  }),
};

// Model IDs come from GET /v1/models; never hardcode them
export async function compareModels(modelIds: string[], message: string) {
  const results = [];
  for (const model of modelIds) {
    const client = createSystemOne({
      apiKey: process.env.SYSTEM_ONE_API_KEY!,
      baseURL: process.env.SYSTEM_ONE_BASE_URL!,
      model,
      adapter: systemOneAdapter,
      transport: createFetchTransport(),
      timeoutMs: 30_000,
      maxRetries: 0,
    });
    const result = await client.evaluate({ state: { message }, questions });
    results.push({
      model: result.model,
      team: result.answers.team.choice,
      confidence: result.answers.team.confidence,
    });
  }
  return results;
}

Model IDs can change: read them from GET /v1/models at runtime instead of hardcoding.

Thresholds do not transfer

Each model produces its own probability distribution. A threshold tuned on one model has to be re-selected on labelled samples after a switch, then confirmed on held-out data. For how to choose thresholds, see an LLM-as-a-judge alternative.

Testing it yourself: 50–200 samples is enough to start

  1. Collect 50–200 real, labelled samples.
  2. Include hard cases, incomplete cases, and cases that belong to no category.
  3. Run every model over the same set.
  4. Look at misses and false positives separately, not just overall accuracy.
  5. Record the credit spend per model.

Then decide on results and cost together.

Want to try first? Run a sample (sign-in required).

Verified 2026-10-12

Frequently asked questions

Are Clef and Jev the same model?

No. They share a request format, but their behaviour and probabilities can differ.

Which one is most accurate?

There is no universal answer. Measure it on your own data.

Which has the lowest credit rate?

By rate: Jev 1, Decider 1, Clef Flash 3, Clef Omni 4, Clef 6.

Does switching from Jev to Clef require code changes?

Only the model ID. Questions and state stay the same, but thresholds need recalibration.

How do I select a specific model?

Pass the full model ID; omitting it uses the default model. Models can be updated, so re-verify thresholds after a version change.

Do they handle non-English input?

Jev handles non-English text but is less accurate than in English; test on your own non-English data first. For Clef Flash, Clef Omni, Clef and Decider, also start with your own data.

Where can I try them?

Run a sample (sign-in required). New accounts start with 100 credits.