The provenance gate around your conversational engine
The moment a publisher answers a reader from its own archive, it owns the answer, and there is no Section 230 shield for what your system generates. The Standards Desk is the layer around your conversational engine: it grounds every published sentence to a real archive passage, verifies every quote verbatim, and routes anything it cannot prove to the standards desk instead of to readers, with a one-click audit receipt for each answer.
0
Ungrounded answers that can auto-clear
Deterministic gate invariant, unit-tested
6/10
Published without a human touch on the eval set
3 auto-cleared plus 3 sentence-pruned (this eval set's result)
200
Synthetic archive articles, 2014 to 2025
The Riverbend Ledger corpus, fully synthetic, 13 years
This is a runnable demo. The Riverbend Ledger, Mayor Reyes, and every article are labeled synthetic, and there are no live accounts. The deterministic policy gate, the verbatim-quote rule, and the 13 passing tests are real.
Volume without verification is exactly how a masthead ships a quote that was never said.
Search is no longer sending readers to the story. AI Overviews now appear on 48% of Google searches (theStacc via Search Engine Land, 2026), publisher search traffic fell 33% year over year to November 2025 with a further decline near 43% expected by 2029 (Reuters Institute Trends 2026), and the Daily Mail measured desktop click-through down 89% when an AI Overview surfaced above its link. The pressure is to answer readers directly, from the archive, under the masthead.
The trouble starts the instant you generate that answer. There is no Section 230 shield for content your own system produces from your own archive: you own it. The Washington Post made that concrete when its Ask The Post AI project shipped a podcast in late 2025 that invented quotes, misattributed sources, and inserted commentary as the paper's editorial position, a failure that surfaced when the standards editor's Slack leaked (Semafor, 2025). The technical root cause was a missing citation-verification step.
A stronger model does not fix this. The drafter is the wrong place to look, because a court does not care how confident the model was; it cares whether the quote was real and whether the archive actually said it. The durable answer is a separate layer that grounds every claim in the archive, enforces quotes verbatim, and is honest about what it cannot support.
The parts that carry the guarantee are deterministic Python. The agents advise. The gate decides.
A reader question runs a six-stage pipeline, live and offline: a temporal-planner decomposes it into time windows, a hybrid retriever (BM25 plus a local embedding) pulls candidate passages, a coverage floor abstains if nothing clears the score threshold, the answerer writes a strictly grounded answer with inline [S#] citations, a deterministic verbatim-quote check matches every quoted string against its cited source, a provenance auditor grades each claim, and a deterministic policy gate issues one decision. Every stage lights up in a console that streams its own latency, so nothing is a black box.
The temporal-planner, answerer, and provenance auditor are three Pydantic AI agents with typed per-claim verdicts. They are provider-swappable (default claude-opus-4-8), and the same pipeline runs end to end with no key through a deterministic offline stub or a keyless local Claude bridge, so the gate stays functional either way.
The trust boundary sits outside the agents. The verbatim-quote rule, an exact string match against the cited source text, and the policy gate are plain Python. Publish-safety never depends on an LLM's self-report, because a buyer needs a provable, auditable decision, not a model's say-so.
Every answer resolves to exactly one decision. The two that publish do so only when the answer is fully grounded; the two that do not are honest about why.
| Gate decision | What it means | Decided by |
|---|---|---|
| AUTO-CLEARED FOR PUBLICATION | Every claim grounded, every quote verbatim, coverage above the floor | Deterministic policy gate, no human touch |
| PUBLISHED AFTER PRUNING | An unsupported sentence is dropped and the remaining grounded answer clears | Deterministic, counts as published without a human touch |
| HELD FOR STANDARDS-DESK REVIEW | A fabricated or non-verbatim quote, or an unsupported claim | Deterministic, blocked from readers and routed to the queue |
| OUTSIDE COVERAGE | Retrieval clears nothing above the score floor | Deterministic, honest abstention rather than a guess |
The one deterministic, unit-tested guarantee is the gate invariant: no answer with an unverifiable quote or an unsupported claim is ever auto-cleared. On top of that, one click exports a JSON audit receipt per answer, recording the query, the decomposed sub-questions, the retrieved sources with article id, date, and url, the published answer, per-claim verdicts with evidence passages, per-quote verbatim checks, the gate decision and reason, the engine and model, and a UTC timestamp. A kill switch on the dashboard pauses the reader widget while the back end stays live.
Every image below is a screenshot of the running app, produced by the live pipeline over the synthetic Riverbend Ledger archive. The publisher, the mayor, and the articles are labeled synthetic.
Asked how Mayor Reyes's stance on the downtown density ordinance changed from 2014 to 2025, the temporal-planner splits the question across time windows and the answerer assembles a chronological narrative, from "I will not trade Riverbend's character for towers" in 2014 to "I changed my mind, and I'd do it again" in 2025. Every sentence carries an inline [S#] citation, every quote passes the verbatim check, coverage clears the floor, and the gate reads AUTO-CLEARED FOR PUBLICATION. This is the longitudinal synthesis a single-passage widget cannot produce.
The Grounded To panel is not decoration. Each [S#] resolves to the real archive passage it was drawn from, with its date and archive reference, so an editor can read the source behind any sentence before it publishes. The 2019 citation, for example, opens to the actual article in which Reyes reversed her earlier position and said "Our downtown has to grow up, not just out." Grounding is what makes the answer defensible, not just fluent.
Asked what Mayor Reyes promised developers about the riverfront parcel, the archive records no such promise (one article notes the parcel "was not on the agenda"). The answerer confabulates exactly as a vanilla RAG model would, inventing the line "We're committed to moving riverfront parcel forward for the developers." The verbatim-quote check finds that string in no cited source, claim-grounding coverage lands at 50%, and the gate holds the whole answer. The reader sees only HELD FOR STANDARDS-DESK REVIEW, not shown to readers. This is the Washington Post failure, prevented before publication.
On the Standards Desk dashboard, the held answer is audited claim by claim: one claim Supported, one only Partial, and the offending quote flagged in red as NOT verbatim in any cited source (fabricated or misquoted). The gate decision and its 50% coverage are recorded, and the answer lands in the review queue with its held draft and an exportable JSON receipt. The offending span is highlighted so an editor knows exactly what to fix, and nothing reached a reader in the meantime.
Asked for Riverbend's 2026 public transit budget, retrieval finds nothing above the score floor (top relevance 0.12 against a floor of 0.1784), so the pipeline skips the answerer entirely and the gate returns OUTSIDE COVERAGE. The reader is told plainly, "I don't have anything in this archive that answers that," rather than being handed a confident guess. Honest abstention is a feature of the gate, not a failure of the model.
One toggle pauses the reader widget while the back end stays live, so an editor can stop new reader answers instantly during a breaking story or an incident without taking the archive offline. Combined with the per-answer audit receipt, this is the operable governance surface a standards desk actually needs: pause the front, keep the evidence, review the queue.
The Standards Desk is not another conversational engine. It is the layer that decides what is safe to publish under your masthead.
| Dimension | Vanilla vector-RAG widget | The Standards Desk provenance gate |
|---|---|---|
| Fabricated quote | Ships under your masthead, uncaught | Caught by a verbatim string match, held from readers |
| Unsupported claim | Published as fact | Pruned, or the whole answer is held, with coverage measured |
| A question spanning years | A single-passage answer or nothing | Planned across time windows, assembled chronologically with citations |
| Nothing in the archive | A confident guess | OUTSIDE COVERAGE, an honest abstention |
| Who decides to publish | The model's confidence | A deterministic policy gate in plain Python |
| Audit trail | None | A one-click JSON receipt per answer |
Neither. The Standards Desk is a provenance gate that wraps whatever conversational engine you already run over your archive. It does not compete with Google, Perplexity, or a newsroom search box. Its job is to decide, deterministically, which generated answers are safe to publish under your masthead, which get an unsupported sentence pruned, and which are held for a human, and to leave an audit receipt either way.
The answerer can and does confabulate. Our quote-trap example shows it inventing a quote a vanilla RAG widget would have published. What The Standards Desk stops is that answer reaching a reader. Every quote is matched verbatim against its cited source and every claim is graded against a real passage, so a fabricated quote or an unsupported claim is caught and routed to the standards desk before publication rather than after a correction.
There is no Section 230 shield for content your own system generates from your own archive, so a fabricated quote is your liability, not a third party's. The gate never auto-clears an answer that has an unverifiable quote or an unsupported claim, and it exports a JSON audit receipt recording every claim, its cited source and verdict, and every verbatim-quote check. You either publish an answer you can prove, or you never published it.
No, because safe to publish is a governance property, not a model property. A libel plaintiff does not care how confident the model was; they care whether the quote was real and whether the archive actually said it. The durable value, grounding every claim, enforcing quotes verbatim, and abstaining honestly, holds at any model quality, which is why the verbatim-quote rule and the policy gate live in plain Python outside the agents.
It is a runnable demo that proves the mechanism, not a deployment. The Riverbend Ledger, Mayor Reyes, and all 200 articles from 2014 to 2025 are labeled synthetic, with no real publisher data and no live accounts. What is real: the deterministic gate, the verbatim-quote rule, the temporal planning, retrieval, and the 13 passing tests all run exactly as shown, fully offline. Production entity resolution, the temporal knowledge graph, and CMS sync are stubbed as fixtures and named as such.
One click exports a JSON receipt per answer: the query, the decomposed sub-questions, the retrieved sources with article id, date, and url, the published answer, a per-claim record of the claim, cited source, verdict, and evidence passage, a per-quote record of the quote, its verbatim match, and its source, the gate decision and reason, the engine and model, and a UTC timestamp. What a manual session audit might take an hour to reconstruct exports in seconds.
The research behind this demo — the architecture, the verification design, and the enterprise blueprint.
Full solution
Explore the Conversational AI for Publishers solution →The provenance gate is the hard part. We build it.
If your newsroom is working out how to answer readers from the archive without publishing a quote that was never said, we would genuinely like to hear how you are thinking about it. The problem is industry-wide and the answers will be too.