Sign-up and API keys are open. Paid top-ups open soon.What changed

The EU alternative to Jev

Typed decisions from text. Made in the EU.

thinQit Dex reads your text or JSON once and answers typed questions: pick one option, rate on a scale, check yes or no. Every answer carries calibrated probabilities. The same input gives the same answer. It all runs in the EU, and nothing is stored by default.

Decision readoutIllustrative values
Support ticket, via email
Charged twice, still no answer
This is the third time I am writing. You charged my card twice for order 4471 and nobody replies. Fix it today or I cancel my subscription.
pick Which team?confidence 0.87
billing0.91
technical0.03
shipping0.02
other0.04
rate How urgent?rating 2.70
0 Can wait · 1 This week · 2 Within two working days · 3 Today
check Is the writer angry?confidence 0.88
p(yes)0.94
One call, three typed answers. Your code reads numbers, not prose.

Recorded runs

Dex against LLMs, on the same workflow.

Each pane replays a recorded run of the same multi-question workflow: Dex on one side, general LLMs on the other. Answers appear when they arrived. Time and cost tick as they did.

Dex against Claude Fable 5.1

39×faster

Dex, round trip 0.108 sClaude Fable 5.1 4.25 s+4.14 s

547×cheaper

Dex, round trip EUR 0.000033Claude Fable 5.1 EUR 0.0181+EUR 0.0181

Against the fastest LLM we measured (GPT-5.4 mini): 7.0× faster. Against the cheapest (GPT-4.1 mini): 11× cheaper.

Against Anthropic's Claude Fable 5.1 (claude-fable-5-1 (effort low; thinking cannot be disabled, thinking tokens billed as output)), answering the same 7 questions in one structured-output call. Medians of 10 runs, recorded 2026-09-25, AI agent guardrail check before a tool call, on Dex's own EU inference nodes. Claude Fable 5.1 list price: USD 10 input and 50 output per million tokens, read 2026-09-25 (source). Dex: round trip over the network, at its list price, output free. USD converted at Azure's rate (0.858664 EUR per USD, read 2026-09-25).

Race Dex against
Race / AI agent guardrail check before a tool call / recorded 2026-09-25

Dex, round trip: COST EUR 0.00003310, completed in 0.102 s. Claude Fable 5.1: COST USD 0.02112, completed in 4.17 s.

Each pane replays the median run. How we measured
Race results as a table
ContenderModelMedian timeCost of the replayed runRunsAgreement with reference
Dex, GPU compute (table only)Dex prototype, EU, Dex's own inference node0.077 sEUR 0.0000331010100.0%
Dex, round tripDex prototype, EU, Dex's own inference node0.108 sEUR 0.0000331010100.0%
GPT-5.4 minigpt-5.4-mini 2026-03-17 (reasoning_effort none), Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)0.762 sUSD 0.00092481088.6%
GPT-5.3 chatgpt-5.3-chat (gpt-chat-latest 2026-05-05), Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)1.039 sUSD 0.00232910100.0%
GPT-4.1gpt-4.1 2025-04-14, Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)1.139 sUSD 0.00222410100.0%
GPT-4.1 minigpt-4.1-mini 2025-04-14, Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)1.320 sUSD 0.00044481087.1%
Claude Haiku 4.5claude-haiku-4-5-20251001 (no thinking), Anthropic API, global routing (default inference_geo)1.439 sUSD 0.00163810100.0%
Claude Sonnet 5claude-sonnet-5 (thinking disabled), Anthropic API, global routing (default inference_geo)2.359 sUSD 0.00422010100.0%
Claude Opus 5.5claude-opus-5-5 (effort low; thinking cannot be disabled, thinking tokens billed as output), Anthropic API, global routing (default inference_geo)2.373 sUSD 0.0084481085.7%
Claude Fable 5.1claude-fable-5-1 (effort low; thinking cannot be disabled, thinking tokens billed as output), Anthropic API, global routing (default inference_geo)4.249 sUSD 0.021121085.7%

Agreement is the share of answers equal to the reference answers recorded with the race. The Dex pane is the slower of our two Dex measurements: the round trip over the network, like the LLM calls. GPU compute alone is in the table.

How we measured
  • 01One workflow per race: the same state and the same questions for every contender.
  • 02Each contender answered the workflow 10 times after one warm-up call. We report the median time and replay the median run.
  • 03LLMs answered all questions in one streamed structured-output call; each answer's time is when it was complete in the stream.
  • 04Dex read all questions in one pass, with no text generated. Two Dex timings: GPU compute on Dex's inference node, and the round trip over the network. The headline uses the round trip.
  • 05Time runs from sending the request to the last answer. Cost is tokens times list price, with each price's source and read date. Dex at its list price, output free.
  • 06Agreement compares each contender's answers with reference answers recorded with the race.
  • 07No number is typed in by hand. The page is built from the recorded result files.

Where Dex ran

Dex
Dex's own EU inference nodes, on dedicated EU hardware operated by thinQit
recorded
2026-09-25T16:40:19+00:00

Contenders and list prices

