Verification for AI work

Nobody checked whether the AI did the job.

silentgreen reads what an agent, a RAG pipeline or an automation produced and tells you what it can prove, what it can disprove, and what cannot be settled either way. It never asks a model to grade a model.

npx github:harsh01369/silentgreen checkStart free

no account, no key. runs a worked example over twenty support answers, the invoice in front of them.

scroll

the exhibit

One answer, checked against its source. Not against another model.

Exhibit A — billing support, one answer

The answerpipeline: resolved

Your outstanding balance is £742.60, including VAT of £123.77, and it is due on 2026-09-30. If you need a copy of the invoice, email finance@fernweh.example and the team will send it over.

The invoice it was given
Invoice INV-2026-0412 for Fernweh Supply Ltd
Issued 2026-08-14, due 2026-09-13
Billing contact: accounts@fernweh.example
Subtotal £571.00
VAT £114.20
Total due £685.20
Portal: https://billing.fernweh.example/inv/2026-0412

Fluent, polite, booked as a resolved ticket. Every automated quality check it was put through passed.

§1 the verdicts

There is no pass. There are three verdicts.

Every check returns one of these. The third is the one the rest of this market folds into a green tick, and it is the reason this one exists.

proven

A confirmed, non-stale expectation was evaluated against real captured output, and it held. The evidence is text the model did not write.

violated

A figure, a date, a link or a name in the answer appears nowhere in the material it was given. Or the answer is empty, refused, unrendered, deferred, or contradicts itself.

unproven

The evidence to decide is not there. Sources were not captured, the check went stale when the pipeline changed, or there were too few checkable facts. It is never coloured green and it never raises an alert.

§2 the register

What a green tick hides

fabricated fact

A number, amount, date, email, link, identifier, quotation or name in the answer that is traced to the source material, or reported.

unrendered output

A template that never filled in. A refusal carried downstream as content. A raw error string in a field that should hold an answer.

deferral as resolution

An agent that hands every hard case to a human and books it as done. A 96 percent resolution rate with nothing resolved.

self-contradiction

A subtotal and tax that do not reach the stated total. Two figures for the same thing. A due date before the issue date.

broken structure

JSON wrapped in an apology, truncated mid-object, or replaced with prose. A table whose rows disagree on column count.

facts wired up wrong

An amount taken from one invoice and a due date from another, when both strings are present in the source. Atom checking misses this; this does not.

the pipeline stalled

One answer returned for many different questions, which is what a pipeline looks like when it stopped reading its input.

§3 the method

Why not just have a model check the model

Because that is marking homework with the same pen. Judges score their own family’s output higher. Top-tier judges fail to hold a consistent preference on roughly a quarter of hard cases under repeated scoring.

One 2026 post-mortem: agents “learned to produce confident-sounding but factually incorrect responses because the evaluation framework couldn’t distinguish between confident correctness and confident fabrication.”

So silentgreen asks a smaller question that has an answer. Not is this good, but does every checkable fact appear in the material the model was given. No model is consulted, which is exactly why the verdict can be trusted about a model.

50%+

error rate for LLM judges on bias probes in production, against roughly 80 percent agreement in a controlled test.

0

models consulted by silentgreen to decide a verdict. Every verdict is a text or numeric comparison.

§4 the loop

Record, check, forward

01record

Wrap the call your agent already makes, or drop a LangSmith / Langfuse / OpenTelemetry export in. One JSON object per task: what was asked, what it was given, what came back.

02check

silentgreen extracts every checkable atom and traces it to the source. It reports fabrications, unrendered output, deferrals booked as resolutions, contradiction and broken structure. Local, in CI, or push a batch to the API.

03forward

It writes a self-contained evidence record: the coverage statement, the findings, and a hash computed from the batch and the check versions. The document you hand to a client or an auditor.

Point it at the last batch you shipped. See what it catches.

npx github:harsh01369/silentgreen checkCreate a hosted project