Agent skill
person-researcher
Research a specific person for hyperpersonalized outreach using their public activity
Filed under Outbound email.
From ekatasingh1107/b2b-gtm-skills · 99 skills · 2 · pushed 2026-04-11
What it does when it runs
Research a specific person for hyperpersonalized outreach using their public activity
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- linkedin.com
- medium.com
- youtube.com
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- network
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ekatasingh1107/b2b-gtm-skills.git /tmp/b2b-gtm-skills git -C /tmp/b2b-gtm-skills sparse-checkout set "skills/capabilities/person-researcher" mkdir -p ~/.claude/skills/person-researcher cp -R "/tmp/b2b-gtm-skills/skills/capabilities/person-researcher/." ~/.claude/skills/person-researcher/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from ekatasingh1107/b2b-gtm-skills/blob/eae8dd0bb98da1c8e84abd297066a87015dd860f/skills/capabilities/person-researcher/SKILL.md, which is licensed MIT (repository). 1,148 words, 13 headings.
Person Researcher
Researches a specific person's public activity and presence for hyperpersonalized outreach. Finds their LinkedIn posts, conference talks, articles, Twitter activity, career trajectory, and interests. The output feeds into message-generator Tier 3 personalization.
Prerequisites
- WebSearch tool available
- Person's name (required) and at least one of: company, title, LinkedIn URL, email domain
- Optional:
agency.config.jsonfor service context (to identify relevant conversation topics)
Phase 0: Intake
- Read
agency.config.jsonfrom the project root (if available). - Extract
services[].nameandicp.segments[].titlesto know which topics are relevant to the agency's pitch. - Accept parameters:
name-- (required) full name of the personcompany-- (recommended) their current companytitle-- (optional) their job titlelinkedin_url-- (optional) direct LinkedIn profile URLemail-- (optional) for additional search contextdepth--quick(3-5 searches) |standard(8-12 searches) |deep(15+ searches). Default:standard
Phase 1: LinkedIn Activity
WebSearch queries:
"{{name}}" site:linkedin.com/in-- find their profile"{{name}}" "{{company}}" site:linkedin.com/posts-- find their posts"{{name}}" "{{company}}" site:linkedin.com/pulse-- find their articles
Extract:
- Profile URL: Their LinkedIn profile link
- Current title and company: Verify against provided data
- Recent posts (last 3-6 months):
- Topic / subject of each post
- Date (approximate)
- Key points or opinions expressed
- Engagement level (if visible in snippets)
- Articles published: LinkedIn Pulse articles or newsletter posts
- Activity themes: What topics do they post about most? (e.g., ecommerce trends, marketing, leadership, hiring)
Phase 2: Conference Talks and Podcast Appearances
WebSearch queries:
"{{name}}" "{{company}}" "speaker" OR "keynote" OR "panelist" OR "conference""{{name}}" "{{company}}" "podcast" OR "episode" OR "interview""{{name}}" "{{company}}" site:youtube.com
Extract:
- Conference names and dates
- Talk titles and topics
- Podcast names and episode details
- YouTube videos (talks, interviews, webinars)
- Key quotes or positions taken
Phase 3: Written Content
WebSearch queries:
"{{name}}" "{{company}}" "blog" OR "article" OR "wrote" OR "author""{{name}}" site:medium.com"{{name}}" "{{company}}" site:substack.com
Extract:
- Blog posts (personal or company blog)
- Medium articles
- Substack newsletters
- Guest posts on industry publications
- Topics and themes of their writing
Phase 4: Twitter/X Activity
WebSearch queries:
"{{name}}" "{{company}}" site:twitter.com OR site:x.comfrom:@possible_handle "{{company}}"(if handle can be inferred)
Extract:
- Twitter/X handle
- Recent tweets (topics, opinions, retweets)
- Engagement style (thought leader, curator, responder, lurker)
- Followers count (if visible)
- Notable threads or viral tweets
Phase 5: Career Trajectory
WebSearch queries:
"{{name}}" "joins" OR "appointed" OR "promoted" OR "new role" OR "announces""{{name}}" "{{company}}" "previously at" OR "former" OR "ex-""{{name}}" site:crunchbase.com OR site:angel.co
Extract:
- Current tenure at company (how long?)
- Previous companies and roles
- Career progression pattern (agency to brand, brand to brand, startup founder, etc.)
- Recent job change (within last 6 months = high relevance signal)
- Board positions or advisory roles
- Investments or startup involvement
Phase 6: Shared Interests and Connections
WebSearch queries:
"{{name}}" "{{company}}" "award" OR "recognition" OR "achievement""{{name}}" "{{agency_founder_name}}" OR "{{agency_name}}"-- check for existing connections"{{name}}" "{{company}}" hobby OR passion OR volunteer OR community
Extract:
- Mutual connections (if any with the agency team)
- Shared alma mater, city, or industry events
- Personal interests visible in public profiles (sports, causes, hobbies)
- Awards or recognitions
- Community involvement
Phase 7: Synthesize Personalization Hooks
From all research, generate 3-5 specific, actionable personalization hooks. Each hook should be:
- Specific: Reference a real post, talk, or event, not a generic trait
- Recent: Prefer hooks from the last 3 months
- Relevant: Connect to the agency's services where possible
- Natural: Sound like something a human would notice and mention
- Non-creepy: Avoid referencing personal/family details, locations, or anything that feels invasive
Good hooks:
- "Your LinkedIn post about the challenges of scaling a D2C brand resonated, especially the point about checkout friction."
- "Saw your talk at ShopifyConnect about mobile commerce, we've been working on exactly that with our clients."
- "Congrats on the move to BrandX, exciting time to be building their ecommerce presence."
Bad hooks:
- "I saw you went to Stanford." (too generic, feels stalkerish)
- "I noticed you live in Brooklyn." (personal, irrelevant)
- "You seem really passionate about ecommerce." (vague, could apply to anyone)
Phase 8: Output
Return structured JSON:
{
"name": "Jane Doe",
"title": "Head of Ecommerce",
"company": "BrandX",
"linkedin_url": "https://linkedin.com/in/janedoe",
"twitter_handle": "@janedoe",
"recent_posts": [
{
"platform": "LinkedIn",
"topic": "Mobile conversion optimization for D2C brands",
"date": "2024-01-10",
"key_point": "Argued that most D2C brands lose 40% of mobile shoppers at checkout",
"url": "https://linkedin.com/posts/..."
},
{
"platform": "LinkedIn",
"topic": "The role of UGC in building brand trust",
"date": "2023-12-20",
"key_point": "Shared data showing UGC increases conversion 2.4x vs brand content",
"url": "https://linkedin.com/posts/..."
}
],
"talks_or_appearances": [
{
"event": "D2C Summit 2023",
"topic": "Building a conversion-first product page",
"date": "2023-11-15",
"url": "https://youtube.com/..."
}
],
"articles": [
{
"title": "Why Your Shopify Store Needs a CRO Audit",
"publication": "Medium",
"date": "2023-10-05",
"url": "https://medium.com/..."
}
],
"career_notes": "Joined BrandX 8 months ago from CompetitorY where she was Senior Marketing Manager. Career trajectory: agency (3 years) -> brand-side marketing (4 years) -> ecommerce leadership.",
"interests": ["Mobile commerce", "UGC marketing", "Sustainable packaging", "Women in tech"],
"mutual_connections": [],
"personalization_hooks": [
"Reference her LinkedIn post about mobile checkout friction -- directly relevant to CRO services",
"Mention her D2C Summit talk about conversion-first product pages -- show you've done homework",
"She joined BrandX 8 months ago -- likely still building her stack and open to agency partners",
"Her Medium article about CRO audits makes her a warm lead -- she already believes in the value",
"Connect over the UGC conversation -- share a relevant case study about UGC impact on conversion"
],
"outreach_tone_recommendation": "Peer-to-peer, reference shared expertise in CRO. She's knowledgeable, so lead with specifics, not basics.",
"researched_at": "2024-01-15T14:30:00Z",
"depth": "standard",
"search_count": 10
}
Phase 9: Confidence Assessment
Rate the research quality:
- HIGH confidence: Found LinkedIn profile, recent posts, career data, and multiple personalization hooks
- MEDIUM confidence: Found profile and some activity, but limited recent posts or content
- LOW confidence: Common name, ambiguous results, minimal public presence
If LOW confidence, note which searches were ambiguous and suggest the user verify the LinkedIn URL directly.
Example Usage
Trigger phrases:
- "Research this person before I reach out"
- "Find info on [name] at [company]"
- "Person intel for [name]"
- "What can you find about [name] for personalization?"
- "Prep outreach research on [name]"
User: Research Jane Doe, Head of Ecommerce at BrandX
Assistant: [runs 8-12 WebSearches across LinkedIn, Twitter, conferences, articles, returns structured JSON with personalization hooks]
User: Quick lookup on this LinkedIn profile: linkedin.com/in/janedoe
Assistant: [runs 3-5 focused searches using the profile as anchor, returns condensed research]
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- prospect-researcher by JJenglert1 · 55
Need help setting it up?
This page tells you what person-researcher does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.