Lead Generation Tool

Find piano teachers
before anyone else does.

Scrape, deduplicate, enrich, and export piano teacher leads across the NYC Metro area — built for piano sales reps.

Everything in one tool

No spreadsheets. No manual research. Just leads.

🔍

Scrape

Pull leads from Google Maps Places API using targeted search terms per territory.

🧹

Deduplicate

Detects duplicate leads by name, phone, and domain. Flags conflicts for review.

📊

Enrich

WHOIS domain lookups and a confidence score (0–10) to prioritize outreach.

📤

Export

Filter and export to CSV by territory, status, rating, source, or rep assignment.

🗂️

Track status

Mark leads as new, contacted, taken, or not interested. Assign to reps.

🌐

Domain crawl

Crawl teacher websites for contact info and piano-related keywords.

From query to CSV in minutes

A clean pipeline — every step is transparent and re-runnable.

1

Scrape a territory

Run the Google Maps scraper on a territory. Pulls up to 60 results per search term across all ZIP codes.

2

Normalize & deduplicate

Raw results are cleaned into structured Lead objects, then compared against existing leads to skip duplicates.

3

Enrich

WHOIS data is pulled for each website. Confidence scores are calculated based on data completeness.

4

Export & work the list

Filter by territory, status, score, or rep. Export to CSV and start calling.

NYC Metro territories

Each territory maps to a curated list of ZIP codes. Add new territories in config/territories.py.

NYC Metro Long Island North Jersey

Up and running in 4 steps

Requires Python 3.12+ and a Google Maps API key.

# 1. Clone and set up
git clone https://github.com/benjaminhuang13/pianoleads.git
cd pianoleads && python -m venv env && env\Scripts\activate
pip install -r requirements.txt

# 2. Add your API key
cp .env.example .env # then fill in GOOGLE_MAPS_API_KEY

# 3. Scrape a territory
python main.py scrape --source google_maps --territory nyc_metro

# 4. Enrich and export
python main.py enrich
python main.py export --output output/leads.csv