Back to blog
Announcement · Product

Introducing Benchwright

Evals are the unit tests of AI. Build and run them on Benchwright. Ship AI on scores, not vibes.

The first version took an afternoon. You wired in an LLM, wrote a prompt, and had something useful working by dinner.

Six months later: forty prompt edits, three model swaps, one regression you can't trace. Is the current version better than the old one? Eyeballing a few outputs only gets you so far.

At some point, you make a judgment call and ship.

The problem: the uncertainty moved

Traditional software keeps its uncertainty at the edges: user input, networks, flaky dependencies. Tests mock those away and assert against a deterministic core. Same input, same output.

LLM applications invert that. The code around the model is deterministic; the model is not. It decides what to do, which tool to call, how to phrase the answer. The same request can take a different path next run, and one prompt tweak moves outputs everywhere. There is no single expected result for a green check to prove.

The statisticians got here first: all models are wrong, but some are useful. You can't guarantee every output, but you can measure how often the system behaves as intended. Accuracy is how often it gets the task right; precision is how much to trust that number. Improving the system raises the first, more samples the second. Instead of a pass/fail assertion, you get a score, a confidence interval, and a baseline.

Traditional software Agentic software core deterministic edges uncertainty at the edges user input · dependencies · environment core probabilistic edges uncertainty at the core temperature · top-p · seed · logprobs · autoregression
The model's flexibility comes from the same probabilistic behavior that makes ordinary unit tests insufficient.

Large AI labs have teams dedicated to evaluation. Most product teams do not. Whether you are building a support tool, a contract summarizer, or a product built around a model, every change raises the same questions:

  • Can we ship this?
  • Which model should we use?
  • Will we notice when it gets worse?

Answering them properly takes real infrastructure: a harness, isolated sandboxes, reliable graders, secure key handling, limits on what a runaway task can spend. That is its own roadmap item, so it gets postponed while the product keeps changing.

The solution: eval-driven development

Eval-driven development applies test-driven discipline to probabilistic software: you still define correct behavior, but measure it across a dataset instead of checking one exact output. A demo shows the system can work; an eval says how reliably.

The useful part is the loop. Change a prompt, model, or retrieval step, then run the eval against a pinned baseline. Clear the gate and it becomes the new baseline; miss it and the change never ships. Run that on every pull request and evaluation becomes part of development: regressions tie to specific changes, improvements come with evidence.

pass fail · never ships compare raise 1 · Change prompt · model · retrieval 2 · Measure the eval runs in CI 3 · Gate score vs baseline 4 · Ship merge · baseline rises pinned baseline rises as product improves
With a gate in place, larger experiments become less risky. A bad model swap or prompt rewrite fails before it reaches production.

A single score can mislead you. Optimize one number hard enough and the system finds ways to raise it without improving the product: a support bot judged on ticket resolution learns to close tickets by deflecting customers, and churn gets worse.

This is Goodhart's law: once a measure becomes a target, it stops being a good measure. A cleverer metric doesn't fix that; evaluating from several angles does, so a gain on one axis can be checked against the others.

Start with accuracy, cost, and latency. Retries and longer reasoning may raise accuracy, but the effect shows up in cost and response time; a cheaper model lowers the bill, and the quality score says whether that was worth it. Together they make the compromises visible. A test suite, not any one test, defines correctness, and Benchwright applies that discipline to AI on every change.

the metric you optimized ▲ 94% ticket resolution · 5 months climbing the thing it stood for ▼ 2× churn renewals · the same five months one push
The watched metric improved for five months while the customer outcome moved in the opposite direction.

The product: an AI benchmarking factory

Benchwright is a factory for evals. You describe what you want to measure; it finds the benchmark, creates the sandboxes, runs the tasks, and grades the outputs.

For a standard benchmark, a run takes one call. The catalog includes hundreds: MMLU for broad knowledge, GPQA Diamond for expert reasoning, AIME for competition math, LiveCodeBench for coding, WebArena for live environments, MMMU for images and documents. Launch any of them from the CLI or a POST request:

benchwright run "GPQA Diamond" --model qwen/qwen3-32b@openrouter
curl https://benchwright.ai/v1/runs \
  -H "Authorization: Bearer $BW_KEY" \
  -d '{
    "request": "GPQA Diamond",
    "model": {
      "model": "my-model",
      "base_url": "https://your-endpoint.example.com/v1/chat/completions",
      "api_key": "$MODEL_KEY"
    }
  }'

The AI workforce

Operators do the work inside the factory: AI agents that take a plain-English goal, find the right benchmark, run it against your model, and investigate failures along the way.

Public benchmarks tell you about a model in general. Your product succeeds or fails on a much narrower set of scenarios. A minimum viable evaluation covers that gap: hand the operator the cases that matter most and it turns them into a small graded dataset. It won't cover everything, but it runs on every change and grows with the product.

scored reads it an answer you can defend YOUR GOAL ship the support agent the scenarios that matter: · resolve refund tickets · answer within policy · escalate the hard cases you bring these; the factory turns them into a suite SCHEDULE the ship suite Refund-policy QA ≥90% Tone & safety ≥95% Tool-use ≥85% Escalation routing ≥88% 4 benchmarks · 200 samples priority: paid RUN in parallel on the cluster refund 94% ✓ tone 98% ✓ tool 91% ✓ escal 93% ✓ each task is a sandbox; every output graded on your scenarios INSPECT this run vs your thresholds Refund-policy 94% ≥90 Tone & safety 98% ≥95 Tool-use 91% ≥85 Escalation 93% ≥88 all four clear their threshold ANSWER SHIP ✓ 4 / 4 benchmarks over threshold graded on the scenarios that matter a verdict across the suite, not one number
You define the goal and the important scenarios. The operator builds the suite, runs it, and returns a result.

Repeat a run on every change and you get a record: what is safe to ship, which model performs best, whether the product is drifting.

Benchwright is live, and the free tier covers the full workflow: pick a benchmark that resembles your workload, point it at your model, and run your first evaluation.

Prompts will keep changing, and so will the models behind them. What matters is knowing whether each change made the product better, before you ship.