Solo Founder OS agent #3 — draft personalized cold emails to investors (vc mode) or paying customers (customer mode), HITL queue + SMTP sender. Merged customer-outreach-agent in v0.9.0.
Project description
vc-outreach-agent
English | 中文
Solo Founder OS agent #3 — finds investors, drafts personalized cold emails per (investor, project) pair via Claude, manages replies via a markdown HITL queue. Never auto-sends. Always your edit, your hit-send.
Built by Alex Ji — solo founder shipping Orallexa and VibeXForge. Born from this thought:
I have 50 investor names in a spreadsheet. Hand-writing 50 personalized cold emails takes 10 hours. Sending the same templated email 50 times gets 0 replies. There has to be a better default.
What it does
investors.csv + project.yml
↓
Claude (Sonnet 4.6, prompt enforces no-bullshit constraints)
↓
queue/pending/<timestamp>-<project>-to-<investor>.md
↓
┌────────────────────────────────┐
│ Human review in Obsidian │
│ (edit / approve / reject) │
└────────────────────────────────┘
↓
queue/approved/ → v0.2 SMTP sender
queue/rejected/ → archived, no send
The drafter prompt enforces these rules — anything else gets parsed-and-fallback to a template:
- Open with ONE specific line tying the investor's thesis to the project. No "I follow your work" filler.
- Sentences 2-3 lead with traction, not vision. One number, one shipped artifact, one demand signal.
- Sentence 4: ONE specific ask. "15-min call this week" — never "any thoughts you have".
- Body under 110 words. Subject under 8 words.
- Banned vocabulary (hard fail): synergy, disrupting, passionate, leverage, innovative, cutting-edge, revolutionize, "I'd love to", "circle back", "touch base", "thought leader", "in the AI space", "exciting opportunity".
- Tone: peer-to-peer, terse, no exclamation marks, no emojis.
Install
git clone https://github.com/alex-jb/vc-outreach-agent.git
cd vc-outreach-agent
pip install -e .
cp .env.example .env # fill in ANTHROPIC_API_KEY
Usage
# 1. Describe your project once
cat > orallexa.yml <<EOF
name: Orallexa
one_liner: AI-powered quant trading agent
stage: pre-seed
raise_amount: \$500k
deck_url: https://orallexa.com/deck.pdf
founder_name: Alex Ji
founder_email: alex@orallexa.com
why_now: LLMs commoditize signal — execution is the moat now.
traction:
- Sharpe 1.41 over 698 backtests
- DSPy pipeline shipped 2026-04
EOF
# 2. List investors in a CSV (columns: name,email,firm,role,thesis_hint,linkedin,twitter,notes)
# (the thesis_hint column is the key one — that's what makes each email feel personalized)
# 3. Fan-draft into the queue
vc-outreach-agent draft --project orallexa.yml --investors investors.csv
# 4. Review at ~/.vc-outreach-agent/queue/pending/
# Open each .md in Obsidian, edit if needed, then move to:
# ../approved/ to send
# ../rejected/ to skip
Why HITL is non-negotiable for cold outreach
Auto-send for cold investor emails is a category error. Two reasons:
- One bad email burns the relationship. Investors talk to each other. A rude or off-base auto-sent email kills not just this round but next round too.
- The 1% of personalization that actually matters comes from your context, not Claude's. "Hey, I noticed you led the Round at X — I'm going to need exactly that playbook." Claude can't know which investors you've met IRL.
v0.1 is queue-only. v0.2 will add SMTP send for approved drafts (still requires you to move the file). v0.5 may add auto-send for low-stakes follow-ups, but cold first emails always go through HITL.
Roadmap
- v0.1 — Drafter (LLM + template fallback) · markdown HITL queue · CSV/YAML input · 14 tests
- v0.2 — SMTP sender for
queue/approved/(Gmail/Postmark/Resend/Sendgrid) · dry-run mode · 25 tests - v0.3 — Investor enrichment (Twitter / LinkedIn pull) — auto-build thesis_hint
- v0.4 — Multi-touch follow-ups (T+5d, T+12d) with declining conviction
- v0.5 — Pipeline analytics: open rate / reply rate / meeting rate by thesis_hint pattern
MCP server (Claude Desktop / Cursor / Zed)
Draft an investor email inline from your AI assistant.
pip install 'vc-outreach-agent[mcp]'
{
"mcpServers": {
"vc-outreach": {
"command": "vc-outreach-mcp",
"env": { "ANTHROPIC_API_KEY": "..." }
}
}
}
Tools: draft_email(...) · list_pending() · list_approved()
License
MIT.
🧩 Part of the Solo Founder OS stack
A growing collection of MIT-licensed agents that share solo-founder-os as their base — cron, eval, reflexion, AnthropicClient, HITL queue, notifiers. Each agent is independently useful; together they cover the full one-person company workflow.
🌐 The whole stack is live in production at vibexforge.com.
| Agent | What it does |
|---|---|
| solo-founder-os | The shared base lib (cron · eval · reflexion · skill library · DGM-lite). Every other agent depends on it. |
| build-quality-agent | Pre-push Claude diff reviewer + local build runner — catches CI-killing changes before they ship. |
| customer-discovery-agent | Reddit pain-point scraper + Claude clustering for product validation. |
| funnel-analytics-agent | Daily founder brief + real-time PH-day alerts across 9 sources. |
| orallexa-marketing-agent | AI marketing agent — submit project once, get platform-native posts for X / Reddit / HN / Dev.to / 小红书 + 7 more. Powers vibexforge.com. |
| cost-audit-agent | Monthly bill audit across 6 providers (Vercel / Anthropic / OpenPanel / HyperDX / Supabase / GitHub Actions) with dollar-tagged waste findings. |
| bilingual-content-sync-agent | EN ⇄ 中文 i18n diff + Claude translate + HITL apply. Batch API path @ 50% off. |
| customer-support-agent | Triage user messages → auto-draft replies → HITL queue. Closes the L5 customer-support layer. |
| payments-agent | Overdue-invoice reminder drafter. Stripe-shaped types + MockProvider fallback + hard money-safety prompt rules. |
Each agent's own row is omitted from its README. Install whichever solve real problems for you — pip install <agent-name>.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vc_outreach_agent-0.9.0.tar.gz.
File metadata
- Download URL: vc_outreach_agent-0.9.0.tar.gz
- Upload date:
- Size: 36.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc8c60264ff57589961597735c4bbe4cc22d1f1779bb3c17cae4683375d0dc3e
|
|
| MD5 |
cc045037a542cf5e089226aebd6eb498
|
|
| BLAKE2b-256 |
c168831bfdc3daf78aa7262d71d5255f0dbf0aa391b9d809bf437257f4db51ad
|
Provenance
The following attestation bundles were made for vc_outreach_agent-0.9.0.tar.gz:
Publisher:
release.yml on alex-jb/vc-outreach-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vc_outreach_agent-0.9.0.tar.gz -
Subject digest:
dc8c60264ff57589961597735c4bbe4cc22d1f1779bb3c17cae4683375d0dc3e - Sigstore transparency entry: 1740574502
- Sigstore integration time:
-
Permalink:
alex-jb/vc-outreach-agent@81a0b34cc8e2b2a76a6df1883ff9ca43b2b4e956 -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/alex-jb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@81a0b34cc8e2b2a76a6df1883ff9ca43b2b4e956 -
Trigger Event:
push
-
Statement type:
File details
Details for the file vc_outreach_agent-0.9.0-py3-none-any.whl.
File metadata
- Download URL: vc_outreach_agent-0.9.0-py3-none-any.whl
- Upload date:
- Size: 28.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0ada2bf9c5981b6ec6df6741b88d82eae0d5d3091b4aa60e4bde68aec6d8d18
|
|
| MD5 |
3b912de4fa8a815532d95bf8aed669a9
|
|
| BLAKE2b-256 |
e3b469a55835dcfd149fd0d2c5e7e8b05cfc931440f690f4a6792e63ea9dc2f8
|
Provenance
The following attestation bundles were made for vc_outreach_agent-0.9.0-py3-none-any.whl:
Publisher:
release.yml on alex-jb/vc-outreach-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vc_outreach_agent-0.9.0-py3-none-any.whl -
Subject digest:
b0ada2bf9c5981b6ec6df6741b88d82eae0d5d3091b4aa60e4bde68aec6d8d18 - Sigstore transparency entry: 1740574524
- Sigstore integration time:
-
Permalink:
alex-jb/vc-outreach-agent@81a0b34cc8e2b2a76a6df1883ff9ca43b2b4e956 -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/alex-jb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@81a0b34cc8e2b2a76a6df1883ff9ca43b2b4e956 -
Trigger Event:
push
-
Statement type: