<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2" -->

---
title: Jev vs structured outputs: when to use each | daily.dev
description: Choosing between schema-constrained LLM outputs and Jev's Choice primitive depends on whether an application just needs a typed answer or also needs a...
canonical: https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Jev vs structured outputs: when to use each | daily.dev
og:description: Choosing between schema-constrained LLM outputs and Jev's Choice primitive depends on whether an application just needs a typed answer or also needs a...
og:url: https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2
og:image: https://api.daily.dev/og/posts/Zh68UTdZ2.png
og:image:alt: Jev vs structured outputs: when to use each
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Jev vs structured outputs: when to use each

**[Flavio Copes](https://daily.dev/sources/flaviocopes)** · 10 min read · 0 upvotes · 0 comments

## Summary

Choosing between schema-constrained LLM outputs and Jev's Choice primitive depends on whether an application just needs a typed answer or also needs a probability distribution over possible answers. JSON mode only guarantees valid JSON; schema-constrained structured outputs additionally restrict the response to a declared shape with an enum like billing, technical, or other. Jev's Choice primitive returns a selected option plus a probability for every option, and a derived confidence score. The piece walks through a support-ticket routing example, including a policy function that only auto-routes when probability exceeds 0.9, and argues teams should measure automatic coverage alongside accuracy rather than comparing raw confidence values between systems.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://flaviocopes.com/jev-structured-outputs>

## Questions this post answers

### What's the difference between JSON mode and schema-constrained structured outputs in LLM APIs?

JSON mode only guarantees a model produces valid, parseable JSON, with no guarantee about which properties or values appear. Schema-constrained structured outputs additionally restrict the response to a declared shape, such as an enum of allowed department values, within the provider's supported schema features. A schema still doesn't define the business meaning behind categories, so prompts must explain what each category means.

_Teams deciding between JSON mode and schema validation for LLM routing can compare approaches like this on daily.dev._

### How does Jev's Choice primitive calculate a confidence score?

Jev's Choice confidence is calculated from the probabilities it returns for every offered option, measuring how far the top option's probability sits above an even split, adjusted for the number of options available. This differs from an arbitrary numeric confidence field added to a generic LLM schema, which only constrains the output shape without defining what the number measures against real mistakes.

_Anyone evaluating probability-based routing models against plain LLM confidence fields can dig into comparisons like this on daily.dev._

### How should I measure whether an automatic routing model is good enough to deploy?

Measure automatic coverage (how many cases the system handles without review) alongside accuracy, since reporting correctness alone can hide a system that only handles easy messages. Compare two approaches at the same acceptable error rate or the same coverage level, keep a held-out test set separate from the examples used to tune prompts and thresholds, and include validation and retry time in end-to-end latency measurements.

_Developers designing evaluation criteria for automated decision systems can find workflows like this on daily.dev._

## Similar posts on daily.dev

- [How to classify text with Jev](https://daily.dev/posts/how-to-classify-text-with-jev-rnjbtfjge) · Flavio Copes · 0 upvotes · 0 comments
- [Jev Doesn't Write Text. It Returns Probabilities.](https://daily.dev/posts/jev-doesn-t-write-text-it-returns-probabilities--3tcrb0ghc) · DEV · 7 upvotes · 0 comments

---

Tags: [#llm](https://daily.dev/tags/llm), [#jev](https://daily.dev/tags/jev)

[View this post on daily.dev](https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Jev vs structured outputs: when to use each","url":"https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2"},"datePublished":"2026-10-21T13:11:29.407Z","dateModified":"2026-10-21T13:12:01.976Z","description":"Choosing between schema-constrained LLM outputs and Jev's Choice primitive depends on whether an application just needs a typed answer or also needs a...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d90136382b2afa7b836023c2743010e1?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d90136382b2afa7b836023c2743010e1?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Flavio Copes","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Flavio Copes","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/1f2dbd275797411bbd37bfdaaf0951a9","url":"https://daily.dev/sources/flaviocopes"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"llm,jev","timeRequired":"PT10M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Flavio Copes","item":"https://daily.dev/sources/flaviocopes"},{"@type":"ListItem","position":3,"name":"Jev vs structured outputs: when to use each"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/jev-vs-structured-outputs-when-to-use-each-zh68utdz2#faq","mainEntity":[{"@type":"Question","name":"What's the difference between JSON mode and schema-constrained structured outputs in LLM APIs?","acceptedAnswer":{"@type":"Answer","text":"JSON mode only guarantees a model produces valid, parseable JSON, with no guarantee about which properties or values appear. Schema-constrained structured outputs additionally restrict the response to a declared shape, such as an enum of allowed department values, within the provider's supported schema features. A schema still doesn't define the business meaning behind categories, so prompts must explain what each category means. Teams deciding between JSON mode and schema validation for LLM routing can compare approaches like this on daily.dev."}},{"@type":"Question","name":"How does Jev's Choice primitive calculate a confidence score?","acceptedAnswer":{"@type":"Answer","text":"Jev's Choice confidence is calculated from the probabilities it returns for every offered option, measuring how far the top option's probability sits above an even split, adjusted for the number of options available. This differs from an arbitrary numeric confidence field added to a generic LLM schema, which only constrains the output shape without defining what the number measures against real mistakes. Anyone evaluating probability-based routing models against plain LLM confidence fields can dig into comparisons like this on daily.dev."}},{"@type":"Question","name":"How should I measure whether an automatic routing model is good enough to deploy?","acceptedAnswer":{"@type":"Answer","text":"Measure automatic coverage (how many cases the system handles without review) alongside accuracy, since reporting correctness alone can hide a system that only handles easy messages. Compare two approaches at the same acceptable error rate or the same coverage level, keep a held-out test set separate from the examples used to tune prompts and thresholds, and include validation and retry time in end-to-end latency measurements. Developers designing evaluation criteria for automated decision systems can find workflows like this on daily.dev."}}]}
```

