Everyone wants to integrate AI into their application and workflows, but often times you're using the wrong tool for the task. Most AI work in your app isn't writing, it's deciding.
System 1 models are built for that, you ask typed questions and you get typed answers with probabilities in blazing fast times. Generative System 2 models like Claude and ChatGPT shine at jobs that need reasoning or words. Don't guess which one you need - test them on your own data and let cost, accuracy and speed decide.
The term comes from Daniel Kahneman's “Thinking, Fast and Slow”, which splits human thinking into two modes. AI models are now splitting the same way.
"I love Jev, and I set up a duplicate PBI checker for the TinaCMS backlog in order to reduce duplicates" - Adam Cogan
Figure: Duplicate PBI checker - on TinaCMS
Find it here: https://github.com/tinacms/tinacms/actions/workflows/dedupe-issue.yml
These are tendencies, not hard rules. The lines blur once you tune an LLM for short answers (more on that below).
| Jev | Reasoning Models (ChatGPT, Claude) | |
|---|---|---|
| Input | Data plus typed questions (yes/no, choice or score) | Text, images, files, audio |
| Output | Selected decisions with probabilities and confidence scores | Free-form text or code |
| Speed | Fast - about 100ms | Seconds to minutes |
| Cost | Input tokens only | Input, reasoning and output tokens |
| Best for | Classify, route, score, gate | Write, summarise, reason, plan |
It's a strong candidate when the answer fits in a dropdown.
Question (choice): Which queue? billing | bug | feature
Response: bug (0.91), billing (0.06), feature (0.03)
Figure: A System 1 model returns a typed answer and tells you how sure it is
The probabilities are the bonus. Auto-route anything above 0.9 and send anything below 0.6 to a person.
Figure: ChatGPT fighting Jev 🤖
Use it when the output is words or code, or when the model has to work out its own next step towards a goal.
Don't label the problem as System 1 or System 2 and then pick from the shortlist. Put the candidates side-by-side on your own data and pick the one that fits the job.
You can make an LLM behave like System 1 for the test. Set max_tokens to 1 and turn on logprobs, and you get one label back with a probability for each option. That's a fair fight on cost and speed, not a strawman.
Check your provider first. Not every API exposes logprobs. OpenAI does, so confirm yours before you build the test around it.
Use single-token labels. With max_tokens set to 1, you only see the first token. If "billing" and "bug" both start with "b", the probabilities mean nothing. Use labels like A, B, C or check each label is one token.
"Routing tickets is a dropdown question, so it's a System 1 job. Let's plug in Jev."
❌ Figure: Bad example - Picking a model because the task feels like System 1 or System 2
Test set: 100 real tickets (example numbers)
Decision: Jev for triage. Frontier accuracy isn't worth 15x the cost for this job.
✅ Figure: Good example - Measuring the candidates on your own data, then picking the one that fits
Re-run the test when a new model ships or your data changes. Today's winner won't be next quarter's.
Decide first, generate second. System 1 reads the input, your code branches on the answer, and only the cases that need words reach the LLM.
For example, take a website enquiry form. Jev answers three questions in a single call: Is this spam? Sales or support? Which state and country? Spam is dropped for a fraction of a cent. Everything else goes to Claude, which drafts a reply for the right person.
Add a confidence gate to your harness for the best of both. System 1 handles the answers it's sure about. Anything below your threshold escalates to an LLM, or to a person. You only pay LLM prices for the hard cases.
Jev launched in September 2026, so pilot it on a low-risk pipeline before you put it anywhere critical.