Agent skill
lead-dossier
From ericosiu/ai-marketing-skills · 21 skills · 3,449 · pushed 2026-08-16
What it does when it runs
Read from the skill and the 8 files 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
- API_KEY
- BUILTWITH_API_KEY
- CAMPAIGN_TOOL_API_KEY
- CRM_API_KEY
- EMAIL_VALIDATION_API_KEY
- LEAD_SOURCE_API_KEY
- YOUR_KEY
- Hosts it reaches
- api.apollo.io
- api.builtwith.com
- api.hubapi.com
- api.your-campaign-tool.com
- api.your-email-provider.com
- api.your-provider.com
- levelingup.beehiiv.com
- singlebrain.com
- www.singlegrain.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
- shellwrites files
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ericosiu/ai-marketing-skills.git /tmp/ai-marketing-skills git -C /tmp/ai-marketing-skills sparse-checkout set "lead-dossier" mkdir -p ~/.claude/skills/lead-dossier cp -R "/tmp/ai-marketing-skills/lead-dossier/." ~/.claude/skills/lead-dossier/
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.
Before you install: this skill will not complete its job on a bare agent. It needs API_KEY, BUILTWITH_API_KEY, CAMPAIGN_TOOL_API_KEY, CRM_API_KEY, EMAIL_VALIDATION_API_KEY, LEAD_SOURCE_API_KEY, YOUR_KEY, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from ericosiu/ai-marketing-skills/blob/2eb0f34edb8d6111ca8b2930fed92413c9af7002/lead-dossier/SKILL.md, which is licensed MIT (repository). 739 words, 18 headings.
name: lead-dossier description: > Multi-source account research, cascade enrichment, and lead pipeline. Combines website scraping, tech stack detection, CRM enrichment, hiring/news signals into structured dossiers. Includes full lead sourcing pipeline: search → verify → dedupe → upload. Triggers on: "research account", "build dossier", "enrich leads", "lead pipeline", "source leads", "prospect research", "account intel", "cascade enrichment", "lead scoring", "find leads", "verify emails", "upload leads".
Lead Dossier Skill
Multi-source account research and lead enrichment pipeline for AI coding assistants.
Prerequisites
- Python 3.9+ with
requestsinstalled - API keys configured as environment variables (see
.env.example) - Optional: CRM access for contact/company enrichment
Environment Variables
All API keys are configured via environment variables. Copy .env.example to .env:
| Variable | Description |
|---|---|
LEAD_SOURCE_API_KEY | People/company search API |
EMAIL_VALIDATION_API_KEY | Email verification service |
EMAIL_VALIDATION_API_URL | Email verification endpoint |
CAMPAIGN_TOOL_API_KEY | Outbound campaign platform |
CRM_API_KEY | CRM API key |
CRM_BASE_URL | CRM API base URL |
BUILTWITH_API_KEY | BuiltWith tech detection (free tier works) |
Workflow 1: Account Research
Use when asked to research a company or build a prospect dossier.
Collect Parameters
| Parameter | Required | Example |
|---|---|---|
| Domain | Yes | acme.com |
| Company name | No | Acme Corp |
| Contact name | No | Jane Doe |
| Contact title | No | VP Marketing |
Run Research
python3 scripts/account-researcher.py --domain acme.com --company "Acme Corp"
For batch research:
python3 scripts/account-researcher.py prospects.json
Results are cached for 7 days in data/account-research/.
Output Format
The engine produces a structured JSON dossier with:
- Website analysis (title, description, body snippet, marketing gaps)
- Tech stack (CRM, marketing tools, enterprise signals)
- Hiring signals (growth indicators)
- News/funding signals
- 3-5 sentence research brief
Workflow 2: Cascade Enrichment
Use when enriching a list of prospects with verified email addresses.
Prepare Config
Create data/enrichment-config.json:
{
"email_validation_api_key": "YOUR_KEY",
"email_validation_api_url": "https://api.your-provider.com/v1/people/email-finder",
"email_validation_timeout_seconds": 10,
"fallback_tag": "linkedin-outreach-only"
}
Run Enrichment
python3 scripts/cascade-enricher.py input.json output.json
Waterfall logic:
- Has email from primary source? → Done
- Try email finder API → Found? → Done
- Has LinkedIn URL? → Tag as fallback
- None → Tag as no-contact
Workflow 3: Full Lead Pipeline
Use when sourcing, verifying, and uploading leads end-to-end.
Collect Parameters
| Parameter | Required | Example |
|---|---|---|
| Titles | Yes | VP Marketing, CMO |
| Industries | Yes | Marketing, SaaS |
| Company size | Yes | 11-50, 51-200 |
| Locations | Yes | United States |
| Campaign ID | Yes | Campaign UUID |
| Volume | Yes | 500 |
Run Pipeline
python3 scripts/lead-pipeline.py \
--source-api-key "$LEAD_SOURCE_API_KEY" \
--validation-api-key "$EMAIL_VALIDATION_API_KEY" \
--campaign-api-key "$CAMPAIGN_TOOL_API_KEY" \
--titles "VP Marketing,CMO,Head of Growth" \
--industries "Marketing,Advertising" \
--company-size "11,50" \
--locations "United States" \
--campaign-id "CAMPAIGN_UUID" \
--volume 500 \
--output-dir ./data/pipeline-runs/
Optional flags:
--exclude-file /path/to/burned-emails.csv— additional exclusion list--dry-run— run everything except the final upload--keywords "SaaS,B2B"— additional search keywords
Review Output
Pipeline saves a JSON run log to the output directory with full stats:
- Sourced count, verification rate, dedup stats, upload results
- Complete list of leads processed
Workflow 4: Real-Time Lead Enrichment
Use for enriching inbound leads from webhooks, forms, or CRM triggers.
Run Enricher
python3 scripts/lead-enricher.py [--dry-run] [--backfill N]
The enricher:
- Parses inbound lead data (website forms, voice agent calls, etc.)
- Looks up contact and company in CRM
- Runs account research for context
- Builds an enriched lead card with all available data
Safety Rules
- Never upload unverified leads — every email must pass validation
- Always deduplicate — check existing contacts before uploading
- Log everything — every run produces an auditable JSON log
- Rate limit aware — built-in delays and exponential backoff
- Idempotent — safe to re-run; duplicates are caught by dedup step
- Security gates — scan all inbound web content before processing
Troubleshooting
- Search API returns no results: Check title/industry spelling; try broader criteria
- Email validation 429s: Script handles with backoff; if persistent, reduce volume
- Campaign tool silent failures: Some APIs silently block at high request rates; scripts include batch delays
- Cache stale: Delete files in
data/account-research/to force refresh
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.
- no-lead-left-behind-lead-treatment-audit by zapier · 329
- lead-magnets by coreyhaines31 · 45,947
- lead-magnet by OpenClaudia · 664
- daily-lead-steward by zapier · 329
- find-lead-account-owner by zapier · 329
- inbound-lead-audit-cx-map by zapier · 329
- lead-scoring by shawnpang · 308
- lead-enrichment by janskuba · 199
Need help setting it up?
This page tells you what lead-dossier 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.