Local Lead Prospector
A focused prospecting skill for SDRs. Give it an industry and a region like 'dentists in Austin, TX' or 'HVAC companies in Denver' and it produces a CSV (name, category, address, phone, website, rating, reviews, source_url) plus a markdown summary with contactability counts and a 10-row sample. Two data paths share an identical CSV schema. The preferred path is the official Google Places API (New) with paginated Text Search and a documented field mask, authenticated via the GOOGLE_MAPS_API_KEY environment variable. The fallback path is a Playwright + Chromium scrape of public Google Maps results, which is against Google's Terms of Service and only runs after the user passes an explicit --yes-tos flag in the same turn. The skill pushes back on vague inputs ('Texas' is too broad), refuses pulls above 100 rows with a sub-region-split suggestion, surfaces a cost estimate before any API pull above 50 rows, and translates API errors (billing not enabled, invalid key, quota exceeded) into clear messages instead of tracebacks. Listing data only. No decision-maker enrichment, no personal email lookup, no LinkedIn scraping, no CRM writes.
Simple install — no setup required
Download the skill file below
Add it to Claude — pick your platform:
Claude desktop app
- Open the Claude desktop app
- Go to Code, then Customize
- Click Create a new skill
- Upload the skill file you downloaded
claude.ai (web)
- Go to Customize, then Skills
- Click +, then Create a new skill
- Upload the skill file you downloaded
Say a trigger phrase to activate it
What Claude does with this skill
The following is the exact SKILL.md content Claude reads when this skill is active.
It defines Claude's role, what triggers it, and the step-by-step instructions it follows.
Local Lead Prospector
What this skill does
Turns an industry plus a region into a ready-to-work outreach CSV for an SDR. Each row is one business with the public Google Maps listing fields: name, category, address, phone, website, rating, review count, and a source URL pointing back at the Google Maps place page. Alongside the CSV, the skill posts a markdown summary with total leads, contactability counts (how many have phones, how many have websites), and a 10-row sample table.
Compliance posture
Listing data only. No decision-maker names, no personal emails, no LinkedIn scraping, no paid enrichment APIs. Two data paths exist and they are not equal.
- Preferred: Google Places API (New). Requires
GOOGLE_MAPS_API_KEY. Official, paid, billed per request. - Fallback: Playwright + Chromium scrape of public Google Maps results. This is against Google’s Terms of Service. It runs only when the user passes
--yes-tosin the same turn after the skill has explained the situation and offered the API path.
When to use it
SDR-style asks: “find me dentists in Austin”, “build a lead list for HVAC companies in Denver”, “I need contacts for law firms in Chicago”, “give me a prospecting list”.
Do not use for single-consumer lookups like “find me a good dentist near me” or “what is the best taco place in Austin”. Those are one-shot recommendations, not lead lists, and the skill will not fire.
Guardrails
- Vague region or industry triggers a clarifying question, not a guess. “Texas” is too broad; “Austin, TX” is real.
- Default count is 40. Hard ceiling is 100 per run, with a suggestion to split by sub-region above that.
- Cost estimate is shown before any API pull above 50 rows.
- Missing phone or website cells stay blank. Values are never fabricated.
- API path dedupes on place id across paginated responses. Scrape path dedupes on name plus address across scroll batches.