← Blog

Build a sales pipeline with AI agents: a practical guide

Pipeline12 min readMay 2026

Building a sales pipeline used to take a team of SDRs weeks. Define the ICP. Research accounts manually. Find contacts on LinkedIn. Guess email patterns. Upload to a validation tool. Wait. Download. Clean the data. Upload to CRM. Upload to sequencer. The whole process is serial, manual, and expensive.

With AI agents, the same pipeline takes about 20 minutes and costs less than $10. Not in theory. In practice, with real commands that run right now. This guide walks through every step: ICP definition, account sourcing, contact identification, email discovery, validation, CRM enrichment, and sequence readiness. Every step maps to a specific tool or agent capability.

This is not a conceptual overview. It is a playbook you can run today.

The seven stages of an AI-built pipeline

Every outbound pipeline follows the same structure, whether built by humans or agents. The stages are:

1. ICP definition

2. Account sourcing

3. Contact identification

4. Email discovery

5. Email validation

6. CRM enrichment

7. Sequence ready

An agent can handle stages 2 through 7 autonomously. Stage 1 requires your input. You define who you sell to. The agent does the rest.

Stage 1: Define your ICP

The agent needs a clear ICP to work with. Be specific. Vague instructions produce vague lists.

ICP definition for the agent:

- Industry: B2B SaaS
- Employee count: 50-500
- Geography: United States
- Revenue: $5M-$100M ARR
- Signals: recently raised Series A or B
- Personas: VP Sales, Head of Revenue Ops,
  Director of Growth Marketing
- Exclude: companies already in our CRM

The more specific your ICP, the better the agent performs. Employee count ranges prevent the agent from pulling in enterprise companies you cannot serve or startups that cannot afford you. Geographic filters keep your list relevant to your sales team's territory.

Stage 2: Source accounts

Account sourcing means building a list of companies that match your ICP. The agent can pull from multiple sources: web research, Crunchbase data, LinkedIn company searches, or a seed list you provide.

The simplest approach: give the agent a seed list and have it enrich each account.

# accounts.csv — your seed list
company,domain
Acme Corp,acme.com
Globex Inc,globex.io
Initech,initech.com
...50 more rows
Prompt to Claude Code:

"Read accounts.csv. For each domain, run gtmcli enrich
to get company details. Filter out any company with
fewer than 50 or more than 500 employees. Write the
qualified accounts to qualified_accounts.csv."

The agent enriches each domain, applies your ICP filters programmatically, and produces a qualified list. From 50 seed accounts, you might get 35-40 that match. The rest get filtered out automatically. No manual review needed for the first pass.

Stage 3: Identify contacts

For each qualified account, the agent identifies the right people to reach. This is where your persona definition from Stage 1 matters.

Prompt to Claude Code:

"Read qualified_accounts.csv. For each company, find
contacts matching these titles: VP Sales, Head of
Revenue Ops, Director of Growth Marketing. Use web
research to find names and titles. Write results to
contacts_raw.csv with columns: domain, company_name,
contact_name, title."

The agent researches each company, identifies people matching your target personas, and builds a contact list. For 40 qualified accounts with 3 personas each, you get roughly 80-100 contacts. Not every company has every persona, so the hit rate varies.

Stage 4: Discover emails

Now the agent finds email addresses for each contact using gtmcli.

Prompt to Claude Code:

"Read contacts_raw.csv. For each contact, use gtmcli
find-email with the contact name and company domain.
Add the email column. Write results to
contacts_with_emails.csv. Log any contacts where
no email was found."
# What the agent runs for each contact:
gtmcli find-email --name "Sarah Chen" --domain "acme.com"

{
  "email": "sarah.chen@acme.com",
  "confidence": 95,
  "source": "pattern_match"
}

Email discovery typically finds addresses for 70-80% of contacts. The remaining 20-30% either have uncommon name patterns or work at companies with strict email privacy. The agent logs these misses so you can follow up manually if the account is high value.

Stage 5: Validate every email

This step is non-negotiable. Every discovered email gets validated before it enters your CRM or sequencer.

Prompt to Claude Code:

"Read contacts_with_emails.csv. Validate every email
using gtmcli validate. Add a validation_status column.
Split into two files:
- contacts_valid.csv (valid + valid_catchall only)
- contacts_rejected.csv (invalid + disposable)
Print a summary of results."
Agent output:

Validated 87 emails.

contacts_valid.csv:     71 contacts (81.6%)
contacts_rejected.csv:  16 contacts (18.4%)

