Verification for AI work
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 freeno account, no key. runs a worked example over twenty support answers, the invoice in front of them.
the exhibit
Exhibit A — billing support, one answer
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.
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
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.
A confirmed, non-stale expectation was evaluated against real captured output, and it held. The evidence is text the model did not write.
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.
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
A number, amount, date, email, link, identifier, quotation or name in the answer that is traced to the source material, or reported.
A template that never filled in. A refusal carried downstream as content. A raw error string in a field that should hold an answer.
An agent that hands every hard case to a human and books it as done. A 96 percent resolution rate with nothing resolved.
A subtotal and tax that do not reach the stated total. Two figures for the same thing. A due date before the issue date.
JSON wrapped in an apology, truncated mid-object, or replaced with prose. A table whose rows disagree on column count.
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.
One answer returned for many different questions, which is what a pipeline looks like when it stopped reading its input.
§3 the method
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.
error rate for LLM judges on bias probes in production, against roughly 80 percent agreement in a controlled test.
models consulted by silentgreen to decide a verdict. Every verdict is a text or numeric comparison.
§4 the loop
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.
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.
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.
npx github:harsh01369/silentgreen checkCreate a hosted project