Problem
Organisation information was spread across maps, company databases, public clinic websites and an existing CRM. Records were duplicated, incomplete or out of date. Researching each organisation manually did not scale across more than 40 US metro areas and several UK regions.
Solution
I built a pipeline that discovers organisations, removes bad records, enriches valid ones, reads their public websites and prepares an organisation-level CRM entry with source links. This public case study leaves out individual-level contact handling and confidential implementation details.
Steps
- Search for clinics through Google Places and Apollo across defined regions. Use field masks and pagination so large searches return only the data needed.
- Normalise website domains and merge duplicates from different sources. Compare them with existing Attio records before creating anything new.
- Reject parked domains, directory listings, veterinary practices and other false matches. Check website health concurrently across the remaining list.
- Enrich organisations with employee count, estimated revenue and technology data from Apollo.
- Map each clinic website with Firecrawl and a custom breadth-first crawler. The crawler handles standard links, JavaScript onclick targets and meta-refresh redirects.
- Use roughly 60 rules to rank pages likely to contain services, ownership details and organisation information before scraping them.
- Extract structured organisation facts from the selected pages. Each field includes its source and a confidence score. Retained analysis is anonymised and this case study omits any person-level detail.
- Score record completeness with code so reviewers can focus on records with missing or conflicting evidence.
- Write approved records to Attio through its API. If a field is invalid, remove that field, log the reason and retry the rest instead of losing the whole record.
- Use checkpoints, token-bucket rate limits and retry rules so large regional batches can resume after an API or network failure.
Results and benefits
Manual research and CRM entry takes 15 to 25 minutes per clinic. The pipeline reduces this to two to four minutes of final review, saving about 80% of the time.
Across 1,000 clinics, that equates to roughly 250 hours saved. Records arrive with organisation details, source links and confidence flags ready for review.
- Focus
- Healthcare organisation discovery, research and CRM preparation
- Stack
- Python, location and organisation data APIs, a web crawler, structured extraction, Airtable, Attio and concurrent workers
- Skills
- Data collection, deduplication, crawling, structured extraction, entity resolution, CRM integration and resilient batch processing
- Status
- Operating in production