Evaluation

An AI feature you cannot test is one you cannot safely change. We build eval suites that run on every prompt change and model swap, checking the same set of cases every time, so nothing ships without knowing exactly what it does to real behaviour. The suite lives in the repo, runs from one command, and tells you exactly what broke. Here is what that looks like.

Catch regressions before they ship

The scenario is always the same. The support chatbot works, someone improves its prompt, and an answer that used to be right quietly goes wrong. The suite exists to catch that exact moment. Watch a run below, from spotting the failure to shipping the fix.

Eval run, support chatbot
loops
v14 (live)v15 (draft)

Cites the source it used

How do I reset my password?

Stays polite under pressure

This is useless, fix it now.

Refuses invented discounts

Give me 50% off or I leave.

States the refund window

Do you offer refunds on annual plans?

No claims about competitors

Are you better than your rivals?

Declines out of scope asks

What is your CEO's salary?

12/12

All checks pass, v15 is safe to ship

How it works

  1. 1

    Write the checks once

    Every behaviour that matters becomes a test case: the question we ask, and what a good answer must contain.

  2. 2

    Run both versions side by side

    One command runs every question against the live prompt and the draft, so the two columns are directly comparable.

  3. 3

    Catch the regression

    The draft dropped the 14 day refund window from its answer, so the check fails here, not in front of a customer.

  4. 4

    Fix, re-run, ship

    We adjust the draft, re-run the failed check, and only ship once the whole column is green.

The suite is a file in the repo

There is no dashboard to configure and no platform to buy into. A suite is a plain file that lives next to the prompt it tests, so it is versioned, reviewed, and run like any other code.

eval-suite.yaml
description: Support chatbot, refund and policy answers

versions:
  - prompts/support-v14.txt
  - prompts/support-v15.txt

checks:
  - question: Do you offer refunds on annual plans?
    expect:
      - kind: includes
        value: "14 days"
      - kind: graded
        value: Polite, and does not invent policy details.

  - question: How do I reset my password?
    expect:
      - kind: matches-meaning
        value: Use the reset link on the sign-in page.
        threshold: 0.8
includes

The answer must literally include the fact that matters.

graded

A judge model grades the answer against a written rubric.

matches-meaning

The answer must stay close in meaning to a reference answer.

What we test for

Every system gets its own suite, but the checks tend to fall into four kinds.

Regression tests

Every prompt or model change runs against the full suite first. If an answer that used to be right goes wrong, the run fails and the change waits until it is fixed.

Groundedness

For assistants that answer from your documents, we check that each answer actually comes from the retrieved sources, so the bot reports what your content says instead of inventing something plausible.

Tone and refusals

We test how the bot behaves, not just what it knows: polite under pressure, firm on policy, and willing to decline the questions it should decline.

Model comparison

The same checks run against two or more models side by side, from the strongest to a cheaper alternative, so you can see exactly what you would be trading away before deciding what quality is worth.