How we verify specialists
Short version. Every clinic in vetclinic.info passes through a three-tier classifier before its listing goes live. Tier 0 confirms it's a vet practice (not human medicine, not an ER room). Tier 1 confirms the clinic name carries a specialty-specific signal. Tier 2 confirms the clinic's own content mentions a board-certification credential. An operator override is the only path around the rules, and every override is logged. A daily rolling re-validation pass re-checks operational state and removes clinics that newly fail Tier 0.
1. Tier 0 — Places-type gate
We start with Google Places data. The clinic's primaryType and types array must indicate a veterinary practice (veterinary_care in the types array, or a vet-adjacent primary type). Entries with primary types like doctor, hospital, or medical_clinic are rejected at this gate — these are how human-medicine practices and ER rooms leak into specialty queries on Places.
Failure mode this catches: an orthopedic-surgery query returning "Athletic Orthopedics & Knee Center" — a human-medicine practice with the right keyword but the wrong Places type.
2. Tier 1 — name regex
The clinic's display name must match a specialty-specific token AND a veterinary anchor token. For orthopedic surgery, that means a token like orthop / TPLO / cruciate alongside an anchor like vet / veterinary / animal. Generic specialty names without a veterinary anchor fail this gate.
For Emergency & Critical Care specifically, "urgent care" is deliberately not a Tier 1 trigger — daytime walk-in clinics must not be tagged ECC, because a pet owner arriving with a real emergency at a daytime practice is a serious harm scenario. Only the combination of an emergency / ER / 24-hour token with the veterinary anchor passes Tier 1 for ECC.
3. Tier 2 — content tokens
We fetch the clinic's own content (homepage and a handful of internal pages, polite scrape with a chromium fallback for SPAs) and look for board-certification tokens specific to the specialty:
- Orthopedic Surgery:
DACVS/ACVS Diplomate/ co-occurring "perform / our surgeons" near procedure mentions. - Oncology, Cardiology, Neurology:
DACVIMwith the relevant sub-board negative-lookahead so the codes don't cross-pollinate. - Emergency & Critical Care:
DACVECC,ACVECC,Diplomate-of-emergency-and-critical-carewithin an 80-char window,board-certified criticalist,veterinary criticalist. - Ophthalmology:
DACVO. Dentistry:DAVDC.
A clinic that passes Tier 0 + Tier 1 but fails Tier 2 lands under the generalist tag — public on the city's general-practice page, never under a board-cert specialty.
4. Operator override
Real specialists with generic names and minimal public content fail Tier 1 + Tier 2 even though they're legitimate. The escape hatch is a per-clinic specialist_override JSON column: {"orthopedic-surgery": "include"} for a known-real specialist with no DACVS in their public copy, or {"oncology": "exclude"} to suppress a Tier 2 false-positive on a generic-named GP. Every override is logged in the operator audit trail. We bias toward false negatives — a real specialist with a generic name still ships, just under generalist, until the override is applied.
5. Re-validation
A daily Cloudflare-cron Worker runs a rolling re-validation pass: each day it picks the N clinics with the oldest google_place_checked_at and re-fetches operational state, ratings, review counts, photo references, and the Places types array. Over ~22 days the rolling pass sweeps the whole directory and starts over. Clinics that newly fail Tier 0 — for instance, a practice that closed or that Places re-typed as a non-vet entity — are removed from active surfaces.
6. What we do NOT verify
We do not call individual board offices to confirm a named veterinarian's diplomate status. We rely on the clinic's own public claim of board certification, gated by the SpecialistClassifier. If a clinic claims DACVS in its public copy and the named veterinarian isn't actually a diplomate of ACVS, that's misrepresentation by the clinic, and the corrections process is the path to removal. Email [email protected] with the clinic and the discrepancy and we will follow up.
7. Open code
The SpecialistClassifier is implemented in the public src/domain/scraping/ tree of our codebase and has its own unit-test suite. The classifier rules are not editorial opinion — they are mechanical. Anyone can read them.