I've been running HubSpot implementations for B2B companies for years.
Every week, the same conversation. "We're paying for HubSpot every month and we're still not generating enough leads." The website doesn't convert. The CRM is full of junk data. Sales follows up on the wrong people.
The standard answer was: hire a RevOps consultant, buy a data tool, pay for Clay, stitch it together with Zapier, and hope it works.
Last week, I threw that playbook out the window.
In one afternoon, I built a fully automated lead generation pipeline — from zero to qualified, enriched prospects sitting inside HubSpot — using Claude Code, two free APIs, and plain English instructions.
No Python. No developer. No Clay subscription. No VA.
This is exactly how I did it.
Most people think using AI means opening a browser tab, pasting some text, and getting text back. Then you go do the actual work yourself.
Claude Code is not that.
Claude Code is an agent that lives inside your computer's terminal. When you give it permission, it creates files on your hard drive, runs scripts, calls external APIs, reads error messages, fixes its own mistakes, and keeps going. You don't intervene. You manage.
Think of it like hiring a very fast junior developer who has access to your keyboard and never sleeps.
If you tell ChatGPT to find 25 B2B companies in the Netherlands using HubSpot, it might write you a Python script you don't know how to run. If you tell Claude Code to do the same thing, it calls the Clodura API, parses the response, scores each company against your ICP, and saves a file to your project folder.
You didn't touch a line of code. The work got done.
The difference is the terminal. That black screen with the white text that non-technical founders have avoided their entire careers. Claude Code lives there. And once you understand that the terminal is just a faster way to give instructions to your computer, everything changes.
Before we get into the setup, here is the complete stack I used. All of it.
Total cost at low volume: the price of your Claude subscription. That's it.
Step 1: Create Your Project Folder
Create a folder on your desktop. Call it something like gtm-agent. Open Cursor (or VS Code). Go to File > Open Folder and select it. This folder is your agent's workspace. Everything it creates will live here.
Step 2: Install Node.js
Go to nodejs.org. Download the LTS version. Run the installer. Click through all the defaults. When it's done, open a terminal in Cursor (Terminal > New Terminal) and type:
node --version
If you see a number like v22.15.0, you're good. Move on.
Step 3: Install Claude Code
In that same terminal, paste this and hit Enter:
npm install -g @anthropic-ai/claude-code
It takes about 30 seconds. When the prompt comes back, you're done.
Step 4: Start the Agent
Type claude and hit Enter. If you have a Claude Max subscription, it will recognise your account automatically. You'll see a welcome screen with your name on it. The ❯ cursor is now waiting for orders.
When Claude Code starts inside a folder, the first thing it does is look for a file called CLAUDE.md. If it finds one, it reads it before doing anything else. Every rule in that file applies to every task in that session — automatically, without you saying a word.
This file is the constitution for your agent. It is the difference between an agent that asks you to explain your business every single time, and one that already knows who you are, who you want, and who you never want.
In Cursor's left sidebar, right-click your project folder, create a new file, and name it CLAUDE.md. Then fill in these sections:
Once this file exists, you type "find me 10 leads" and the agent knows what to do. That is context engineering. It replaced prompt engineering the moment agents arrived.
A language model on its own is a brain in a jar. Smart, but no hands. It can tell you how to find your ICP. It cannot actually go find them.
MCP — Model Context Protocol — gives the brain hands. It connects Claude to external tools: search engines, databases, APIs, your CRM. You connect an MCP server once. From that point on, Claude can use it in every session.
Brave Search — Live Web Access
Go to brave.com/search/api. Create a free account. Generate an API key. Add it to your Claude config file. The Brave Search MCP gives Claude live web search — companies, news, job postings, LinkedIn activity — all in real time without you touching a browser.
HubSpot — Your CRM as a Write Target
Go to Settings > Integrations > Private Apps. Create an app called Claude GTM Agent. Grant read and write permissions on Contacts and Companies. Copy the access token and add it to your config.
Your ~/.claude.json config will look like this:
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "YOUR_BRAVE_KEY"
}
},
"hubspot": {
"command": "npx",
"args": ["@hubspot/mcp-server"],
"env": {
"HUBSPOT_ACCESS_TOKEN": "YOUR_HUBSPOT_TOKEN"
}
}
}
}
Now Claude can create, update, and read records directly inside your HubSpot. Not export a CSV for you to import manually. Write directly to the CRM.
Brave Search is great for research. But for finding companies by tech stack, you need a B2B database.
Clodura has 600 million contacts and a technologyParameters filter that lets you search for companies confirmed to be running specific software. You search for HubSpot users directly. No guessing. No scraping. Confirmed installs.
Sign up at clodura.ai, grab your API key, and add the endpoint documentation into your CLAUDE.md. The key endpoint is POST https://api.clodura.ai/api/v1/search/people. A typical request body looks like this:
{
"technologyParameters": ["HubSpot"],
"personTitle": ["Head of Marketing", "Marketing Manager", "CMO", "CEO"],
"companyCountry": ["Netherlands", "Germany"],
"companyEmployeeSize": ["11-50", "51-200"],
"contactEmailStatus": "verified",
"includeSimilarTitles": true,
"page": 1,
"perPage": 25
}
That single API call returns real people at real companies confirmed to be on HubSpot. Filtered by country. Filtered by company size. Verified email contacts only. This is not a scrape. This is a database query. The quality difference is significant.
With the setup complete, the entire workflow becomes a conversation.
Step 1: Find companies.
Read CLAUDE.md. Use the Clodura API to find 25 B2B companies in the
Netherlands and Germany confirmed to be using HubSpot. Filter for
Head of Marketing, Marketing Manager, CMO, or CEO contacts.
Score each one 1–3 based on our ICP. Save to clodura-leads.md.
Step 2: Push to HubSpot.
Read clodura-leads.md. For every prospect scored 2 or 3, create a
Company record in HubSpot and a Contact record for the key contact.
Associate the contact to the company. Skip all score 1 prospects.
Step 3: Research and personalise.
For the top 5 prospects in HubSpot, use brave_web_search to find
the most recent LinkedIn post, press release, or news item about
each company. Write a one-sentence personalisation hook for each
and add it as a note on the HubSpot contact record.
Qualified prospects in your CRM, scored against your ICP, with personalisation hooks written and attached. All from three prompts.
I am not going to pretend the first run was perfect.
The first batch of contacts that went into HubSpot had "Head of Marketing" as the contact name. Because the prospect file had job titles, not real people. The agent created what it was given.
The fix is simple: tell the agent to enrich the contacts using the Clodura search API before pushing to HubSpot. Search by company domain, filter by title, return real first names and last names. Then create the HubSpot records with actual people.
This is the nature of managing an agent. The first pass gets you 80%. You identify the gap, give one correction, and it fixes the entire batch. That is still faster than anything a human team could do.
The lesson: always review the output file before pushing to your CRM. Read the first ten records. If something looks wrong, fix it before the agent processes the other 490.
Claude Code is fast. That is the feature. That is also the risk.
Before agents, manual work had built-in safety mechanisms. When you copied email addresses one by one, you slowed down. You noticed the company that just announced layoffs. You skipped the CEO who posted something angry about vendors last week.
Claude Code removes that friction entirely.
You tell it to personalise emails based on recent news. It finds a company in row 42 that just settled a lawsuit. It writes: "Huge congrats on the restructuring news! Exciting times ahead." That draft goes into your outreach file. If you don't catch it, it goes to the CTO's inbox.
Three rules I follow without exception:
The agent does the work. You do the thinking. That is the deal.
We are not in the No-Code era anymore. We are in the Agent era.
For the last decade, non-technical founders paid a premium for visual interfaces and drag-and-drop builders because they kept us away from the terminal. We paid for software that helped us do the work.
Salesforce helped us organise data. We still had to type it in.
ZoomInfo gave us the phone number. We still had to make the call.
Clay built the lead list. We still had to write the email.
Claude Code changes the contract. You are no longer a user clicking buttons. You are a manager giving orders.
The terminal is not a "Do Not Enter" zone anymore. It is the most direct line to your new workforce.
The B2B founders who figure this out in the next six months will build GTM machines that run leaner and faster than anything a full sales team could operate two years ago. Qualified prospects. Enriched contacts. Personalised outreach. Straight into the CRM.
The ones who wait will wonder what happened.
The black screen is not the enemy. It never was.
Tommy Dalic is the founder of GrowthHub.io — an AI-first HubSpot agency helping B2B companies build the growth stack their pipeline actually needs. Based between Amsterdam and Mallorca.