← Civicord · United Kingdom

Method.

What Civicord claims, where it comes from, and how you can check it yourself.

1. The source: Campaign Lab scrape, April 2025

Every record starts from Campaign Lab’s April 2025 scrape of UK candidate websites. The dataset covers 2,375 candidates and 2,375 websites, keyed on Democracy Club person IDs — the stable public identifier for UK candidates.

2. The audit: re-checked after the election

Websites rot. Roughly 17 months after the scrape we re-requested every URL and recorded what happened: 1,513 responding, 441 DNS or connection failures, and the remaining URLs had HTTP errors, timeouts or other technical failures.

The stored status “live” means a successful HTTP response after redirects. It does not establish that campaign content survived. Surname matching searches the response body and can match a domain-sale page or unrelated text; it is a weak signal, not content verification. Redirects are tracked separately and overlap HTTP outcomes.

StatusMeaning
Responding (live)Successful HTTP response after redirects at the audit
Unreachable (gone)DNS failure or connection failure at the audit
HTTP errorServer responds with 4xx/5xx
Timed out / SSL / Conn. failedUnreachable for technical reasons — retry before concluding
↳ redirectURL sent visitors elsewhere at the audit (destination shown; overlaps HTTP outcomes)

3. The public record: ENS names

3 of 2,375 candidates have a public name of the form p5693.civicord.eth on the Ethereum Name Service (Sepolia testnet today). Core fields are the campaign website URL, the audit status, and the candidate's name — readable by anyone, without an account, a wallet, or our permission.

Updates to resolver fields are on-chain transactions with a public history. This makes changes observable; it does not prove a political claim is true, preserve full website content, or establish candidate ownership of a record. Today that history lives on Sepolia; the mainnet path is in §4.

To verify a record yourself: open any candidate page, click “Verify on-chain”, and independently read the url, status, and vnd.civicord.person_name text records on the resolver contract. Compare them with the claims on the page — they should match exactly.

4. Permanence, honestly: testnet prototype

Records currently live on the Sepolia testnet — free and public, but a test network. The path to a permanent home is deliberately boring and already scoped in docs/onchain-plan.md:

  1. Now (Sepolia): public audit fields — name, original URL and HTTP audit status — are written and publicly verifiable on Etherscan.
  2. Next (mainnet): migration to Ethereum mainnet is planned via the same ENSv2 contracts. Sepolia records are rehearsal data, not the citable record of truth.
  3. Planned (durable content): content hashes plus durable storage for source snapshots — not yet implemented.

The claim we make today is the narrow, checkable one: public audit fields can be read on Sepolia and compared with this ledger. Source excerpts and archive links must be evaluated separately.

5. Limits and honesty

6. What is verified, and what is not

Verified here means an observation you can trace to a stored source. It does not mean a political sentence is true.

Observed and stored

Not verified

7. Reproduce it

Pipeline, audit, frontend, and publishing scripts are open source (AGPL-3.0) at github.com/sneldao/civicord. Raw scrape → CSVs → audit → site → on-chain records: every step is scripted and re-runnable.

Press ⌘K to jump to any candidate, seat, or party — or try it against the live data in the ledger.

↑↓ move · ↵ open · Esc close