contact-research
Skill346 starsChanged 38 days agoMITView on GitHub
Contact research skill for Claude Code and Codex: given a list of people, match and enrich each one with Vibe Prospecting — verified work email, LinkedIn, direct phone, current role, work history, seniority, and recent job changes — then write a 4-6 sentence professional synopsis per person. Use for pre-call research, account intelligence, founder diligence, recruiting, and conference prep. Triggers on 'research these people', 'profile this contact list', 'who are these attendees', 'background on these prospects'. Works in Claude Code, Codex, Grok, and Claude Cowork.
- Reads credentials
2 other projects use a version of this.
Adopted by
Most recently taken up by
- anthropics/knowledge-work-pluginstheir own version, first seen Oct 13, 2026
- edu6565/claude-skillstheir own version, first seen Oct 11, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- anthropics/knowledge-work-plugins★ 35ksame name
- edu6565/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository21 other files it gives its agents.
- abm-campaignSkill
- account-contact-shortlistSkill
- account-fit-rankSkill
- account-researchSkill
- browser-extension-builderSkill
- clean-dataSkill
- cold-email-lemlistSkill
- competitor-researchSkill
- decision-makers-mapSkill
- enrich-companySkill
- enrich-contactSkill
- hubspot-enrichment-scoringSkill
- lead-gen-tool-builderSkill
- list-builderSkill
- lookalike-accountsSkill
- market-sizingSkill
- meeting-prepSkill
- personalize-emailSkill
- score-leadsSkill
- talent-mappingSkill
- talent-sourcingSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 38
Ask the user how they want to provide their list:
- Very specific: line 59
If the user describes a persona (e.g.
- Very specific: line 154
Read people-enriched.csv and write a professional brief for each person.
- Very specific: line 196
Write people-research.csv with columns:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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
Contact Research — Vibe Prospecting Deep Profile
Given a list of people, match and enrich each one with Vibe Prospecting, then have Claude write a professional synopsis — who they are, what they do, their career trajectory, and what's relevant to know before engaging with them.
What you'll end up with:
- Verified contact info (work email, LinkedIn, direct phone) for each person
- A full professional profile: current role, work history, seniority, department, company context
- Recent career signals: job changes, promotions
- A 4–6 sentence professional synopsis per person, written by Claude in plain English
Good for: pre-call research, account intelligence, investor diligence on founders, recruiting, conference prep.
Step 0 — Credential Check (Claude: always do this first)
Cowork mode: confirm mcp__*__fetch-entities is in your tool list.
- ✅ Found → proceed
- ❌ Missing → tell the user: "Please connect the Vibe Prospecting connector from the connector store, then let me know." Wait. Do not continue.
Claude Code / terminal:
npx @vibeprospecting/vpai@latest --help- ✅ Lists tools → proceed
- ❌ Error → run:
npx @vibeprospecting/vpai@latest config --api-key "YOUR_VP_API_KEY"
Phase 1 — Prepare Your People List
Ask the user how they want to provide their list:
"How would you like to provide the people? You can: (A) paste names and companies directly in chat, (B) share a CSV file, or (C) describe who you're targeting and I'll find them from Vibe Prospecting's database."
Option A — Paste in chat
Claude converts the input into a structured CSV. Minimum needed per person: full_name + one of company_name, email, or linkedin.
Option B — CSV file
Accepted columns (use whatever you have — more is better for matching):
| Column | Description |
full_name | Full name (or first_name + last_name separately) |
email | Work or personal email |
linkedin | LinkedIn profile URL |
company_name | Current company name |
business_id | Vibe Prospecting business ID (skip match step if you have this) |
Save the file as people-input.csv.
Option C — Find them from scratch
If the user describes a persona (e.g. "CFOs at fintech companies in the US"), use fetch-entities with entity_type: prospects to build the list, then proceed from Phase 2. Sample 5 first before scaling.
npx @vibeprospecting/vpai@latest fetch-entities \
--args '{
"entity_type": "prospects",
"filters": {
"job_level": {"values": ["c_suite"]},
"job_department": {"values": ["finance"]},
"linkedin_category": {"values": ["Financial Services"]},
"company_country_code": {"values": ["US"]},
"has_email": true
}
}' \
--number-of-results 5 \
--tool-reasoning '<user request verbatim>'Phase 2 — Match to Vibe Prospecting IDs
Resolve each person to an Explorium prospect ID. This unlocks all downstream enrichment.
npx @vibeprospecting/vpai@latest match-prospects --all-parameters
# From CSV
npx @vibeprospecting/vpai@latest match-prospects \
--file-path people-input.csv \
--schema '{"full_name":"full_name","email":"email","linkedin":"linkedin","company_name":"company_name"}' \
--tool-reasoning 'Match people list for deep contact research'Note the session_id and table_name from the output.
On low match confidence: drop records with confidence < 0.7 and flag them for the user — they may need a cleaner input (e.g. adding LinkedIn URL or email helps significantly).
Phase 3 — Enrich Profiles and Contact Info
Pull the full professional profile for each matched person, plus their verified contact details.
npx @vibeprospecting/vpai@latest enrich-prospects --all-parameters
npx @vibeprospecting/vpai@latest enrich-prospects \
--args '{
"enrichments": ["contacts", "profiles"]
}' \
--session-id <SESSION_ID> \
--table-name <TABLE_NAME_FROM_MATCH_STEP> \
--tool-reasoning 'Enrich profiles and contact info for research' \
--csvWhat "profiles" gives you:
- Current job title, department, seniority level
- Full work history (company, title, dates)
- Education history
- LinkedIn URL
- Skills and areas of expertise
What "contacts" gives you:
- Verified work email
- Direct phone / mobile (when available)
- LinkedIn URL (confirmed)
Phase 4 — Fetch Career Signals
Pull recent career events for each person — job changes and promotions are the most useful signals for understanding where someone is and why they might be receptive to a conversation.
npx @vibeprospecting/vpai@latest fetch-prospects-events --all-parameters
npx @vibeprospecting/vpai@latest fetch-prospects-events \
--args '{
"event_types": ["job_change", "promotion"],
"timestamp_from": "<12 months ago, format YYYY-MM-DD>"
}' \
--session-id <SESSION_ID> \
--table-name <TABLE_NAME_FROM_ENRICH_STEP> \
--tool-reasoning 'Fetch career events for contact research' \
--csvSave the combined enriched + events data as people-enriched.csv.
Phase 5 — Write Professional Synopses
Read people-enriched.csv and write a professional brief for each person. Each synopsis should be in plain, natural English — like a colleague briefing you before a meeting, not a LinkedIn bio.
For each person, write a 4–6 sentence synopsis covering:
- Who they are right now — current role, company, seniority. What they're responsible for.
- How they got here — 1–2 relevant prior roles that show their trajectory or expertise.
- What they know — domain expertise, industries they've worked in, notable skills or patterns across their career.
- What's changed recently — any job change or promotion in the last 12 months. If nothing changed, note their tenure in the current role.
- What's worth knowing — one insight that would be useful before engaging: a shared background, a relevant company pivot, a pattern in their career, or a company context signal (e.g. their company just raised, or is in a growth stage).
Tone: confident, specific, no filler. Avoid phrases like "passionate about", "seasoned professional", or "proven track record." Use the actual data.
Example synopsis:
Sarah Chen is the VP of Revenue Operations at Lattice, where she owns the full RevOps stack — CRM, pipeline reporting, territory planning, and sales tool evaluation. Before Lattice she spent four years at Salesforce, first as a sales ops analyst and then as a senior manager, which explains her strong bias toward CRM-native workflows. Her career has stayed tightly in the revenue/GTM ops lane, moving from execution roles into leadership over the last three years. She joined Lattice 14 months ago, likely as part of a post-Series D scaling push. Worth knowing: Lattice runs HubSpot, not Salesforce — so she made a deliberate switch when she moved, which suggests she's not locked into any one platform.
Phase 6 — Deliver the Output
Present results in two formats:
1. In-chat briefing (for small lists, ≤ 10 people)
Show each person as a card:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
👤 [Full Name] — [Title] at [Company]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📧 [work_email]
🔗 [linkedin_url]
📱 [phone if available]
[Synopsis paragraph]
Career signals: [any job change/promotion in last 12 months, or "No recent changes — [X] years in current role"]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2. CSV export (for larger lists or when the user wants to save/share)
Write people-research.csv with columns:
| Column | Description |
full_name | Full name |
job_title | Current title |
company_name | Current company |
work_email | Verified work email |
linkedin_url | LinkedIn URL |
phone | Direct phone (if available) |
synopsis | Claude's professional synopsis |
career_signal | Most recent job change or promotion (if any, last 12 months) |
years_in_role | Approximate tenure in current role |
Full Checklist
[ ] Step 0 — Vibe Prospecting connected
[ ] Phase 1 — People list prepared (pasted, CSV, or fetched)
[ ] Phase 2 — Matched to Vibe Prospecting prospect IDs
[ ] Phase 3 — Profiles and contact info enriched
[ ] Phase 4 — Career signals fetched (job changes, promotions)
[ ] Phase 5 — Professional synopses written by Claude
[ ] Phase 6 — Delivered as in-chat cards and/or CSV exportTroubleshooting
| Problem | Solution |
| Vibe Prospecting tools missing | Connect from connector store; wait for mcp__*__fetch-entities to appear |
| Low match rate | Add LinkedIn URLs or emails to input — they're the strongest match signals. Names alone match poorly for common names |
| Profile data sparse | Not all profiles are equally populated. Flag thin records to the user and note what's missing |
| No contact info returned | Some people have limited public contact data. Note it in the synopsis card rather than leaving it blank |
| Career events empty | Person may not have changed jobs recently — note their tenure in current role instead |
| Synopsis feels generic | Claude needs data to work with — if enrichment returned little, flag the record rather than inventing details |
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.

