← Blog

Claude Code for outbound sales: build verified prospect lists in minutes

Guide12 min readMay 2026

Outbound sales runs on data. The better your prospect data, the higher your reply rates. The faster you get that data, the sooner you start conversations. Most sales teams spend 60-70% of their time on research and list building. The actual selling - writing emails, having conversations, closing deals - gets what is left over.

Claude code with gtmcli inverts that ratio. It compresses hours of manual research into minutes of automated work, so your team spends more time selling and less time searching.

This is not theory. This article shows exactly how to do it. Real prompts. Real tool calls. Real cost breakdowns for 100, 500, and 1,000 contacts.

The old way: manual research at $50/hour

Here is the reality of manual outbound prospecting. An SDR earning $60K base (roughly $30/hour fully loaded) spends their morning doing this:

8:00 AM  — Open LinkedIn Sales Navigator
8:05 AM  — Search for target personas at target companies
8:20 AM  — Click through profiles, copy names and titles
8:45 AM  — Paste into spreadsheet
9:00 AM  — Open email finder tool (Hunter, Apollo, etc.)
9:05 AM  — Look up emails one by one (or in small batches)
9:30 AM  — Copy results back to spreadsheet
9:40 AM  — Run emails through validation tool
9:55 AM  — Clean up invalid results
10:00 AM — Format for CRM import
10:15 AM — Upload to CRM, create sequences

Result: ~40 contacts in 2+ hours
Cost: $60+ in labor + $20-40 in tool fees

Forty contacts. Two hours. And a significant portion of those emails will bounce because the data was stale by the time it reached the CRM. The SDR repeats this every day. Five days a week. That is 200 contacts per week at a cost of roughly $500 in labor alone.

The problem is not that SDRs are slow. The problem is that the workflow requires a human to be the integration layer between five different tools. Every copy-paste is a point of failure. Every tab switch is wasted time.

The new way: describe targets, get a verified list

Open claude code. Type a prompt. Get a verified CSV. Here is what that looks like.

> Build a prospect list for outbound. I'm selling
> a developer productivity tool.
>
> Target: Head of Engineering, VP Engineering, CTO
> at B2B SaaS companies with 100-500 employees
> that have raised Series A or B.
>
> I need: full name, title, company, domain,
> employee count, funding stage, verified email.
>
> Start with 50 contacts. Export to CSV.

The agent reads that prompt and executes. It identifies target companies. It finds the right people at each company. It discovers their work emails. It validates every address via SMTP. It exports the clean list.

Time: 5-7 minutes. Cost: about $1 in gtmcli credits. Output: 50 contacts with verified emails, ready for outreach.

Step-by-step: from zero to prospect list

Step 1: Define your targets

Be specific in your prompt. The agent works best when it has clear constraints. Include:

Titles you want. Company size range. Industry or vertical. Funding stage or revenue range. Geography if relevant. How many contacts you need.

Good prompt:
> VP of Sales or CRO at fintech companies
> with 200-1000 employees, US-based,
> Series B or later. 30 contacts.

Bad prompt:
> Find me some sales leads.

Step 2: Agent researches accounts

The agent identifies companies matching your criteria. It uses web search, its training knowledge, and gtmcli_enrich_company to verify firmographics. Companies that do not match the size or funding criteria get filtered out early, saving credits.

Agent: "Identified 40 fintech companies. Enriching
to verify employee count and funding..."

Tool: gtmcli_enrich_company × 40
  → 35 match criteria (200-1000 employees, Series B+)
  → 5 filtered out (too small or too early stage)
  → 40 credits used

Step 3: Agent finds contacts

For each qualifying company, the agent identifies the right person by title and then finds their work email.

Tool: gtmcli_batch_find
Input: {
  "contacts": [
    { "first_name": "Dana", "last_name": "Wright",
      "domain": "plaid.com" },
    { "first_name": "James", "last_name": "Ortiz",
      "domain": "brex.com" },
    // ... 33 more
  ]
}
Result: {
  "found": 32,
  "not_found": 3,
  "credits_used": 35
}

Step 4: Agent validates emails

Every found email gets validated via SMTP. The agent uses batch validation for speed.

Tool: gtmcli_batch_validate
Input: { "emails": [32 emails] }
Result: {
  "valid": 29,
  "invalid": 2,
  "catch_all": 1,
  "credits_used": 32
}

Step 5: Export clean list

The agent exports only valid emails to CSV. Invalid addresses are excluded. Catch-all addresses are included but flagged.

Agent: "Exported 30 contacts to fintech-vp-sales.csv.
  29 valid emails, 1 catch-all (flagged).
  Total credits used: 107.
  Total cost: $0.86."

CSV columns:
  first_name, last_name, title, company, domain,
  employees, funding, email, email_status

Prompts that work for outbound

Here are five prompts you can copy and modify for your own prospecting.

Account-based outbound

> I have a list of 25 target accounts in accounts.csv
> (columns: company_name, domain).
> For each, find the VP of Marketing and CMO.
> Verified emails only. Include company size and
> industry. Export to abm-outbound.csv.

ICP-based cold outbound

