How it works
Three steps. One ranked list. Nothing you cannot audit.
Every score is a sum of signals, and every signal has to quote the text it came from. If you disagree with a score, you can see exactly which line caused it.
The pipeline
What happens when you hit run.
01 Source
Google Maps pull
Text Search on your term and area. Google returns a maximum of 20 businesses per query.
02 Filter
Hard filters
Missing website, missing phone, low rating, thin review count, PO boxes, banned keywords. Dropped before anything is spent.
03 Read
Reviews and site
Listing fields, review text, and the prospect's own public website are fetched as evidence.
04 Score
Signal verdicts
Hit, miss, or unknown on every signal in your profile, each with a quoted snippet.
05 Out
Rank and export
Funnel math sets the tier. CSV or Airtable. Below-bar leads are kept with their reason.
Filtered leads never reach the scorer, so they do not count against your monthly allowance.
Tell us your ICP
Pick a business type, a service area, and the signals that matter. Write the disqualifiers in plain English. Anything you list as a disqualifier becomes an anti-signal: one clear hit zeroes the score.
Five profiles ship with the tool. You can write your own.
Owner-operator HVAC companies, 100–2,000
Google reviews, no national franchise,
no existing call-tracking vendor.
disqualify: multi-state ops, Yext/Birdeye,
CallRail or WhatConverts on site
bar: 2 A-tier hits · funnel score ≥ 3
We pull and score
A-tier signals are the ones that define the fit and count 3 each. B-tier signals are supporting evidence and count 1 each. A signal that cannot be checked from a public source reads unknown and contributes nothing.
Hunter enrichment only runs on leads that already passed your filters.
"called three times, no one picked up"
HIT A · Owner named on About page
"family-owned by the Delgados since 1998"
HIT B · Single phone number on site
MISS B · Chat widget vendor detected
funnel 3+3+1 = 7 → WARM · score 81
Work the top of the list
Export to CSV, push to Airtable, or hand the list to your CRM. Below-bar leads are written out separately with the reason they were dropped, so you can tune the bar instead of guessing.
Batch mode runs a list of queries in sequence and dedupes across the whole run.
name,score,tier,signals_hit,reason,phone,email
Music City Heating,94,HOT,6,"missed-call…
Cumberland Air,89,HOT,6,"owner named…
Riverside HVAC,81,WARM,4,"access fric…
— 4 rows below bar written to dropped.csv
The funnel scale
How a score becomes a tier.
Funnel score = A-tier hits × 3 + B-tier hits × 1. The same scale is used for every profile.
≥ 9
Hot
Three or more A-tier hits. Call this week.
6 – 8
Warm
Two A-tier hits plus support. Worth a sequence.
3 – 5
Cold
Thin evidence. Only workable if you lower the A-tier bar to 1.
Below bar
Drop
Under your bar, or an anti-signal fired. Kept with the reason attached.
Coverage, stated plainly
What we can read today, and what we cannot.
Signals on sources that are not wired up read unknown. They never count as a hit or a miss, so they cannot quietly move a score.
| Source | Status | Signals it feeds |
|---|---|---|
| Google listing fields | Live | Review count, rating, category, business status, address, phone, website |
| Google review text | Live | Missed-call complaints, access friction, recency, sentiment on specific pain |
| Prospect website | Live | Owner naming, team size, hours and after-hours claims, phone-line count, vendor scripts |
| Hunter.io | Live | Contact name, role, verified email, confidence score |
| Job boards | Coming soon | Hiring signals such as a receptionist or dispatcher opening |
| Social posts | Coming soon | Owner posts about phone load, overhead, or hiring |
| Directories and registries | Coming soon | Trade association membership, ownership-change records |
See the scoring on your own market.
14-day trial, full Solo access, no credit card. Run one query on a market you already know and check the scores against your gut.