Skip to content
Prelaunch · design partners only

The source moved.
Your pipeline never noticed.

Distill reads published sources — statistics portals, filings, tariff workbooks, PDFs nobody meant to be an API — and serves them as verified records with provenance on every value. When the publisher restructures the page, Distill re-derives its own extraction plan and proves it against the old one before a single record changes hands.

Provenance on every valueDeterministic replayIndependent verification
distill · productionrun 04:06 · 2026-09-11
SourcePlanState
stats.gov.sa — R&D Statisticsv8Healed today
ofgem.gov.uk — Price cap tablesv3Serving
sec.gov — 10-K exhibits, 42 filersv11Serving
lme.com — Daily settlement sheetv2Degraded · stale 4h

Every source carries a plan version and a state. Degraded is a state you can serve around — last-known-good with a staleness flag, or fail loudly. You choose; we never choose a wrong answer for you.

Problem one

Getting the data out is tedious

Retyping it scales linearly and lives in one analyst’s head. A scraper is brittle, and it usually breaks by returning something plausible rather than by throwing. An extraction API solves the parse, not the pipeline — a best-effort answer with no completeness guarantee and an “AS IS” disclaimer.

Distill canonicalises HTML, PDF, XLSX, CSV and images into one representation with stable coordinates, then compiles an extraction plan once. The plan is a validated artifact: a hallucinated selector is not expressible in it.

Problem two · the expensive one

Keeping it right after the source changes

The publisher never agreed to be an API. They restructure the page, re-typeset the PDF, rename a column, switch thousands to millions — and announce none of it. A pipeline propagates the result into a model, a report or a trade. Wrongness becomes undetected corruption.

This is what Distill is actually built for. The scarce good is not extraction — it is a defensible claim about what was and was not extracted.

The adaptation loop

A changed page is not an incident

Hover a step. Change detection is cheap and runs first; a moved hash is not a rebuild trigger on its own. What matters is whether the change touches the fields you declared — and if it does, the repair has to earn its way into your pipeline.

  1. 01

    Detect

    Conditional GET and a content hash. Most polls cost nothing and end here.

  2. 02

    Classify

    Value, structural or semantic. Only a change that touches your declared fields goes further.

  3. 03

    Re-derive

    The compiler studies the new edition and proposes a candidate plan, grounded on retained copies.

  4. 04

    Gate

    The candidate replays every retained run. It serves nothing until it reproduces them.

  5. 05

    Promote

    Passed: the new plan version appears on your records. Failed: a structured escalation naming what needs a decision.

Value drift

Expected

The numbers moved. Validated against invariants and history; you hear about it only on anomaly.

Structural drift

Healed

Anchors stop resolving or coverage degrades. A candidate plan is derived and must pass the gate before it serves.

Semantic drift

The dangerous one

Everything resolves and nothing errors, but the meaning changed. Caught by per-field distribution monitoring and periodic re-derivation on a sample.

Verification

Escalate only by necessity

A model call enters the workflow only when nothing deterministic reaches the goal. Most runs sit at the bottom of this ladder, which is what makes the top of it affordable. The bar is relative cost.

T0

Content hash unchanged

~0

Cache hit, no inference.

T1

Stable plan, invariants pass

~0.05×

Deterministic plan replay and structural checks.

T2

New source, drift flagged or a critical field

1×

Single model pass, invariants and span verification.

T3

Tier 2 disagreement or probation

3–5×

Dual-model extraction and a reverse completeness pass.

T4

Tier 3 unresolved disagreement

bounded by volume

Human review queue.

Checker

“What matches the schema in this document and is missing from this record?”

A field that was never emitted has no confidence score to be low. Only an inverted pass finds it.

Test author

“What must always be true of this source’s data?”

Writes invariants from a separate look at the data. The compiler must not write these, or its misreadings become tests that pass.

Triage

“Before anyone is paged: is this trip real?”

Goes back to the source and checks the value in place. Only an unresolved trip reaches you, as a single question to answer.

Access

Three tiers, and one of them is a refusal

No residential proxies. No fingerprint spoofing. No CAPTCHA solving. You cannot sell auditable correctness on infrastructure you would rather not describe in discovery.

Tier 1

Your own documents, government and regulatory filings, open-data portals, licensed sources and pay-per-crawl offers we pay.

Served.

Tier 2

Public commercial pages with a permissive robots.txt and no bot wall.

Served, with the robots state on every record.

Tier 3

Login or CAPTCHA walls, professional and social networks, search result pages, sources whose value is a protected database.

Refused.

Pricing

Three lines on the bill

Figures are set per engagement while we are in trials. The shape is fixed.

Per sourceA monitored, verified, healed source, billed monthly whatever its volume.A source has ongoing cost whether or not it changes: change detection, politeness, periodic re-derivation, the plan inventory.
Metered volumePages canonicalised and records served, at a low rate.Inference is rounding error. Unchanged content is served from the store at no charge.
Verification tierThe tier that changes the service level and the published metrics attached to your data.This is the line nobody else sells. It aligns what you pay with the part that is actually hard.
Where we startFinancial and regulatory reportingEnergy and utilitiesSupply chain and commoditiesInsurance and reinsuranceClinical and pharma

Bring us a source. We will run it live.

Distill is prelaunch and taking on a small number of design partners. Send the source you would most like to stop babysitting and we will walk you through a compile against it: the population it found, the pattern verdict, the plan, and the records with their provenance.

Or write directly: hello@distill.io

Login-walled and social sources are refused at the boundary.