> Build a list of 100 Head of Data or VP Analytics
> at e-commerce companies with 500+ employees.
> US and UK only. I need verified emails and
> LinkedIn profile URLs. Export to data-leaders.csv.

Competitor displacement

> Find 50 companies that use Segment for their
> customer data platform. For each, find the VP of
> Engineering or Head of Data Engineering.
> Verified emails. Export to segment-displacement.csv.

Hiring signal

> Find 30 companies that posted "DevOps Engineer"
> or "Platform Engineer" jobs in the last month.
> For each, find the VP of Engineering email.
> These companies are likely scaling infrastructure
> and need our product. Export to hiring-signal.csv.

Event follow-up

> I have a list of attendees from SaaStr 2026
> in attendees.csv (columns: name, company).
> Find their work domains, then find verified emails.
> Add company size and industry.
> Export to saastr-followup.csv.

Cost breakdown: 100, 500, and 1,000 contacts

Here is what realistic prospecting jobs cost with gtmcli. These numbers include over-fetching (the agent targets more companies than needed to account for lookup failures) and company enrichment.

100 CONTACTS
────────────────────────────────────────
Company enrichment:  ~80 × $0.003  = $0.24
Email finding:       ~120 × $0.008 = $0.96
Email validation:    ~110 × $0.002 = $0.22
────────────────────────────────────────
Total:                               $1.42
Time:                                ~8 min
Delivered:           ~100 verified contacts


500 CONTACTS
────────────────────────────────────────
Company enrichment:  ~350 × $0.003 = $1.05
Email finding:       ~600 × $0.008 = $4.80
Email validation:    ~550 × $0.002 = $1.10
────────────────────────────────────────
Total:                               $6.95
Time:                                ~25 min
Delivered:           ~500 verified contacts


1,000 CONTACTS
────────────────────────────────────────
Company enrichment:  ~700 × $0.003 = $2.10
Email finding:       ~1200 × $0.008 = $9.60
Email validation:    ~1100 × $0.002 = $2.20
────────────────────────────────────────
Total:                               $13.90
Time:                                ~45 min
Delivered:           ~1,000 verified contacts

Compare those numbers to the manual approach: $500+ in SDR labor per week for ~200 contacts. Or $149-800/month for a data enrichment platform subscription. The economics are not close.

Why verified emails change your reply rates

Outbound reply rates depend on three things: targeting, messaging, and deliverability. Most teams obsess over the first two and ignore the third.

Deliverability starts with data quality. If 5% of your emails bounce, inbox providers notice. Your sender reputation drops. Your emails start landing in spam. Even the messages that reach valid addresses get filtered because your domain is flagged.

gtmcli validates every email via SMTP before it hits your list. The result: bounce rates below 1%. That means your domain stays clean, your deliverability stays high, and more of your emails actually get read.

Typical outbound metrics comparison:

                    Without validation  With gtmcli validation
Bounce rate:        3-8%                <1%
Inbox placement:    70-80%              92-97%
Reply rate:         1-3%                3-6%
Meetings/1000:      5-15                15-30

Those numbers are not magic. They are what happens when you send to verified addresses instead of guessed ones. The emails reach real inboxes. More people see them. More people reply.

Automating the full outbound pipeline

Once you have the list, the agent can go further. It can write personalized first lines for each contact based on their company and role. It can format the data for your outbound tool. It can even push contacts directly to your CRM via API.

> Take the 50 contacts in fintech-vp-sales.csv.
> For each, write a personalized first line for a
> cold email. The product is a developer
> productivity tool. Reference something specific
> about their company.
>
> Add a "first_line" column and re-export.

The agent reads each row, uses the company enrichment data and its own knowledge to write a relevant opener, and adds it to the CSV. Each first line is different. None of them say "I noticed your company is growing."

When to use the agent vs. the CLI

Claude code with MCP is best for open-ended prospecting where you need the agent to research, make decisions, and adapt. Use it when you are exploring a new market, building a list from scratch, or need the agent to figure out who to target.

The gtmcli CLI directly is best for structured batch jobs. If you already have a CSV of names and domains and just need emails found and validated, skip the agent and pipe the CSV through the CLI.

# Structured batch: use the CLI
gtmcli batch-find --input prospects.csv --output found.csv
gtmcli batch-validate --input found.csv --output validated.csv

# Open-ended research: use claude code
> Find 100 companies using Kubernetes in production,
> with 200+ engineers, that don't already use Datadog.
> Find the VP Infra or SRE lead at each.
> Verified emails. Export to k8s-prospects.csv.

The CLI handles throughput. The agent handles intelligence. Together, they cover every outbound prospecting scenario.

Start now. Free.

Every gtmcli account starts with 100 free credits. That is enough to build a verified prospect list of 40-50 contacts, including company enrichment, email finding, and validation. No credit card. No sales call. No 14-day trial.

npm install -g gtmcli
gtmcli auth login

# Add to ~/.claude/settings.json:
# { "mcpServers": { "gtmcli": {
#     "command": "gtmcli", "args": ["mcp", "serve"]
# }}}

# Open claude code and start prospecting.

Your first list will take about 8 minutes. By the second one, you will have a repeatable process that replaces hours of manual work. By the third, you will wonder why you ever did it the old way.

Try gtmcli

100 free credits. No credit card.