ContenderModel and regionInput / output per MtokPrice source
Dex, GPU computeDex prototype, EU, Dex's own inference nodeEUR 0.05 / 0Pricing
Dex, round tripDex prototype, EU, Dex's own inference nodeEUR 0.05 / 0Pricing
GPT-5.4 minigpt-5.4-mini 2026-03-17 (reasoning_effort none), Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)USD 0.75 / 4.5list price, 2026-09-25
GPT-5.3 chatgpt-5.3-chat (gpt-chat-latest 2026-05-05), Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)USD 1.75 / 14list price, 2026-09-25
GPT-4.1gpt-4.1 2025-04-14, Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)USD 2 / 8list price, 2026-09-25
GPT-4.1 minigpt-4.1-mini 2025-04-14, Azure OpenAI, Sweden Central resource, GlobalStandard deployment (global processing)USD 0.4 / 1.6list price, 2026-09-25
Claude Haiku 4.5claude-haiku-4-5-20251001 (no thinking), Anthropic API, global routing (default inference_geo)USD 1 / 5list price, 2026-09-25
Claude Sonnet 5claude-sonnet-5 (thinking disabled), Anthropic API, global routing (default inference_geo)USD 2 / 10list price, 2026-09-25
Claude Opus 5.5claude-opus-5-5 (effort low; thinking cannot be disabled, thinking tokens billed as output), Anthropic API, global routing (default inference_geo)USD 4 / 20list price, 2026-09-25
Claude Fable 5.1claude-fable-5-1 (effort low; thinking cannot be disabled, thinking tokens billed as output), Anthropic API, global routing (default inference_geo)USD 10 / 50list price, 2026-09-25

Jev is not in the race. Nobody working on Dex uses it. The cost and speed chart on the pricing page shows Jev only through TypeSafe's own published figures, with the source.

How it works

Chat models write. Dex decides.

A chat model writes an answer word by word, and your code has to parse the prose. Dex reads the text once, compares only the answers you allow, and returns numbers your code can act on.

The ticketIllustrative values

Support ticket, via email
Charged twice, still no answer
This is the third time I am writing. You charged my card twice for order 4471 and nobody replies. Fix it today or I cancel my subscription.
  • pickWhich team should handle {{ticket.body}}?
  • rateHow fast must we reply to {{ticket.body}}?
  • checkIs the writer of {{ticket.body}} angry?

Chat modelwrites

Thanks for reaching out, and I am sorry about the double charge on order 4471. This looks like a billing matter, so I would pass it to the billing team. It also sounds urgent, since the customer mentions cancelling, and they seem quite frustrated. I would suggest replying today with an apology and a refund timeline.

Free text, one token at a time. Your code still has to find the team, the urgency and the mood in it.

Dexdecides

pick teamconfidence 0.87
billing0.91
technical0.03
shipping0.02
other0.04
rate urgencyrating 2.70
0 Can wait0.01
1 This week0.06
2 Within two working days0.14
3 Today0.78
check angryconfidence 0.88
p(yes)0.94

Reads once. Only your labels can come back. Every answer has probabilities and a confidence.

  • 01Processed in the EU. Azure West Europe and Dex's own inference nodes on dedicated EU hardware operated by thinQit. Nothing is stored by default. Data handling
  • 02Same input, same answer. The same request bytes to the same GPU version give the same answers, byte for byte. Test against it. Determinism
  • 03Probabilities you can act on. Calibrated: 0.8 should be right about 8 times in 10. Below your threshold, an answer abstains. Calibration
  • 04You see who answered. Every response names the exact model version, the path that served it (gpu or fallback) and its calibration. served_by

Start

One call, three answers.

Sign up, create a free test key and make your first call today. Paid top-ups open soon.

curl https://api.thinqit.ai/v1/decide \
  -H "authorization: Bearer $DEX_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "state": { "ticket": { "body": "Charged twice for order 4471. Fix it today." } },
    "questions": {
      "team":    { "type": "pick",  "instructions": "Which team should handle {{ticket.body}}?",
                   "options": { "billing": null, "technical": null, "other": null }, "min_confidence": 0.5 },
      "urgency": { "type": "rate",  "instructions": "How fast must we reply?", "levels": ["Can wait", "This week", "Today"] },
      "angry":   { "type": "check", "instructions": "Is the writer angry?" }
    }
  }'
from thinqit_dex import Client, pick, rate, check

client = Client()  # reads DEX_API_KEY
decision = client.decide(
    state={"ticket": {"body": "Charged twice for order 4471. Fix it today."}},
    questions={
        "team": pick("Which team should handle {{ticket.body}}?",
                     {"billing": None, "technical": None, "other": None}, min_confidence=0.5),
        "urgency": rate("How fast must we reply?", ["Can wait", "This week", "Today"]),
        "angry": check("Is the writer angry?"),
    },
)
team = decision.pick("team")
route = "human" if team.abstained else team.choice
import { Client, pick, rate, check } from "@thinqit/dex";

const client = new Client(); // reads DEX_API_KEY
const decision = await client.decide({
  state: { ticket: { body: "Charged twice for order 4471. Fix it today." } },
  questions: {
    team: pick("Which team should handle {{ticket.body}}?", { billing: null, technical: null, other: null }, { min_confidence: 0.5 }),
    urgency: rate("How fast must we reply?", ["Can wait", "This week", "Today"]),
    angry: check("Is the writer angry?"),
  },
});
const team = decision.answers.team;
const route = team.abstained ? "human" : team.choice;

EUR 0.05 per million input tokens, at every volume. Output is free. Pricing