Companies use AI to filter out vendors. I just gave vendors AI to choose companies.
AI-powered B2B sales prospecting — find, score, and engage prospects from your CLI.
No CRM required. No paid data APIs. Just Claude Code and free public sources.
Leads-Ops turns Claude Code into a full B2B sales prospecting command center. Instead of manually hunting for prospects and tracking them in spreadsheets, you get an AI-powered pipeline that:
- Finds prospects from free public sources — HN hiring threads, YC company directory, Product Hunt launches, Serper (Google search)
- Evaluates fit with a structured A-F scoring system against your ICP (Ideal Customer Profile)
- Drafts personalised outreach — first touch + 2 follow-ups, tailored to what you found about each company
- Tracks everything in a single markdown-based pipeline with status management
- Enriches automatically — scrapes company websites, finds contacts, guesses emails
Important: this is NOT a spray-and-pray tool. Leads-ops is a filter — it helps you find the few companies genuinely worth your time out of hundreds. The system recommends against outreach to anything scoring below 3.5/5. Quality over volume. Always review before sending.
Inspired by career-ops — same philosophy, same CLI-first architecture, same human-in-the-loop ethics. Instead of evaluating job offers, it evaluates sales prospects.
The first evaluations won't be perfect. The system doesn't know your product or your customer yet. Feed it context — your ICP, your proof points, your deal history, what a great customer looks like vs. a bad one. The more you nurture it, the better it gets.
| Feature | Description |
|---|---|
| Auto-Evaluate | Paste a company name or URL — get a full ICP fit report + tracker entry |
| 6-Block Scoring | ICP Fit, Timing/Signals, Deal Potential, Contact Quality, Red Flags, Global Score |
| Free Scanners | HN Who's Hiring (no auth), YC API (no auth), Product Hunt (free token), Serper (free key) |
| Outreach Drafting | Personalised first touch + 2 follow-ups based on what was found about the company |
| Contact Finding | Decision maker discovery via LinkedIn/Google, email pattern guessing with confidence scoring |
| Website Enrichment | Firecrawl integration (optional) — clean markdown from company sites instead of raw HTML |
| Pipeline Tracking | Markdown-based tracker with canonical statuses, TSV merge system, no database required |
| Human-in-the-Loop | AI researches, scores, and drafts — you decide and send. The system never sends outreach. |
# 1. Clone and install
git clone https://github.com/yourusername/leads-ops.git
cd leads-ops && npm install
# 2. Configure your ICP
cp config/profile.example.yml config/profile.yml # Edit with your product + ICP
cp templates/portals.example.yml portals.yml # Customize scan sources
# 3. Open in Claude Code
claude # Opens Claude Code in this directory
# Claude will guide you through onboarding on first launch:
# - Your product one-liner
# - Your ICP (industry, size, roles, deal size)
# - Search keywords for the scanner
# 4. Start prospecting
# Paste a company name or URL → Claude evaluates it
# Or run: /leads-ops scanThe system is designed to be customised by Claude itself. ICP criteria, scoring weights, outreach tone, disqualifiers — just ask Claude to change them. It reads the same files it uses, so it knows exactly what to edit.
Leads-ops is a single slash command with multiple modes:
/leads-ops → Show all available commands
/leads-ops {company or URL} → Full auto-pipeline (evaluate + tracker entry)
/leads-ops scan → Find new prospects from free sources
/leads-ops pipeline → Process all pending companies from inbox
/leads-ops evaluate <company> → Score a company against your ICP (blocks A–F)
/leads-ops outreach <company> → Draft personalised cold outreach
/leads-ops research <company> → Deep company intelligence report
/leads-ops contact <company> → Find decision maker + email
/leads-ops tracker → Pipeline status, funnel stats, action items
Or just paste a company name or URL directly — leads-ops auto-detects it and runs the full evaluation pipeline.
You paste a company name or URL (or scanner finds one)
│
▼
┌──────────────────────┐
│ Research Stack │ Website (Firecrawl or Playwright), HN, GitHub,
│ │ Crunchbase, LinkedIn public, Serper news queries
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ A-F Evaluation │ ICP Fit · Timing · Deal Potential · Contact Quality
│ (reads profile.yml) │ Red Flags → Global Score 1–5
└──────────┬───────────┘
│
┌─────┼──────┐
▼ ▼ ▼
Report Tracker Outreach
.md entry draft
Score thresholds:
| Score | Meaning |
|---|---|
| 4.5+ | Strong fit — pursue immediately |
| 4.0–4.4 | Good fit — worth pursuing |
| 3.5–3.9 | Marginal — low effort only |
| < 3.5 | Skip — Claude explains why |
| Source | Auth needed | Free tier | What it finds |
|---|---|---|---|
| RSS feeds | None | Unlimited | TechCrunch, VentureBeat, SaaStr, etc. — funding news, launches, growth signals |
| Serper + LinkedIn | Free API key | 2,500/month shared | site:linkedin.com/company searches — targeted company discovery |
| Serper (general) | Free API key | 2,500/month shared | Funding announcements, product launches via configurable Google queries |
| YC Company API | None | Unlimited | All YC-backed companies — name, website, team size, industries, isHiring |
| Product Hunt | Free token (2 min) | — | Companies that just launched = in growth mode |
| HN Who's Hiring | None | Unlimited | Monthly hiring thread — companies actively growing |
| Firecrawl | Free API key | 500 credits | Enrichment — clean markdown from company websites (not discovery) |
| Playwright | None | — | Fallback scraping, LinkedIn public pages, Crunchbase |
All sources dedup against data/scan-history.tsv — you never see the same company twice.
Each evaluation runs 6 blocks:
| Block | What it measures | Weight |
|---|---|---|
| A — ICP Fit | Industry, size, stage, target role, geography, hard disqualifiers | 30% |
| B — Timing / Signals | Funding recency, hiring activity, product launches, leadership changes | 25% |
| C — Deal Potential | Company stage, funding, team size, estimated ACV fit | 20% |
| D — Contact Quality | Decision maker identifiable, email findable, confidence level | 15% |
| E — Red Flags | Competitor, hiring freeze, wrong stage, stale data | adjustment |
| F — Global Score | Weighted 1–5 | — |
Block G (Data Quality) is informational — it tells you how confident to be in the score.
leads-ops/
├── CLAUDE.md # Agent instructions (the brain)
├── scan.mjs # Zero-token prospect scanner
├── merge-tracker.mjs # Merges TSV additions into leads.md
├── config/
│ ├── profile.example.yml # Your ICP, product, scoring weights
│ └── keys.example.yml # Optional API keys (Firecrawl)
├── modes/ # 9 skill modes
│ ├── _shared.md # Scoring framework + data sources
│ ├── _profile.md # Your ICP customisation (yours, never overwritten)
│ ├── evaluate.md # Single company evaluation
│ ├── scan.md # Scanner instructions
│ ├── pipeline.md # Batch pipeline processing
│ ├── outreach.md # Cold outreach drafting
│ ├── research.md # Deep company research
│ ├── contact.md # Contact + email finding
│ └── tracker.md # Pipeline status overview
├── templates/
│ ├── portals.example.yml # Scanner source config
│ └── states.yml # Canonical pipeline statuses
├── data/ # Your tracking data
│ ├── leads.md # Main tracker
│ ├── pipeline.md # Pending companies inbox
│ └── scan-history.tsv # Dedup history
├── reports/ # Evaluation reports (gitignored)
├── output/ # Outreach drafts (gitignored)
└── batch/
└── tracker-additions/ # TSV files pending merge
- Agent: Claude Code with custom skill and modes
- Scanner: HN Algolia API + YC public API + Product Hunt GraphQL + Serper
- Enrichment: Firecrawl (optional) + Playwright fallback
- Data: Markdown tables + YAML config + TSV batch files
product:
name: "Your Product"
one_liner: "We help [persona] do [outcome] without [pain]."
icp:
industries: ["SaaS", "DevTools", "AI/ML"]
company_size: { min_employees: 10, max_employees: 500 }
funding_stages: ["Seed", "Series A", "Series B"]
target_roles:
primary: "CTO"
secondary: ["VP Engineering", "Co-Founder"]
disqualifiers:
- "Direct competitor"
- "Enterprise (>5000 employees)"firecrawl_api_key: "fc-..." # firecrawl.dev — 500 free credits, no expiryicp_keywords: ["AI", "developer tools", "B2B SaaS"]
sources:
hackernews:
hiring: { enabled: true }
ycombinator:
enabled: true
batches: ["W25", "S24"]
is_hiring: false
producthunt:
enabled: true
api_token: "" # api.producthunt.com/v2/oauth/applications
serper:
enabled: true
api_key: "" # serper.dev — 2,500 free/month
queries:
- 'site:techcrunch.com "raises" 2025 developer tools'
- '"Series A" 2025 B2B SaaS startup'Leads-ops is a local, open-source tool — NOT a hosted service. By using this software, you acknowledge:
- You control your data. Your ICP, contacts, and company data stay on your machine and are sent directly to the AI provider you choose (Anthropic). We do not collect, store, or have access to any of your data.
- You control the AI. The system instructs Claude never to send outreach without your review, but always verify AI-generated content before sending. You are responsible for what you send.
- You comply with third-party ToS. Use this tool in accordance with the Terms of Service of the data sources you interact with (LinkedIn, Product Hunt, Crunchbase, etc.). Do not use this tool to spam prospects or overwhelm inboxes.
- No guarantees. Evaluations are recommendations, not truth. AI models may hallucinate information about companies. The authors are not liable for any consequences of acting on AI-generated research or outreach.
This software is provided under the MIT License "as is", without warranty of any kind.
MIT
Built on the same architecture as career-ops — if you're job hunting, check that out too.