Cloudflare's Clairic Turns Data Extraction Into a Typed, Non-Generating Model Call
Cloudflare's Clairic extraction model returns typed values with confidence from text and images in one non-generating pass, and its measured cascade beat an all-LLM pipeline 3.2x at 49% lower cost.
Cloudflare has shipped a preview of a genuinely different kind of model. Clairic, available now on Workers AI as @cf/cloudflare/clairic, is what Cloudflare calls a System One extraction model: it reads unstructured text and up to four images, and returns typed values — text spans, numbers, dates, durations, lists, calibrated estimates and forecasts — without generating a single output token.
That last part is the whole story. Every answer is a value of the type you declared, or null. There is no JSON to parse, no schema to validate, no plausible-looking hallucinated tracking number. Missing fields come back null with a p_null probability and a guess showing what the model would otherwise have picked.

What you can call it with
A request is a state (the text to read, plus optional images) and a map of typed fields. Seven field types cover the ground: text (a span with character offsets), number, date/time/datetime, duration, list, estimate (a distribution inside your declared bounds, on your step grid, with a median and 80% interval), and forecast (one estimate per future step of a series).
From the official docs:
const response = await env.AI.run("@cf/cloudflare/clairic", {
state: "Invoice INV-2291 from Northwind Supply, issued 2026-09-02, net 30. 4 pallets at $250.00 each, shipping $80.00. Contact: Dana Ruiz, Priya Shah.",
fields: {
invoice_number: { type: "text" },
due_date: { type: "date", instructions: "Issue date plus the net payment days" },
total: { type: "number", decimals: 2, unit: "USD", instructions: "Amount due including shipping" },
contacts: { type: "list", items: "text" },
po_number: { type: "text", instructions: "Purchase order number" },
days_to_pay: { type: "estimate", min: 0, max: 120, step: 1, instructions: "Days after issue until this invoice is paid" },
},
});
The model computes values that aren’t literally in the text: it adds the pallet total plus shipping to return 1080.00 for total, works out the due date from issue date plus net-30, lists both contacts as spans, and returns po_number as null when no PO exists. Every scalar answer carries p_null and a confidence score, so you can route low-confidence answers to review instead of downstream automation.
Because there are no output tokens, pricing is input-only: $0.10 per million input tokens, with a 65,536-token context window and vision support, in preview. Field count has no upper limit — fields that don’t fit in one pass are split across parallel passes that each see the whole input and then merge.

The benchmark that matters
Cloudflare ran a damaged-product support claim through two pipelines: Clairic extracting facts, Clef deciding refund-vs-repair, and GLM-5.3 writing the reply — versus GLM-5.3 doing all three steps.
| Step | Clairic → Clef → GLM-5.3 | GLM-5.3 for every step |
|---|---|---|
| Extract | 0.46 s | 16.1 s |
| Decide | 0.22 s | 21.9 s |
| Reply | 18.6 s | 16.4 s |
| End to end | 19.3 s | 61.7 s |
| Cost / million claims | $6,032 | $11,740 |
That’s roughly 3.2x faster and 49% cheaper. The cascade also proved more reproducible: Clairic’s repair-cost estimate was identical across runs, while GLM-5.3’s changed every time ($250, $250, $220, with different ranges). Cloudflare also reports that Gemma 4 and Qwen failed the extraction task outright in the all-LLM version, unable to deduce values like repair cost from the inputs.
The architectural side effect is security-relevant: the LLM never sees the raw email, only typed values and the final decision — which shrinks the prompt-injection surface, since untrusted text stops flowing into the generative step.
Honest limits, stated by the vendor
Cloudflare is unusually direct about where the early checkpoint struggles:
- Multi-step arithmetic is weak. One- and two-step math (totals, differences, date arithmetic) is reliable; longer chains and table aggregation are not. Their advice: let Clairic predict values and let code do the math.
- Estimates need evidence. It estimates well from comparables, history or descriptive text; without evidence, intervals get vague.
- Calibration is measured, not guaranteed. Intervals can run narrow on unfamiliar data.
- Forecasting is basic — general pattern matching, not a replacement for dedicated time-series models. In a 21-day TSA checkpoint forecasting test, forecasts were off 3.3% on average and 17 of 21 actuals landed inside the 80% interval; three of the four misses fell on Columbus Day weekend, a holiday the series itself didn’t show.
Open weights are promised but not yet shipped; the endpoint is an early checkpoint expected to improve.

Why this matters for agent builders
Structured-output calls to frontier LLMs are one of the biggest line items in agent budgets — every invoice, claim, ticket and log line gets a generative call just to produce a few typed fields. Clairic turns that sub-step into a single-pass, input-only-priced call with built-in confidence routing. If the pattern holds beyond Cloudflare’s own benchmark, the practical move is the same one our cost-per-completed-task analysis recommends: measure the finished job, not the token price, and route cheap specialized models for the steps that don’t need reasoning. Clairic is a preview, and the open-weights promise is what would make it more than a Cloudflare lock-in — but the typed-extraction lane it opens is worth testing now.