Scrapers don't just break.
They lie.
A broken scraper returns nothing — you notice. A lying one returns the regular price where the sale price should be: right type, right schema, passes every check in the industry, and quietly poisons everything downstream. PARALLAX cross-examines every extracted field and catches the lie at the moment of extraction — including the moment nothing else covers: when an AI self-heal "fixes" your scraper.
A broken scraper, you notice.A lying one, you ship.
Bright Data's self-heal confirms one thing when it fixes a broken scraper: the field came back non-null. A healed selector that now grabs the $499 regular price instead of the $399 sale price passes that check — right type, right schema — and quietly poisons every number downstream. Not a crash. A confident lie.
Everything already in your pipeline checks something.None of it checks the value's meaning.
These tools aren't wrong — they answer real questions. But a plausible-but-wrong value clears every one of them. That's the gap PARALLAX exists to close, and only that gap.
One selector can be fooled.So read every field two ways.
A CSS selector, and a label-anchored text search that uses zero CSS — enforced by a linter. When they disagree, the value is suspect. (Diverse, not independent — they share the page, so we never claim statistical independence.)
A heal isn't trusted.It's cross-examined.
PARALLAX pins the true value node, mutates a copy of the page in meaning-preserving ways, and requires the healed selector to keep tracking the value. The value-sentinel rewrites the true value to a unique token — a selector reading the right value from the wrong node can't echo it, and is caught.
Five mutations tracked. The value-sentinel diverged → the heal is quarantined, not promoted. A position-locked or wrong-node heal never reaches production.
We didn't stage this.One real Bright Data run, end to end.
A scraper AI-generated on Scraper Studio, run, broken by a real redeploy, healed by Bright Data's AI, interrogated by the gate, and only then promoted. Collector c_msysromlqd80p0s4h — every artifact is committed in the repo.
The heal preview returned 149. Non-null, right type, right schema. So it ships — blind.
Is .price-now reading the price by meaning, or did it get lucky? Interrogated across 6 mutations before promotion.
Here the heal was genuinely correct, so it promoted. Had it grabbed the Regular-price node, the value-sentinel rejects it automatically — same gate, opposite verdict. See the raw artifacts → evidence/
Not a wrapper around one endpoint.The platform, used deeply.
Generate the scraper with AI
bdata scraper create <url> "<description>" — Scraper Studio builds the collector from plain language.
Run & deliver structured output
bdata scraper run or POST /dca/trigger — the conductor turns rows into a health verdict.
Heal the same collector on a real break
bdata scraper heal <id> "<prompt>" — it heals in place, reusing the collector. Not a regenerate.
Gate, then approve
PARALLAX runs the metamorphic gate; only a correct heal is promoted with approve --auto-save.
A correctness tool that hides its boundaries isn't trustworthy.Here are ours.
Consistency, not truth
If both eyes read the same wrong value, they agree and it promotes. The gate can't tell "both right" from "both wrong."
Bounded by the semantic eye
Correctness inherits from the label the semantic eye anchors to. Its accuracy is the ceiling.
Diverse, not independent
The two eyes share the snapshot and DOM neighborhood — their failures correlate (Knight & Leveson, 1986).
Multi-copy false-veto
If a value legitimately appears in several nodes, the sentinel can wrongly block a heal onto a different-but-correct copy.