Build a structured, enriched investor shortlist (Excel, 31-column transaction pipeline) for any M&A or fundraising mandate — installed end-to-end as a Claude Code skill, in minutes.
Every M&A advisor, banker or founder building an investor shortlist runs the same loop: open three spreadsheets of past investors, cross-reference LinkedIn and Outlook contacts, hunt down current decision-makers, find their emails, score relevance, drop everything into a clean Excel with a transaction pipeline. Half a day, every mandate.
This Claude Code skill automates the loop:
- Asks the right questions — target company, sector, mandate type (fundraise / sell-side / buy-side / refinancing), volume, investor typology, geography
- Searches multiple sources in parallel — local Excel databases of investors you've worked with before, your Outlook contacts, the open web (Firecrawl)
- Enriches emails via Dropcontact — with multi-pass fallback (CFO if CEO not found, then Head of M&A, then
info@) - Generates a clean Excel — branded cover page + 31-column investor table with the full transaction pipeline (First email → Teaser → NDA → IM → Management pitch → MBO/LOI → Dataroom → Signing → Closing) ready to fill as the deal progresses
Built for: M&A boutiques, investment banks, family office advisors, founders running their own fundraise, solo dealmakers.
Built by: Hectelion SA — independent M&A advisory, Lausanne (Switzerland).
No copy-paste of code, no PowerShell typing. You paste one prompt into Claude Code, click "Allow" to approve each step, answer 4 config questions, done.
- Have Claude Code installed and signed in (claude.com/claude-code).
- Open a terminal in any folder. Run
claude. - Copy-paste the prompt from
CLAUDE_INSTALL_PROMPT.mdinto the conversation. - Send. Claude Code: clones the repo, copies the skill files into
~/.claude/skills/investor-shortlist/, prompts you for your Dropcontact API key (or env var), asks where your local investor databases live (optional), writesconfig.yaml, runs a smoke test. - From then on, in any Claude Code project, type
/investor-shortlistto launch the questionnaire and build a new shortlist.
Why Claude Code (not Claude.ai web)? Because Claude Code can read your local Excel databases, scan your Outlook contacts (Windows COM), call Dropcontact and Firecrawl, write the final .xlsx to a network drive, and open it in Excel for you. Web chat can't.
- Windows 10 or 11 (macOS works for the core skill, but Outlook contact scanning is Windows-only)
- Python 3.9+ on
PATH(python.org) - Claude Code installed + active Anthropic plan
- A Dropcontact API key — free trial at dropcontact.com (or skip Dropcontact and the skill falls back to web search +
info@patterns) - (Optional) Firecrawl MCP for live web research of current decision-makers
| Block | Questions |
|---|---|
| A — Target & mandate | Client name + website, country, mandate type (fundraise / sell-side / buy-side / refi / restructuring) |
| B — Target profile | Sector, sub-sector, funding round or M&A valuation range |
| C — Volume & typology | Number of investors (15–20 / 20–30 / 30–50 / 50+), typology multi-select (HNWI/FO, institutional, strategic, public/para-public), investor geography |
| D — Sources & output | Source mix (local / internet / hybrid), save path, filename |
Tab 1 — Cover page (your firm name in your brand color)
FIRM NAME
TARGET COMPANY — Mandate type
Subtitle (e.g. "Series A investor shortlist — MedTech Switzerland")
Prepared for: Dr. Jane Doe, CEO TARGET COMPANY
Date: 21 May 2026
Targets: 48 investors Switzerland (financial, family offices, strategic, public)
Tab 2 — Investors (31 columns)
Identification : # · Category · Investor · Country · City · Type · Focus · Civ · First · Last · Title · Email · Phone · Website
Scoring : Score 1–5 (color-coded: 5 green, 4 pale blue, 3 grey, 2 orange)
Pipeline : Type · Status · Contacted by · Last contact · First email · Date · Teaser · NDA · Date · IM · Date · Pitch date · MBO/LOI · Dataroom · Signing · Closing
The first 15 columns are populated by the skill. Columns 16–31 are the transaction pipeline you fill in over time — one row per investor, tracked from first email to closing.
┌──────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ /investor- │ ──▶ │ build_shortlist.py │ ──▶ │ YourClient.xlsx │
│ shortlist │ │ (this repo) │ │ (Excel, 31 cols) │
└──────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌─────────────────┐
│ Local Excel │ │ Dropcontact │
│ databases │ ─────▶ │ + Firecrawl │
│ + Outlook │ │ enrichment │
└──────────────────┘ └─────────────────┘
- Hybrid by default — first your own data (Outlook contacts, local Excel files of past investors), then the open web for fresh decision-makers
- Your client data stays local — the skill writes the Excel to a path you choose (typically a OneDrive/SharePoint folder for the mandate)
- Dropcontact is the only outbound call — and only for emails you opted to enrich; nothing else leaves your machine
git clone https://github.com/hectelion-sa/claude-investor-shortlist.git
cd claude-investor-shortlist
python -m pip install openpyxl pyyaml pywin32 requests
copy config.example.yaml config.yaml
# Edit config.yaml: paste your Dropcontact API key, add local DB paths, customize brand
# Right-click install.ps1 → Run with PowerShell (copies skill to ~/.claude/skills/)Then in Claude Code, in any project: /investor-shortlist.
config.yaml lives at ~/.claude/skills/investor-shortlist/config.yaml. Every option is documented inside config.example.yaml.
| Section | Purpose |
|---|---|
dropcontact.api_key |
Your Dropcontact key. Set via env DROPCONTACT_API_KEY if you prefer. |
local_databases |
List of {path, label} for your existing investor Excel files. Headers are auto-detected. |
outlook.scan_contacts |
true = also scan your Outlook address book (Windows only). |
output.default_folder |
Where new shortlists are saved by default. |
output.filename_template |
Tokens {firm} {client} {mandate} {date} available. |
brand.firm_name |
Your firm's name (cover page top-left). |
brand.primary_color |
Hex (no #) — title color + table header fill. |
brand.font_family |
Cover page + table font. Defaults to Cardo, but Calibri, Garamond, etc. all work. |
defaults.prepared_by_initials |
Your initials, auto-filled in the "Contacté par" column. |
Three sources, queried in this order:
- Local databases —
openpyxlreads every file inlocal_databases, fuzzy-matches sector + country, scores 1–5 based on focus alignment - Outlook contacts (Windows) — PowerShell COM scan, then cross-reference by
CompanyNameand email domain. A hit here means you already know the contact → higher score, no Dropcontact call needed - Web + Dropcontact — for investors with no contact info yet, Firecrawl (if MCP available) finds current decision-makers, then Dropcontact resolves their email. Multi-pass fallback if not found: try CFO instead of CEO, try Head of Investments, then
info@
Every email is qualified: nominative@pro (validated), catch-all@pro (deliverable but not name-specific), not found. The Excel color-codes the qualification visually so you know which leads need a backup channel (LinkedIn DM, postal mail, etc.).
- The Dropcontact response for CEOs of large institutions is cross-checked against Firecrawl news to catch CEOs who've left in the last 12 months (Praemia REIM ex-Primonial pattern, 1875 Finance Pierre Mottu pattern, etc.)
- If a name change is detected, the skill flags the row and asks you to confirm before keeping the contact
- Your client data never goes to a third-party AI. Claude Code is in the loop only during runtime; it reads your local files and writes the Excel. Nothing is uploaded to Anthropic except the conversation context.
- Dropcontact is the one external dependency. Per their GDPR policy, they don't keep enriched contacts.
- Outlook scanning happens locally via COM. No mailbox content leaves your machine.
- Source code is auditable — single-file Python (
build_shortlist.py, ~450 lines).
The default branding is Hectelion SA navy / Cardo. To use your own:
brand:
firm_name: "Smith & Partners LLP"
primary_color: "1A3258" # your brand navy
secondary_color: "0B1D38"
font_family: "Calibri" # or whatever your house font is
logo_path: "C:\\firm\\logo.png" # optional — embedded on cover pageDone. Every shortlist generated from then on uses your branding.
Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\skills\investor-shortlist"That's it. No scheduled task, no service, no registry edits.
MIT — see LICENSE. Use it, fork it, modify it for your firm, sell consulting on top of it. Pull requests welcome.
This is an independent open-source project by Hectelion SA. It is not affiliated with, endorsed by, or sponsored by Anthropic, Dropcontact or Firecrawl. "Claude" and "Claude Code" are trademarks of Anthropic, PBC.
Hectelion SA is an independent M&A advisory boutique based in Lausanne, Switzerland. We advise founders, family offices and corporates on the full transaction lifecycle:
- M&A sell-side & buy-side mandates — France–Switzerland axis, deal sizes from CHF 2M to CHF 500M
- Business valuations — independent valuation reports (DCF, multiples, asset-based) for tax, transaction, litigation
- Intangible asset valuations — patents, trademarks, customer lists, technology
- Financial due diligence — buy-side, sell-side, vendor due diligence
- Transaction structuring — capital structure, earn-out design, deferred consideration, PPA
Why we open-source our internal tools: building an investor shortlist is repetitive admin we don't bill clients for, but it eats half a day per mandate. When we automate one of these steps for ourselves, we publish the result so peers benefit too.
Get in touch:
- Website: www.hectelion.com
- Founder: Aristide Ruot, MD — aristide.ruot@hectelion.com
- 30-minute discovery call: calendly.com/aristide-ruot-hectelion-dcc/30min
If your business is approaching a sale, an acquisition, a fundraising round, or needs an independent valuation — reach out.
Made with care by Hectelion SA — Lausanne, Switzerland.