Half your scrape is people who can't say yes.

Chain branches where the manager can't sign anything. Inboxes read by a group HQ two counties away. Dead domains. A nail salon in Florida because it's also called Windermere. LeadWash strips them out — and hands you a receipt for every rejection.

Bring your own scrape, or just name a trade and a few towns — we'll source the raw rows, wash them, and hand back the receipt. Your data stays yours; we store nothing.

WASH RECEIPT#0341
The Golden Ballbranch path
Travelodge Bathchain keyword
My French Cafeaddress ends …USA
The West Gate@greeneking ≠ site
Beachdale Housedomain parked
Cliffside B&Bkept · thin profile
Sotto Sottoindependent · own site
Rejections carry a reason. Judgement calls carry a tag, not a verdict.
3,3881,921
our own scrape, washed
268
wrong-country lookalikes caught
300+
chain branches flagged
0
bounces across our outreach
The distinction that matters

An email verifier can't tell you this.

Verification services are excellent at one question, and it isn't the one that decides your reply rate. They ask does this address exist. We ask is there anyone behind it who can say yes. A chain branch inbox passes every verifier on the market at 100% — and still wastes your send.

The leadAn email verifier saysLeadWash says
Travelodge York, reception@travelodge.co.uk ✓ Valid · deliverable, low risk ✗ Rejected — chain branch. The person reading this can't buy anything.
The West Gate, info@greeneking.co.uk ✓ Valid · corporate domain, good reputation ✗ Rejected — email domain ≠ site domain. Group HQ reads this, not the landlord.
My French Cafe, Orlando FL ✓ Valid · nothing wrong with the address ✗ Rejected — wrong country. You searched a UK town; this isn't in it.
Sotto Sotto, sottosotto@gmail.com ? Unknown · free mailbox, can't confirm ✓ Keep — mailbox name matches the business. Independent, owner-run.

We're not competing with verifiers — run one after us if you like. They de-risk the send. We decide the list.

The rules — with receipts

Every rejection tells you exactly why.

Spot-check ten rows. If the reasons hold up, trust the batch. That's the whole deal — no black-box score, no "AI confidence 87%". And anything we can only guess at gets tagged, never rejected.

Chain branch pagesrejects
Three URL shapes brands use for per-city pages — including the sneaky single-segment brand.com/bath that most filters miss.
✗ /pubs/north-yorkshire/smiths-arms
HQ-managed inboxesrejects
Email domain ≠ website domain usually means a group office reads the mail — not the person who runs the venue.
✗ @stonegategroup ≠ pubsmiths.co.uk
Wrong-country lookalikesrejects
Search a UK town name, get Florida. Same-name places pollute every geographic scrape.
✗ …Orlando, FL 32819, USA
Dead & parked domainsrejects
DNS check: lapsed or squatter-parked domains mean the website — and every email on it — bounces.
✗ NS → domainlore.co.uk
Permanently closedrejects
Still on the map, gone in real life. The one rejection nobody argues with.
✗ CLOSED_PERMANENTLY
Mailbox ownershiptags
A free mailbox isn't a problem — a group would never use one. What matters is whether the name belongs to the business or to some person who may have left in 2019.
▲ owner_inbox · staff_inbox
Channel profiletags
Facebook-as-website, OTA listing, free site-builder subdomain, or a real owned site. Different offers want different segments — so we describe, you decide.
▲ social_only · ota_listing
Thin profiletags
Few reviews means personalisation has little to stand on. That's a threshold you should set for your offer — so it never rejects by default.
▲ thin_profile (3 reviews)
The number, and how it was got

Everyone claims 99.9%. Here's ours, and the file to check it against.

A verification vendor prints one number for everything they do. You can't check it, and it doesn't break down by what actually failed. So here is ours the other way round: per rule, on labelled real rows, with the sample file shipped alongside so you can re-run it and get the same answer.

REGRESSION · 2026-08-11python3 -m tests.test_rules
chain_name8 fired · 8 right · 0 false · 100%
whitby control set6 rows, none flagged — matches labels

Sample size is 14 rows scraped from live Google Maps listing pages and labelled by hand. That is small, and we're saying so rather than rounding it up to a marketing number. The rules that need a website, an email or a DNS lookup aren't in this table yet, because listing pages don't carry those fields — they get measured when we have labelled data that does. Both sample files are in the repo under samples/.

Coming next — browser extension

