google-maps-owner-email-finder
Skill4 starsChanged 2 months agoMITView on GitHub
Research owner evidence and public website emails for a local-business CSV without paid APIs, then return a reviewable result that preserves unknowns.
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 9 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Use a CSV with these headers:
- Very specific: line 22
Use the google-maps-list-builder skill first when the Maps export still needs normalization, deduplication, or company-fit review.
- Very specific: line 56
Read every JSON file under run/evidence/.
- Distinctive: line 58
Use these owner states:
- Very specific: line 66
Use explicit only for explicit owner or proprietor language.
- Distinctive: line 67
Use pages on the supplied company website.
- Very specific: line 68
If two pages conflict, use unknown and explain the conflict in notes.
- Distinctive: line 69
Never infer a person from the company name.
- Distinctive: line 70
Never generate an email from a name and domain pattern.
- Distinctive: line 74
Use an email only when it appears on a cited public website page.
- Very specific: line 82
Keep the exact page in email_source_url.
- Distinctive: line 84
If the page publishes only a generic address, keep it.
- Very specific: line 86
If no public email appears, leave public_email and email_source_url empty.
- Distinctive: line 118
every input company has one output row.
- Distinctive: line 119
every owner claim has a cited page and supporting text.
- Very specific: line 121
every email is copied from a cited public page and marked published_unverified.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Google Maps Owner and Email Finder
Turn a local-business company file into cited owner findings and public website emails. The workflow runs locally without a paid API.
Expect unknown results. The workflow does not verify email deliverability or guess email patterns.
Required input
Use a CSV with these headers:
company_name,websiteOptional columns such as place_id, address, phone, source_url, and observed_at may remain in the file. The collector reads only the company name and website.
Use the google-maps-list-builder skill first when the Maps export still needs normalization, deduplication, or company-fit review.
Step 1: Collect website evidence
From this skill folder, run:
node scripts/collect-website-evidence.mjs --input=path/to/companies.csv --output-dir=runOptional limits:
node scripts/collect-website-evidence.mjs \
--input=path/to/companies.csv \
--output-dir=run \
--max-pages=20 \
--concurrency=3The collector:
- visits the company homepage;
- follows direct About, Team, Story, Leadership and Contact links;
- collects sentences that mention ownership or leadership roles;
- collects email addresses published on the visited pages;
- records the page URL for every result;
- rejects local, private, non-HTTP and oversized targets;
- saves one JSON evidence file per company plus
evidence-index.csv.
It does not decide who the owner is.
Step 2: Review the evidence
Read every JSON file under run/evidence/. Create run/owners.csv using templates/owners-output.csv as the header contract.
Use these owner states:
explicit: a cited public page explicitly identifies the named person as the owner or proprietor of the same business.unknown: the evidence does not support a defensible owner claim or sources conflict.
Rules:
- Preserve the role exactly as the page states it. Founder, president and CEO do not mean owner without explicit ownership wording.
- Use
explicitonly for explicit owner or proprietor language. - Use pages on the supplied company website. Do not substitute LinkedIn profiles, directory listings or AI answers.
- If two pages conflict, use
unknownand explain the conflict innotes. - Never infer a person from the company name.
- Never generate an email from a name and domain pattern.
Step 3: Record public emails
Use an email only when it appears on a cited public website page.
Set:
email_status=published_unverifiedKeep the exact page in email_source_url.
If the page publishes only a generic address, keep it. Do not relabel it as the owner's direct email.
If no public email appears, leave public_email and email_source_url empty.
Step 4: Audit the result
Run:
node scripts/audit-results.mjs --input=run/owners.csvThe audit rejects:
- owner claims without evidence;
explicitclaims without owner or proprietor language in the saved evidence text;- public emails without
published_unverified; - emails without a source URL;
- emails that do not appear in the saved evidence for the cited source page;
- generated-looking or malformed email values;
- unsupported status values.
The audit checks the file contract. A person must still review every claimed owner against the cited page before outreach.
Output contract
Return owners.csv with:
company_name,website,owner_name,owner_role,owner_status,evidence_url,evidence_text,public_email,email_status,email_source_url,notesComplete when:
- every input company has one output row;
- every owner claim has a cited page and supporting text;
- unsupported or conflicting owners remain
unknown; - every email is copied from a cited public page and marked
published_unverified; - the audit passes;
- a person reviews the claimed-owner rows.
What this does not include
The package starts with a reviewed company CSV and stops at a reviewed owner-and-email CSV. It does not collect the Maps list, use LinkedIn, run paid enrichment, verify deliverability or send outreach.
In this repository12 other files it gives its agents.
- audience-content-osSkill
- buyer-signal-list-researchSkill
- cold-offer-reviewSkill
- google-maps-list-builderSkill
- icp-prompt-builderSkill
- linkedin-content-writerSkill
- list-builderSkill
- list-expanderSkill
- offer-creationSkill
- outbound-funnel-economicsSkill
- tiktok-slideshow-machineSkill
- x-content-writerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

