Cavisite

Lead intake for dentist offices that still do not have websites.

The first vertical slice is a configurable scraper command that searches a US city or ZIP code, filters to Google Maps listings without websites, and stores those prospects in PostgreSQL.

Default market

Memphis, TN

Persistence

`prospects` table

Provider order

Google, then SerpAPI

Run the scraper

npm run scrape:prospects -- --location "Memphis, TN" --provider auto