๐Ÿ“„ Methodology (this page) ๐Ÿ“Š View the lead list →
ReadTomato ยท Dental Outbound ยท Internal Methodology Memo

OpenMart Lead Sourcing & Qualification

How the dental lead list was built, deduplicated, and quality-checked before delivery.
Prepared: Jul 31, 2026 Prepared by: Gly, with TALLI For: Marshall / Jim Source: OpenMart API
1,225confirmed dental leads
914decision-maker identified
115verified personal email
5 / 15target metros pulled
Commitment was 650 verified, US-based dental leads by Jul 31. Metro count is 15, not 14 โ€” Marshall confirmed Atlanta as an addition. LinkedIn is confirmed unavailable from this source at both the company and person level (checked directly in the raw API response).

00 ICP definition & coverage

The full target-customer definition, checked line by line against what our search actually implements. COVERED PARTIAL NOT COVERED

CriterionRequirementStatus
OwnershipIndependent / privately, dentist, or family-owned. Exclude DSOs, corporate groups, hospitals, universities.PARTIAL
Company size1โ€“50 employees preferred, 50โ€“200 secondary.NOT COVERED
Locations1โ€“3 preferred, up to 10 acceptable.COVERED
Geography14 target metros, city by city.PARTIAL
Decision makerOwner, Managing/Lead Dentist, Practice Administrator, Office Manager. Exclude hygienists, assistants, receptionists, recruiters.PARTIAL
Practice typesGeneral, Family, Cosmetic, Emergency, Implant, Sedation, Orthodontics, Periodontics, Prosthodontics, Endodontics, Oral Surgery, Pediatric, Sleep, Invisalign.PARTIAL
Buyer intentOutdated website, weak SEO, inactive social โ€” paired with a strong Google review history (50+ reviews).NOT COVERED
Negative filtersHospitals, universities, DSOs, corporate, staffing/recruiter listings.COVERED

Why the gaps: OpenMart's business search returns company data โ€” name, phone, website, reviews, location count. It doesn't return employee counts, doesn't identify a decision maker by role, and can't tell us if a website looks outdated. Those three require either a paid enrichment step (decision maker) or a manual audit (buyer intent, size) โ€” neither has run yet.

01 Source

Live API calls, not a resold list. Every lead traces back to a specific search.

EndpointOpenMart /api/v1/search, one call per metro
Categorytags: ["dentist"]
LocationHard-filtered per metro (city + state)
Chain sizemax_locations: 10
Websitehas_website: true
Reputation floormin_total_reviews: 10
Server-side exclude24 terms โ€” hospitals, universities, staffing/recruiter listings, known DSO brands

02 Qualification pipeline

Every lead runs through this decision path, from raw search result to a confirmed decision-maker with a verified email โ€” or excluded, with a reason, at whichever step disqualifies it.

Confirmed decision-makers (explicit role tag) are enriched first and separately from surname-matched or best-guess contacts โ€” mixing those tiers is what let a 68%-guesswork batch through on the first enrichment pass.

Server-side filtering

Location, chain size, review floor, website โ€” applied at query time, so junk is never even returned.

Business-type & association exclusion

Confirms the returned business_type is actually dental, and drops associations/societies (channel partners, not prospects, per the ICP blueprint).

Deduplication

Same practice, different name strings (doctor's bio page vs. brand name). Merged on phone, domain, or exact name.

Chain-brand detection

Distinctive brands (Aspen Dental, Heartland Dental) excluded on name alone. Generic-sounding ones (Coast Dental, Dental Depot) only excluded if location count also confirms a real chain โ€” most turned out to be independents with a similar name.

Data-glitch detection

OpenMart sometimes returns an unrelated company's name on a dental website. Caught by checking the name against the actual domain.

Referral-page exclusion

Drops names pulled from another practice's "our referring doctors" page โ€” not a standalone lead.

Cross-metro merge

Same business, two city searches โ€” merged so it's counted once, not twice.

Decision-maker tiering

Splits contacts into confirmed (explicit Owner/Office Manager role), likely (surname match), and best-guess โ€” not treated as equally reliable.

Personal email enrichment

Paid lookup, run against a known name at the practice's domain. Generic inboxes (info@/admin@) are never counted as a match.

02b The funnel

Volume at each stage โ€” where leads actually drop off.

Raw pulled5 metros
1,460
Confirmed dental
1,225
Decision-maker identified
914
Confirmed roleOwner / Office Mgr
298
Likely / best-guess
616
Verified personal email
115

The steepest drop is the last one: 914 named contacts โ†’ 115 verified emails. That's a data-coverage limit at OpenMart, not a filtering problem โ€” most independent practices simply don't have a findable personal email by domain+name lookup.

03 Scoring & tiers

Scored on what the data can confirm: ownership, location count, reviews. Out of 50.

SignalConditionPoints
OwnershipIndependent / family-owned+20
OwnershipOwner-led signal only (unconfirmed)+12
Locations1โ€“3 locations+15
Locations4โ€“10 locations+5
Reviews50โ€“500 reviews+15
Reviews500+ reviews+5

TIER A โ‰ฅ35/50   TIER B 25โ€“34/50   TIER C <25/50

Website, blog, and social signals aren't in this data โ€” those need a separate manual check.

04 Results by metro

MetroQualifiedTier ATier BTier C
Dallas / Fort Worth, TX2951898125
San Antonio, TX30410211686
Jacksonville, FL135395046
San Diego, CA3068013096
Seattle, WA214549763
Combined (post-QA-sweep)1,225451464310

05 Corrections log

Real mistakes caught mid-build. Logged here, not quietly fixed โ€” this is the proof the list isn't garbage.

Caught in Denver sample pull
Aspen Dental (900+ location chain) passed every filter
No "DSO" or "corporate" in the name, shows as a single office. Built an explicit chain-brand blocklist.
Caught reviewing the blocklist's own results
"First Coast Dental Center," "Western Dental Care," "Sears Dental Works" flagged as chains
All three are independents with a similar name โ€” "First Coast" is just Jacksonville's nickname. Split the blocklist: generic names only exclude if location count also confirms a real chain.
Caught spot-checking San Antonio / Jacksonville
"WPX.net" and "Wargaming.net" listed as the business name for two dental websites
OpenMart data glitch โ€” an unrelated tech company's name attached to a real dental site. Built a permanent check: name's domain-like text vs. actual website.
Caught in cross-metro merge
"Dental Republic" counted once in Dallas, once in San Antonio
Same business, two metros, different local numbers. Merged into one record.
True chain exclusions, confirmed
"Family First Dentistry & Orthodontics" (12 locations), "Dental Depot" (9 locations, 862 reviews)
Real multi-location operators, corroborated. Excluded, not flagged.
Caught on the post-enrichment QA sweep
35 non-dental businesses in the "qualified" set โ€” churches, a vet clinic, a pizza restaurant, barbershops, a hospice, domain-parking services (Bluehost, HugeDomains)
Added a business_type check post-backfill. 26 confirmed non-dental excluded; also dropped 1 dental association (channel partner, not a prospect, per the ICP blueprint).
Caught reviewing decision-maker names
"Role" accepted as a real person's name for 2 businesses
Malformed OpenMart staff record (name: "Role"). Added a placeholder-name filter, fixed with zero new API cost by reprocessing already-saved data.
Caught cross-checking names across businesses
Same decision-maker name at 7 different business pairs (e.g. "Yogesh Patel DDS" at two "Endodontic Associates" locations)
Likely a real specialist at two locations, not an error โ€” flagged directly on both records so a campaign doesn't treat them as separate contacts.

06 What this list is not โ€” yet