prospect-research
Build or refresh a Research Capsule for a sales prospect: a structured Markdown file in your local vault plus an optional short summary projection you can paste into your CRM.
When to invoke
- On demand: "Research [prospect name / company]" or "refresh capsule for [slug]"
- In a pipeline: call this skill after a discovery step produces a new lead row, before drafting outreach
- Batch: iterate over a list of slugs sorted by
next_refresh_at ASC, research each one before handing off to your outreach step
Inputs
slug (required) — a short kebab-case identifier for this prospect (e.g. jane-smith-acme). You define the slug convention; keep it stable across refreshes.
force_refresh (optional, default false) — if true, recompute all sections even when a capsule file already exists. If false and the file exists, append a refresh timestamp line to the History section and stop.
Configuration — fill in before first use
Before running this skill, set your context in prospect-research/config.md (create it from the template at prospect-research/templates/config-template.md):
- ICP definition — who your ideal customer is (industry, role, company size, geography, problem type)
- Your product/service — what you offer and the core value proposition
- Outreach angles — customize the V1/V2/V3 framework (see below) to fit your offer
- Vault directory — where Research Capsules will be written (
~/your-vault/Capsules/ or any absolute path)
- CRM field name — the label for the short summary projection in your CRM (optional)
Process
Check for an existing capsule at {vault_dir}/Capsules/{slug}.md.
- If it exists and
force_refresh=false → append a one-line refresh note to the History section and stop.
- Otherwise → full research.
Gather prospect data — collect the following. If a source is unavailable or uncertain, write To enrich. (do not invent).
- Current role and background: LinkedIn profile, company website, press releases. Note title, company, tenure, and any recent role change.
- Company context: industry, size, business model. Public filings, Crunchbase, or company site.
- Mutual connections / existing relationship: note any shared contacts, past interactions, or referrals.
- Recent signals: LinkedIn activity (posts, comments), job postings at their company, recent news (funding, product launch, M&A, regulatory event). These are the hooks for V3.
- Workflow pain: infer from their role + industry + your ICP definition. What time-consuming, error-prone, or high-stakes workflow does your product address for this person? Be specific (e.g. "manual reconciliation of X", "copy-paste between Y and Z").
Build three outreach angles — adapt these to your product using your config.md:
- V1 — Workflow pain: the concrete, manual task your product removes. Frame it from their daily reality, not your feature list.
- V2 — Expertise / peer credibility: a "practitioner-to-practitioner" angle — you understand their domain, not just their job title.
- V3 — External signal: a rebound off a recent market event, regulatory change, industry consolidation, or news item relevant to them. Shows you did your homework.
- Recommended angle: pick V1/V2/V3 based on what you found. Justify in one sentence.
Recommended action: propose a next step (draft-outreach, warm-engage, research-more, or skip). Base it on fit with your ICP + strength of signals found.
Render the capsule using lib/capsule.py:render_capsule(research_input) and the template at templates/capsule-template.md.
Write the capsule file to {vault_dir}/Capsules/{slug}.md (idempotent overwrite).
Compute the CRM projection (optional): lib/capsule.py:compute_notes_projection(research_input) → a ≤ 200-character summary suitable for a CRM notes field.
Log a line in {vault_dir}/Daily/{YYYY-MM-DD}.md: skill name, slug, recommended angle, proposed action, capsule path.
Output
- Capsule path — absolute path of the written
.md file
- One-line summary for your log or CRM:
{slug} — capsule {created|refreshed} — angle V{1|2|3} — action {draft-outreach|warm-engage|research-more|skip}
Guardrails
- Read-only on social sources. This skill never posts, likes, comments, or sends messages. Outreach is a separate, human-approved step.
- Do not invent signals. If a piece of information cannot be found or verified, write
To enrich. — never fabricate data to fill a section.
- Defensive CRM writes. If you integrate CRM writes, wrap them so a transient API error never prevents the capsule file from being written (the
.md is the primary output).
- Idempotent. Re-running without
force_refresh=true only adds a history line — nothing is overwritten.
Files in this skill
prospect-research/
SKILL.md # this file — skill instructions for Claude
lib/
capsule.py # pure-Python rendering helpers (stdlib only)
templates/
capsule-template.md # Markdown template for Research Capsules
config-template.md # Fill this in with your ICP + vault path
examples/
example-research-input.py # Annotated example of a research_input dict
Quick start
- Copy
templates/config-template.md to prospect-research/config.md and fill it in.
- Ask Claude:
"Research [Name] at [Company] — slug: name-company".
- The capsule lands in your configured vault directory.
Python helpers
See lib/capsule.py for the public API:
render_capsule(research_input, template_path=None) -> str
write_capsule_file(slug, content, vault_dir) -> Path
compute_notes_projection(research_input, max_len=200) -> str
append_interaction_line(capsule_path, line) -> None
All functions are pure Python (stdlib only), fully documented, and tested independently of any CRM or database backend.
1---2name: prospect-research3description: Build or refresh a Research Capsule for a sales prospect. Pulls background, workflow pain points, recent signals, and three outreach angles (V1/V2/V3). Writes a structured Markdown file to your local vault. Read-only on social sources — never sends or posts anything.4license: MIT5---67# prospect-research89Build or refresh a **Research Capsule** for a sales prospect: a structured Markdown file in your local vault plus an optional short summary projection you can paste into your CRM.1011## When to invoke1213- **On demand:** "Research [prospect name / company]" or "refresh capsule for [slug]"14- **In a pipeline:** call this skill after a discovery step produces a new lead row, before drafting outreach15- **Batch:** iterate over a list of slugs sorted by `next_refresh_at ASC`, research each one before handing off to your outreach step1617## Inputs1819- `slug` (required) — a short kebab-case identifier for this prospect (e.g. `jane-smith-acme`). You define the slug convention; keep it stable across refreshes.20- `force_refresh` (optional, default `false`) — if `true`, recompute all sections even when a capsule file already exists. If `false` and the file exists, append a refresh timestamp line to the History section and stop.2122## Configuration — fill in before first use2324Before running this skill, set your context in `prospect-research/config.md` (create it from the template at `prospect-research/templates/config-template.md`):2526- **ICP definition** — who your ideal customer is (industry, role, company size, geography, problem type)27- **Your product/service** — what you offer and the core value proposition28- **Outreach angles** — customize the V1/V2/V3 framework (see below) to fit your offer29- **Vault directory** — where Research Capsules will be written (`~/your-vault/Capsules/` or any absolute path)30- **CRM field name** — the label for the short summary projection in your CRM (optional)3132## Process33341. **Check for an existing capsule** at `{vault_dir}/Capsules/{slug}.md`.35 - If it exists and `force_refresh=false` → append a one-line refresh note to the History section and stop.36 - Otherwise → full research.37382. **Gather prospect data** — collect the following. **If a source is unavailable or uncertain, write `To enrich.`** (do not invent).39 - **Current role and background:** LinkedIn profile, company website, press releases. Note title, company, tenure, and any recent role change.40 - **Company context:** industry, size, business model. Public filings, Crunchbase, or company site.41 - **Mutual connections / existing relationship:** note any shared contacts, past interactions, or referrals.42 - **Recent signals:** LinkedIn activity (posts, comments), job postings at their company, recent news (funding, product launch, M&A, regulatory event). These are the hooks for V3.43 - **Workflow pain:** infer from their role + industry + your ICP definition. What time-consuming, error-prone, or high-stakes workflow does your product address for this person? Be specific (e.g. "manual reconciliation of X", "copy-paste between Y and Z").44453. **Build three outreach angles** — adapt these to your product using your `config.md`:46 - **V1 — Workflow pain:** the concrete, manual task your product removes. Frame it from their daily reality, not your feature list.47 - **V2 — Expertise / peer credibility:** a "practitioner-to-practitioner" angle — you understand their domain, not just their job title.48 - **V3 — External signal:** a rebound off a recent market event, regulatory change, industry consolidation, or news item relevant to them. Shows you did your homework.49 - **Recommended angle:** pick V1/V2/V3 based on what you found. Justify in one sentence.50514. **Recommended action:** propose a next step (`draft-outreach`, `warm-engage`, `research-more`, or `skip`). Base it on fit with your ICP + strength of signals found.52535. **Render the capsule** using `lib/capsule.py:render_capsule(research_input)` and the template at `templates/capsule-template.md`.54556. **Write the capsule file** to `{vault_dir}/Capsules/{slug}.md` (idempotent overwrite).56577. **Compute the CRM projection** (optional): `lib/capsule.py:compute_notes_projection(research_input)` → a ≤ 200-character summary suitable for a CRM notes field.58598. **Log a line** in `{vault_dir}/Daily/{YYYY-MM-DD}.md`: skill name, slug, recommended angle, proposed action, capsule path.6061## Output6263- **Capsule path** — absolute path of the written `.md` file64- **One-line summary** for your log or CRM:65 > `{slug} — capsule {created|refreshed} — angle V{1|2|3} — action {draft-outreach|warm-engage|research-more|skip}`6667## Guardrails6869- **Read-only on social sources.** This skill never posts, likes, comments, or sends messages. Outreach is a separate, human-approved step.70- **Do not invent signals.** If a piece of information cannot be found or verified, write `To enrich.` — never fabricate data to fill a section.71- **Defensive CRM writes.** If you integrate CRM writes, wrap them so a transient API error never prevents the capsule file from being written (the `.md` is the primary output).72- **Idempotent.** Re-running without `force_refresh=true` only adds a history line — nothing is overwritten.7374## Files in this skill7576```77prospect-research/78 SKILL.md # this file — skill instructions for Claude79 lib/80 capsule.py # pure-Python rendering helpers (stdlib only)81 templates/82 capsule-template.md # Markdown template for Research Capsules83 config-template.md # Fill this in with your ICP + vault path84 examples/85 example-research-input.py # Annotated example of a research_input dict86```8788## Quick start89901. Copy `templates/config-template.md` to `prospect-research/config.md` and fill it in.912. Ask Claude: `"Research [Name] at [Company] — slug: name-company"`.923. The capsule lands in your configured vault directory.9394## Python helpers9596See `lib/capsule.py` for the public API:9798- `render_capsule(research_input, template_path=None) -> str`99- `write_capsule_file(slug, content, vault_dir) -> Path`100- `compute_notes_projection(research_input, max_len=200) -> str`101- `append_interaction_line(capsule_path, line) -> None`102103All functions are pure Python (stdlib only), fully documented, and tested independently of any CRM or database backend.