Wash while you browse.

No export, no upload, no API key. Search Google Maps the way you already do, scroll the results, and every listing gets marked as you go. Then take the clean list with you.

cafe whitby uk — 47 resultsLEADWASH ON
Costa Coffee
REJECT · chain keyword "costa coffee"
The Singing Kettle
KEEP · 4.8 (1,000) · Cafe · £1–10
Cliffside Tea Rooms
TAG · thin_profile (3 reviews)
Botham's of Whitby
KEEP · 4.6 (2,140) · Bakery · takeaway
39 keep · 6 reject · 2 taggedEXPORT CSV ↓

Nothing leaves your browser. The extension reads the page you're already looking at. No Places records touch our servers — the same BYO promise, enforced by architecture instead of policy.

The list view runs the cheap rules — chain names, closed listings, review volume, category and price band. It's a first pass that cuts a 3,000-row search down to a few hundred worth a closer look.

The expensive rules still need the full record. Website URL, email domain and DNS aren't on the results page — so branch-path, HQ-inbox and dead-domain checks stay in the CSV pipeline. We'd rather say that than pretend the extension does everything.

Beyond the cut

It doesn't just cut. It hands you the opener.

Rejecting dead rows saves your domain. But the rows we keep come back armed: we visit every website, check what's missing, and write the finding as a line your sales rep can open with — plus the freshest customer review as personalisation ammo, and the email checked down to SMTP level.

The opener column_angle
"Their menu is a PDF — pinch-and-zoom on the phones their customers are actually holding." One line per lead, stating the gap between them and the thing you sell. Data, not copy — the email stays yours.
▲ 36 PDF menus in one 300-row batch
Site check-upprobe
Analytics & ad pixels, online booking (own engine vs OTA links vs none), PDF menus, dead sites. Two thirds of the shops in our last batch run no pixel at all — they're flying blind, and someone sells the fix.
▲ 66% no pixel · 56% no booking
Emails found & verified
Scraped from the business's own site (mailto → page → contact page), junk-filtered, domain checked for MX/parking, then SMTP-verified through a bulk verifier. You see a ✓, not a maybe.
▲ 65% found · every one receipted
How it works

Scrape → wash → send.

1

Bring your scrape

Outscraper, Apify, Places API exports — recognised automatically. Odd CSV? Map columns once.

name + address is enough to start
2

We wash it

Every rule that can run, runs. Every rule that can't is reported with the exact count — never silently skipped.

per-rule coverage with every batch
3

Send with confidence

Your original columns, untouched, plus tags and a rejected list with one reason per row. Your outreach, your tools.

washed.csv + rejected.csv
The honesty clause

"Unknown" is a real answer, and we'll give it.

Most cleaners fail silently when your file is missing a column — the output looks normal and the accuracy quietly collapses. Worse, most tools fold don't know into no, which is how you end up pitching a restaurant a booking system it's had for three years. We report what ran, on how many rows, and what we couldn't check.

chain_branch  3,388 / 3,388  — 100% · 110 rejected
wrong_country  3,388 / 3,388  — 100% · 268 rejected
hq_inbox       134 / 3,388  — 4% · only 134 rows carry an email
reservable     0 / 3,388  — your export doesn't include attributes

What we can't do

Tell you whether a Gmail address is live. Google throttles and blocks bulk probing, so nobody does this reliably — including the services that advertise 99.9%.

What we do instead

Judge whether the mailbox belongs to the business or to an individual. whitbyfishbar@ and sarahjones87@ are not the same lead.

Numbers we won't print

A headline accuracy percentage. Every vendor's figure measures something other than whether your list was any good. Spot-check ten rows instead — that's a real test.

Free wash

Send us a real list. We'll wash it free.

We built LeadWash for our own cold outreach to UK & Ireland small businesses: 3,388 scraped rows washed to 1,921 sendable, zero bounces since. Now we want to see it fail on someone else's data — so the first one's on us. You get back a sendable list, a rejected list with a reason on every row, and an honest note on what we couldn't check.

Wash my first list
No card, no account. Reply to the confirmation email with your CSV.
This decides which signals matter. There's no generic answer.
We'll source the raw rows for you (rented from scraping vendors, never resold), then wash them the same way.

We don't store or resell your rows. Washed, returned, deleted.
UK/IE market pack is the only one calibrated so far — say so if you're elsewhere and we'll tell you straight.