Breakdown:
  valid:           58
  valid_catchall:  13
  invalid:         11
  disposable:       3
  unknown:          2 (retry later)

You started with 40 accounts and now have 71 validated contacts ready to work. The 16 rejected contacts would have bounced if you had sent to them. Those 16 bounces on an 87-email campaign would have been an 18% bounce rate. Enough to seriously damage your sender reputation. Validation prevented that.

Stage 6: Enrich and load to CRM

The validated contacts get enriched with additional data and loaded into your CRM. The agent handles both in one step.

Prompt to Claude Code:

"Read contacts_valid.csv. For each contact:
1. Enrich the company domain with gtmcli enrich
2. Create or update the contact in HubSpot with
   fields: email, firstname, lastname, jobtitle,
   company, website, industry, employee_count
3. Tag each contact with 'ai-pipeline-may-2026'
4. Log every HubSpot API response.

Use HUBSPOT_API_KEY from environment."

The agent deduplicates against existing CRM contacts. If the contact already exists, it updates the record with fresh data instead of creating a duplicate. The tag makes it easy to find and track this batch later.

Stage 7: Sequence ready

The contacts are now in your CRM with validated emails and complete enrichment data. The final step is exporting them to your sequencer. The agent can write a CSV in the exact format your sequencer expects, or push contacts directly via API if you use Instantly, Smartlead, or similar tools.

Prompt to Claude Code:

"Read contacts_valid.csv. Write a file called
sequence_import.csv with these exact columns in this
order: email, first_name, last_name, company_name,
title, custom_1 (set to industry), custom_2 (set to
employee_count). This file will be imported into
Instantly."

The single-prompt pipeline

You can collapse stages 2 through 7 into one prompt. Here is a production-tested version:

"I have accounts.csv with columns: company, domain.
Build a complete outbound pipeline:

1. Enrich each account using gtmcli enrich. Filter to
   companies with 50-500 employees.
2. For each qualified account, find contacts with titles:
   VP Sales, Head of Revenue Ops, Dir of Growth Marketing.
3. Find emails using gtmcli find-email.
4. Validate every email using gtmcli validate.
5. Push valid contacts to HubSpot (HUBSPOT_API_KEY in env).
   Tag with 'ai-pipeline-may-2026'.
6. Write sequence_import.csv for Instantly with columns:
   email, first_name, last_name, company_name, title.

Only include contacts with valid or valid_catchall emails.
Write a summary with counts at each stage.
Log all API calls to pipeline_log.csv."

Time and cost: manual vs agent

Here is a direct comparison for building a pipeline of 100 accounts, targeting 3 personas each.

Manual process (SDR + tools):

Account research: 8 hours

Contact finding: 12 hours

Email discovery: 6 hours

Validation: 2 hours

CRM loading: 4 hours

Data cleaning: 8 hours

─────────────────────────────

Total time: 40 hours

Total cost: ~$2,000 (labor) + $500 (tools)

Agent process (Claude Code + gtmcli):

Write prompt: 5 minutes

Agent execution: 15 minutes

Review output: 5 minutes

─────────────────────────────

Total time: 25 minutes

Total cost: ~$8 (gtmcli) + ~$1 (agent compute)

That is a 96x speed improvement and a 277x cost reduction. The numbers are not exaggerated. The manual process includes all the time spent context-switching between tools, waiting for CSV uploads, fixing data formatting issues, and manually deduplicating. The agent process eliminates all of that.

The quality is comparable or better. Agents do not skip validation steps because they are in a hurry. They do not fat-finger email addresses. They do not forget to check for duplicates. The process runs the same way every time.

Practical tips for agent-built pipelines

Test with 10 accounts before running 100. Check that the data looks right, the CRM entries are correct, and the sequence file imports cleanly. Fix issues at small scale.

Always include a logging step. Have the agent write a log file with every API call, response, and decision. When something looks wrong in your CRM, the log tells you exactly what happened.

Separate the CRM load from the rest of the pipeline. Run stages 2-5 first. Review the output. Then run stage 6. This gives you a checkpoint before data enters your CRM. Bad data in a CSV is easy to fix. Bad data in your CRM takes much longer to clean up.

Run the pipeline weekly. Markets change. People change jobs. New companies get funded. A pipeline that was accurate last month is already decaying. Weekly runs keep your pipeline fresh and your data current.

Try gtmcli

100 free credits. No credit card.