Don't trust us. Check us.

Every published Local Desk edition carries an evidence passport: the verified stories with their retained sources, the independent verification record, the automated QA verdict, the delivery outcome and the audit trail — all sealed with a hash. This page is the tool that recomputes that hash in your browser. No login, no server trust, no "take our word for it".

The verifier

Paste a run ID (from an edition page or a published reel's "Sources and credits" link) and the verifier fetches that edition's public passport, recomputes its seal locally with the Web Crypto API, and compares it to the seal the service shipped. Green means the bytes you received are byte-for-byte what the service sealed at read time — any tamper in transit or storage breaks it. Red means do not trust the copy.

The standard

What makes an edition verifiable

1. Research with retained sources

Stories start from hosted web search over your city and region. The citations and page text are retained, not summarized away — every claim can be traced to a real page.

2. Independent verification

A separate pass checks facts, dates and local relevance against the configured geography, radius and source restrictions. Quotes are checked against independently retained page text. Unverified claims are discarded, not guessed.

3. Editorial approval

A human approves the exact copy before production. The desk produces; the newsroom remains the publisher of record.

4. Fail-closed QA

Automated quality checks run on the final file: narration, visual composition, captions. A failed verdict blocks publication and re-runs; it never publishes a best guess.

5. The evidence passport

At read time the service assembles the passport — verified stories, quality verdicts, avatar origin, delivery links, audit journal head — and seals it with a SHA-256 over the exact bytes served. The JSON is at /editions/<run_id>/passport.json.

6. The audit chain

Every operator action lands in an append-only journal where each entry carries the hash of the one before it. Editing history breaks the chain. manage.py verify-audit recomputes it end to end.

The cost math, published

Other platforms rent quality from vendors per render. Local Desk runs verification-grade production on its own GPU: an on-demand instance that cold-starts for the daily run and stops when idle.

Per 60-second editionVendor- rentedLocal Desk self-hosted
Avatar render$3.60~$0.79 GPU time
Research & verificationAPI pass-throughAPI pass-through
Provenance & QAUsually noneIncluded
Evidence passportNot offeredPublic, machine-verifiable

Savings compound: ~$0.79 vs ~$3.60 per edition is 5 editions a day, 30 days — roughly $495/month kept without cutting a single quality gate. The GPU starts on demand and stops when idle, so quiet newsrooms pay for minutes, not months.

For newsrooms deciding

If you publish with Local Desk, your audience gets the receipts, not just the reel: the reel's caption links to your public edition page, the edition page carries the verification record, and the machine-readable passport is there for any auditor, aggregator or agent. If a competitor can't hand you that, ask them why.

Start a desk See the product

For agents and machines

A news wire you can verify programmatically.

Every endpoint is public, cached and stable. Consume it, cite it, or audit it — no account required:

SurfaceEndpointWhat it returns
Verify toolGET /verify.pyOne-command Python verifier: recomputes the seal and extracts the RFC 3161 timestamp token (python verify.py <run_id>)
Per-story factsGET /editions/<run_id>/factsEvery verified story with its citation chain, source domain and verification state
Evidence passportGET /editions/<run_id>/passport.jsonStories, QA verdicts, presenter, delivery links, audit-chain position, the RFC 3161 timestamp token — cost fields redacted
DirectoryGET /bulletinsEvery bulletin with its latest verified edition, source ledger and Atom feed
Badge network registryGET /registry.jsonMachine-readable directory of enabled newsrooms, bulletins, feeds and source ledgers
Source ledgerGET /newsroom/<org_id>/sources.json30-day accepted vs. rejected story counts and rejection reasons by domain (optional ?city=)
Facts archiveGET /archive · GET /api/facts/archiveCross-edition verified local facts corpus with retained evidence quotes and city/source filters
City feedGET /feeds/<job_id>.xmlAtom feed of published editions, delivered automatically every day
Embed badge<iframe src="/editions/<run_id>/verify-badge">Newsroom sites embed the live verification badge: edition facts, quality verdict, passport hash and the verify link

Authenticated agents (MCP-compatible, org-scoped API keys) additionally get jobs_overview, recent_editions, verified_facts, passport, a cross-edition facts_archive that compounds daily, and rejected_candidates — the around-the-corners signal for what is trending locally. The timestamp token in each passport verifies offline: save the token from the passport JSON and run openssl ts -verify -data identity.json -in token.tsr -CAfile tsa.crt -partial_chain with freetsa.org's public tsa.crt. Agents can discover everything here through /llms.txt.