What this is
A repeatable way to use Claude as a lead-research analyst. You tell it a niche (e.g. "med spas", "HVAC contractors", "boutique gyms") and a region (a city, metro, or list of towns). It researches real local businesses and scores each one on how weak its digital presence is — because a weak presence is exactly what you sell the fix for.
A business with no website, a dead Instagram, and 6 Google reviews isn't a bad lead — it's the best lead. Every gap is a line in your pitch. This system finds the gaps and ranks prospects by how many they have.
How it works
Claude searches the web for real businesses in your niche + region and pulls name, address, phone, and website.
For each one it checks the website, socials, reviews, and owner info — and notes exactly where they're weak.
Each lead gets a 0–100 "opportunity score." Highest = most gaps = easiest to pitch. You get a sorted CSV.
New to Claude? Read this first
You don't need to be technical. There are two setup paths and you can start with the easy one:
- Easiest (5 min): Create a Claude Project, paste in one block of instructions, and start asking. → Quick Start
- Recommended add-on (3 min): Turn on the Exa connector so Claude searches the web far better. → Better Search · Exa
- Optional: Install it as a reusable Skill, or wire up Google Maps for exact ratings. → Install as a Skill · Go Further
Claude researches from what's publicly on the web. It's fast and thorough, but it can't log into Instagram, and a Google rating it finds might be a little stale. Every row carries a Confidence / Source note so you know what to double-check before you dial. Full detail in Limits & Honesty.
Quick Start
Three levels. Do Level 1 today; add 2 and 3 whenever you want. Each builds on the last.
Project + Instructions
Paste one block of instructions into a Claude Project. Free plan OK · 5 min
Add the Exa connector
Much better web search. Free tier · 3 min · how →
Install as a Skill
Reusable, one download. Free plan OK · how →
Level 1 — set up the Project (do this first)
Sign in to Claude
Go to claude.ai and sign in. A free account works to start; Pro ($20/mo) gives you more usage and smoother connectors.
Create a Project
In the left sidebar click Projects → New Project. Name it "M2 Lead Finder."
Paste in the instructions
Inside the project, click "Set project instructions" (a.k.a. custom instructions). Open the System Prompt tab, hit Copy, paste the whole thing in, and save. This is what teaches Claude your 21 columns and scoring.
Turn on web search
In a chat, make sure web search / tools is enabled (usually on by default). Claude needs it to find real businesses. Level 2 makes this search much better.
Run your first batch
Start a new chat inside the project, grab the Run a Batch template, fill in your niche + city, send. Then copy the table into Google Sheets or download the CSV.
The 4 words people mix up
Claude has a few similar-sounding features. Here's the plain-English version so you know which is which:
- Project
- A folder for a body of work. Its instructions apply to every chat you start inside it. Best home for this workflow — set it up once, every batch inherits the rules. Free OK
- Project instructions (custom instructions)
- The block of text you paste into a Project that tells Claude how to behave there. This is where our System Prompt goes.
- Skill
- A packaged, reusable capability (a file Claude loads when the task matches). Same brains as the Project instructions, but portable — upload once and it's available in any chat. Optional alternative to Level 1. Free OK → Install as a Skill
- Connector (MCP)
- A plug-in that gives Claude a new tool — like a better search engine (Exa) or live Google Maps data. You add it once in Settings. → Better Search · Exa
Rule of thumb: Project instructions or a Skill = the brains (what to do). Connectors = the tools (what Claude can reach). You want one of the first and, ideally, the Exa connector.
Better search with Exa recommended
Claude's built-in web search is fine, but it's shallow for lead research — it misses smaller businesses and thin listings, which are exactly the ones you want. Exa is a search engine built for AI. Adding it as a connector makes Claude's research noticeably deeper and more accurate. It's the single highest-value upgrade here, and the free tier needs no credit card.
A connector (also called an MCP server) is a plug-in that hands Claude a new tool. Exa's connector gives Claude two tools — web_search_exa (deep semantic search) and web_fetch_exa (read a page cleanly). You add it once; it's then available in your chats.
Add it in the Claude app (easiest)
Open Connectors
In Claude, go to Settings → Connectors. (On Team/Enterprise, an account owner may need to add it first.)
Find Exa in the directory
Search the connector directory for "Exa" and click Add. If it's listed, that's the whole job — skip to step 4.
…or add it as a custom connector
If it's not in the directory, click "Add custom connector" and paste this URL:
https://mcp.exa.ai/mcp
No API key needed for the free tier (150 searches/day). Want more? Get a free key at dashboard.exa.ai and use https://mcp.exa.ai/mcp?exaApiKey=YOUR_KEY instead.
Turn it on in a chat
In the chat box, click the "+" button → Connectors → toggle Exa on. Now Claude will use it when researching. That's it.
Plan note
Custom connectors work on Free (limited to one custom connector — make it Exa), Pro, Max, Team, and Enterprise. If you only add one connector ever, this is the one.
Using Claude Code instead? (technical path)
If you run Claude in the terminal, skip the UI and add Exa with one command:
claude mcp add --transport http exa https://mcp.exa.ai/mcp
Check it registered with claude mcp list. Add --scope user to make it available in every project.
Exa's free tier: 150 searches/day, no credit card. That's plenty for steady lead research. If you ever outgrow it, paid usage runs about $0.007 per search — a few dollars a month for heavy use.
Install it as a Skill (optional)
A Skill is the same prospecting brain as the Project instructions, but packaged as a file Claude loads automatically when you ask it to find leads. Two reasons to use one instead of Project instructions: it works in any chat (not just one project), and it's a single download — nothing to copy-paste. Pick one approach; you don't need both.
The .zip contains prospect-leads/SKILL.md — the format Claude expects for upload.
Go to Settings → Customize → Skills (make sure "code execution" is enabled in settings — Skills need it).
Click "+" → Create skill → Upload a skill.
Upload the prospect-leads-skill.zip you downloaded above. It appears in your Skills list.
Toggle it on. Now in any chat just say "find 30 med spas in Austin TX" and Claude loads the skill automatically.
Save the file to your personal skills folder and restart:
mkdir -p ~/.claude/skills/prospect-leads # then save the downloaded file as: # ~/.claude/skills/prospect-leads/SKILL.md
Claude Code discovers it on the next session start. Invoke with /prospect-leads or just describe the task.
Just getting started or working in one place? Project instructions (Level 1) are simpler. Want it everywhere, or sharing with teammates? The Skill is cleaner. Either way the output is identical — same columns, same scoring.
The System Prompt
This is the brain, in plain text. Paste it into your Claude Project's instructions once (Level 1). It defines the columns, the research method, the scoring, and the honesty rules. (Prefer a file? Use the Skill instead — same content.)
You are a lead-prospecting analyst for M2 Marketing, a media-marketing agency. Your job: given a business NICHE and a geographic REGION, find real local businesses and assess how weak their digital presence is — because a weak presence is a strong sales opportunity for our services.
OUTPUT — one row per business, these exact 21 columns, in this order:
#, Business Name, Google Maps Link, City, Category, Address, Phone, Website, Owner / Manager, Role, Google Rating, Review Count, Facebook, Instagram, LinkedIn, Social Activity & Content Quality, Website Quality, Phone Reliability, Opportunity Notes, Score, Confidence / Source
HOW TO FIND THEM:
- Use web search. If an Exa search tool is available, prefer it — it's deeper. Run several queries per batch, e.g.:
"{niche} in {city}, {state}", "best {niche} near {city}", "{niche} {city} site:facebook.com", "{niche} {city} yelp".
- Real businesses only. NEVER invent a business, phone number, address, or rating.
- If you cannot verify a field, write "unknown" and lower that row's Confidence. Guessing is worse than "unknown."
FOR EACH BUSINESS, ASSESS:
- Website: Does one exist? Is it a DIY builder (Wix / Squarespace / GoDaddy / Weebly / Wordpress.com), outdated, or missing an obvious contact form? "No website" or "DIY site" = big opportunity. Rate Website Quality: None / Weak / OK / Strong.
- Social: Find Facebook, Instagram, and LinkedIn if they exist. Judge Social Activity & Content Quality only from what's publicly visible — recency of last post, follower count, whether content looks professional. You CANNOT log in; say so and stay honest. Use: None / Inactive / Sporadic / Active.
- Reviews: Google Rating and Review Count if visible. Few reviews (<10) or low rating (<3.5) = opportunity. If not visible, mark "unknown."
- Owner / decision-maker: Check the About page or LinkedIn for a name and Role. Best-effort; "unknown" is fine.
- Phone Reliability: Note if the number looks valid and appears consistently across sources, or if it's questionable. (e.g. "verified on site + GMB", "only on one aggregator — verify").
SCORE each lead 0–100 by summing every signal it triggers:
no website +20 | no Facebook AND no Instagram +15 | website but no contact form +15 |
DIY website builder +10 | fewer than 10 reviews (or none) +10 | rating below 3.5 (or none) +10 |
has social but clearly inactive/low-quality +10 | phone but no email +5 | classic service business
(plumber, electrician, roofer, HVAC, landscaper, contractor, cleaner, etc.) +5. Cap at 100.
Higher score = more gaps = easier, more valuable pitch.
OPPORTUNITY NOTES = the one-line pitch angle: the specific gap you'd lead with on a call.
e.g. "No website, only a barely-active FB page — quick win with a landing page + content plan."
CONFIDENCE / SOURCE = where the data came from + how sure you are (High / Med / Low).
ALWAYS fill this. It tells the caller what to verify before dialing.
DELIVER:
- A Markdown table with all 21 columns, sorted by Score (highest first).
- THEN offer the same data as a downloadable CSV file.
- THEN a 2-line summary: how many are hot (Score >= 70), and the top 3 to call first and why.
TONE: You are a sharp research analyst, not a salesperson. Be accurate, flag uncertainty, never pad the list with weak or unverifiable entries just to hit a number.
Run a batch
Start a new chat inside your project (or any chat if you installed the Skill) and paste this, filling in the brackets. One message per batch.
Find [30] [NICHE] in [CITY, STATE — or a list of towns]. Follow my instructions exactly: real businesses only, all 21 columns, score each 0–100 by digital-presence gaps, sort hottest first, flag Confidence on every row, then give me a downloadable CSV and the top 3 to call first. Extra filters (optional): [e.g. "skip national chains / franchises", "focus on ones with no website or a DIY site", "Spanish-speaking owners OK", "within 20 miles of downtown"]
Getting the best results
Asking for 30 fully-researched businesses in one shot spreads Claude thin. Two reliable patterns:
- Two-pass (recommended): Ask for 30 with the basics filled in, then say "now deep-dive the top 10 by score — verify their socials, reviews, and owner names." Fast wide net, then depth where it matters.
- Tighter batches: Ask for 10–15 at a time if you want every row deeply researched from the start. Run it 2–3 times to build your 30.
Turning on the Exa connector improves every batch, especially the deep-dive pass.
Handy follow-ups (same chat)
"Deep-dive rows 1–10 and update their Social Activity + Owner columns.""Drop anything with a Score under 40 and re-sort.""Write me a 3-sentence cold-call opener for the #1 lead using its Opportunity Notes.""Re-export just the hot leads (Score ≥ 70) as CSV."
The 21 columns
Your exact schema, plus how reliable each field is when researched from the public web. The reliability pill is what to trust vs. what to verify before you call.
Solid Claude gets this right most of the time Best-effort often good, sometimes stale/partial — verify Judgment a qualitative read of public signals, not ground truth
| Column | What goes in it | Reliability |
|---|---|---|
| # | Row number, auto. | Solid |
| Business Name | The real trading name. | Solid |
| Google Maps Link | Link to the Google Business / Maps listing (or a Maps search URL if the exact listing isn't found). | Best-effort |
| City | From your query. | Solid |
| Category | The niche you searched. | Solid |
| Address | Street address if published. | Solid |
| Phone | Public business number. | Solid |
| Website | URL, or "none" — and "none" is itself a buying signal. | Solid |
| Owner / Manager | Decision-maker name from the About page or LinkedIn. | Best-effort |
| Role | Their title (Owner, GM, Marketing Lead). | Best-effort |
| Google Rating | Star average if visible. | Best-effort |
| Review Count | Number of Google reviews. | Best-effort |
| Page URL or "none." | Solid | |
| Handle/URL or "none." | Solid | |
| Company or owner profile if it exists. | Best-effort | |
| Social Activity & Content Quality | None / Inactive / Sporadic / Active — a read of what's public. | Judgment |
| Website Quality | None / Weak / OK / Strong, plus platform (Wix, Squarespace…). | Judgment |
| Phone Reliability | A note on whether the number looks verified or needs a check. | Judgment |
| Opportunity Notes | The one-line pitch angle. This is the money column. | Solid |
| Score | 0–100 opportunity score (see Scoring). | Solid |
| Confidence / Source | Where the data came from + High/Med/Low. Your verify-first flag. | Solid |
Star ratings and review counts are the one place web search is shakiest — they change and aren't always in search results. If those numbers are mission-critical, wire up Google Maps for exact figures. → Go Further
How leads are scored
Each business earns points for every weakness it has. Add them up (capped at 100). More gaps = higher score = easier, higher-value pitch. A 15-review plumber with no website and a dead Facebook is a layup; a slick brand with 400 reviews is not your lead.
| Signal | When it triggers | Points |
|---|---|---|
| No website | No site at all — the biggest, clearest gap. | +20 |
| No social presence | No Facebook and no Instagram. | +15 |
| No contact form | Has a site but no clear way to capture a lead. | +15 |
| DIY website | Built on Wix / Squarespace / GoDaddy / Weebly. | +10 |
| Few reviews | Under 10 Google reviews (or none found). | +10 |
| Low rating | Rating under 3.5 stars (or none found). | +10 |
| Inactive social | Has a page but it's clearly stale / low-quality. | +10 |
| Phone only | Reachable by phone but no email captured. | +5 |
| Service business | Trades (plumber, HVAC, roofer, landscaper…) that live or die on local lead flow. | +5 |
Reading the score
Multiple glaring gaps. Call these first — the pitch writes itself.
A real opportunity or two. Worth a tailored touch.
Already fairly dialed-in. Low urgency — don't lead with these.
This rubric is the exact one Flow Systems' internal prospector uses. It's a starting point — once you're tracking outcomes (next tab), you can tune the weights to what actually books calls for you.
Turn the sheet into a feedback loop
Your original ask: "figure out which factors actually correlate with successful appointments over time." Here's the low-effort way to get that — no data science, just disciplined logging plus one prompt.
Step 1 — add two columns to your Sheet
- Status —
New·Contacted·Booked·Won·Lost - Outcome Notes — a few words on what happened ("booked — loved the no-website angle", "wrong number", "already has an agency").
Update them as you work the list. That's the only ongoing discipline required.
Step 2 — after ~30–50 logged leads, ask Claude to find the pattern
Attached is my prospecting sheet. Each row is a lead, with its digital-presence signals and Score, plus a Status column (New / Contacted / Booked / Won / Lost) and Outcome Notes. Analyze it: 1. Which columns or signals most correlate with leads that reached Booked or Won? (e.g. does "no website" actually convert better than "low rating"?) 2. Which signals look like noise — no relationship to outcomes? 3. Given that, how should I re-weight my scoring, and what should I prioritize when I pull the next batch? 4. Flag anything I don't yet have enough data on to judge. Be honest about sample size — don't over-read a small number of Bookings.
You're not guessing which signals matter — you're letting your own results tell you. After a few cycles you'll know, for your market, whether "no website" or "dead Instagram" is the better door-opener, and you can tune the System Prompt's point values to match. The list gets smarter every batch.
Limits & honesty
Straight talk so nobody's surprised. The system is built to handle these openly rather than hide them.
What Claude genuinely can't do
- It can't log into Instagram, Facebook, or LinkedIn. Follower counts and "how active are they" come from what's publicly visible in search results — a directional read, not an analytics dashboard.
- It can't scrape Google Maps live (unless you wire up the Maps connector — see Go Further). By default, ratings and review counts come from search results, which can lag reality.
- It won't always find the owner's name. Small businesses often don't publish it. "unknown" is an honest answer, not a failure.
- It shouldn't invent to fill a quota. The instructions tell it to return fewer, real leads rather than pad the list. If it returns 22 solid ones instead of 30, that's the feature working.
The discipline that makes it trustworthy
Every row has a Confidence / Source note. Before a call — especially for Best-effort and Judgment fields like phone, rating, and owner name — glance at that note and spot-check anything marked Med or Low. Thirty seconds on the business's own site or Google listing saves an awkward opener.
A note on doing this ethically
This uses only public business information — the same stuff a prospect could Google about themselves. It's research, not surveillance. Keep it to business profiles and public pages, and you're on solid ground.
Go further
Two optional upgrades for when you want more accuracy or more scale. Neither is required to start.
A) Accurate ratings with Google Maps needs a card
The one thing web search gets wrong is exact Google star ratings and review counts. If those matter, connect the Google Maps data directly. Honest heads-up: this needs a Google Cloud account with a credit card on file — there's a generous free monthly allowance, but Google requires billing to be set up.
Create a Google Cloud project
Go to console.cloud.google.com → create a project.
Enable the Places API
Search for and enable Places API (New) — places.googleapis.com.
Create an API key
Credentials → Create API key. Copy it somewhere safe. You'll be asked to enable billing (add a card).
Connect it to Claude (no code)
Google hosts a Maps connector. In Claude Code:
claude mcp add maps --transport http \ https://mapstools.googleapis.com/mcp \ --header "X-Goog-Api-Key: YOUR_MAPS_API_KEY"
In the Claude app, add it under Settings → Connectors → Add custom connector, using the same URL and putting the key in a request header named X-Goog-Api-Key.
Cost: Google gives ~5,000–10,000 free lookups/month; a few hundred rating checks costs roughly $0–$3/month after that. Verdict: for a solo marketer just starting, skip it — use Exa + spot-check ratings by hand. Add Google Maps once you're calling enough that exact review counts change who you prioritize.
B) The full tool (database + dashboard)
The Project + Sheet setup is perfect for one or a few people running batches by hand. If M2 scales this into a real pipeline, there's a heavier version — the actual tool Flow Systems runs — that Cam can help you stand up.
- Claude Project / Skill + Exa
- Output to Google Sheets / CSV
- Manual outcome tracking
- Zero-to-low cost, anyone can run it
- A real database — every lead stored, de-duplicated across all batches
- A web dashboard: filter by score/region/status, one-click CSV export
- Google Places for accurate ratings, baked in
- Built-in email/SMS outreach sequences (careful, opt-in, kill-switched)
The full tool needs a Cloudflare account, a short deploy, and a couple of API keys — a developer setup, not paste-and-go. Worth it when you're pulling leads constantly. Until then, this page does 90% of the job for ~0% of the hassle. Cam runs the full version internally and can walk your team through their own copy when you're ready.