Automated fact-checking for your publishing pipeline.
Fact-check articles, posts, and AI-drafted content automatically — before they go live. Lenz verifies every factual claim against real independent sources and returns verdicts your pipeline can act on: auto-approve what holds up, flag the rest for human review.
Human review doesn't scale with content volume. Automated verification does — and it leaves an audit trail.
The pipeline, end to end.
Lenz supplies the verdicts. Your gate applies your thresholds.
-
Draft lands
An article, a product description, an AI-written summary — anything headed for publication enters the pipeline.
-
Extract the claims
POST /extractsplits the draft into atomic, verifiable claims — opinions and meta-commentary skipped, pronouns resolved, compound sentences split. Free at 1,000/day. -
Verify each claim
POST /assessreturns a 3-model panel verdict per claim in ~5-10s; escalate low-confidence claims to the fullPOST /verifypipeline for a sourced verdict with citations. -
Your gate decides
Your pipeline applies your thresholds: high-confidence content auto-approves and flows through; flagged claims route to a human reviewer with the evidence attached. The decision stays yours — Lenz supplies the verdicts and the receipts.
-
Publish, with a record
What ships, ships verified — and every verdict keeps its full audit trail for editorial accountability.
Built for async volume.
Submit with webhook_url=... and Lenz POSTs the HMAC-signed result when each
verification finishes — no polling loops in your worker. Bulk fact-checking runs
through /assess at batch throughput; /verify handles the deep
checks. Idempotency keys ship by default, so a retry never double-spends.
A publishing gate in 12 lines
Python pip install lenz-io
# pre-publish gate: verify the draft, apply YOUR threshold from lenz_io import Lenz client = Lenz(api_key="lenz_...") claims = client.extract(text=draft).identified_claims r = client.assess(text=" ".join(claims)) flagged = [c for c in r.claims if c.verdict in ("False", "Misleading") or c.confidence == "low"] if flagged: send_to_review(draft, flagged) # your reviewer, with evidence attached else: publish(draft) # your gate, your call
TypeScript SDK too: npm install lenz-io. Webhooks replace the wait in production.
Accountability you can show.
Every verification ships the full trace — framing, sources graded for authority, citations, the adversarial debate, and the reviewers' reasoning. When someone asks how a published piece was checked, the answer is a record, not a recollection.
Pricing
Start free, no card required.
Free
$0
/extract · 1,000/day
/assess · 100/mo
/verify · 10/mo
Wire the gate in today, zero spend.
Pro
$99/mo
/assess · 5,000/mo
/verify · 500/mo
/ask · 1,000/mo
Self-serve. $999/yr annual.
Frequently asked questions
Between draft and publish: /extract splits the draft into verifiable claims, /assess or /verify checks each one, and your pipeline applies its own thresholds — high-confidence content flows through, flagged claims route to a human reviewer.
No. Lenz returns verdicts, scores, and confidence per claim, with cited sources. Your pipeline owns the approve-or-flag decision, using whatever thresholds fit your risk tolerance.
Verification runs asynchronously: submit with a webhook_url and Lenz POSTs the signed result when each finishes. /assess handles bulk throughput at ~5-10s per call; /verify runs the deep pipeline on the claims that matter.
Every verification ships a complete audit trail — sources, citations, the adversarial debate, and reviewer reasoning. Editorial accountability becomes a record you can show, not a process you describe.
Yes — the Lenz Workbench is a browser surface where a reviewer can submit claims, read the full evidence behind each verdict, and keep a library of checked claims. No code required.
By use case
Publish verified. Automatically.
Self-serve from day one. Free tier, no card required.