@MichLieben: https://x.com/MichLieben/status/2097438908627992814

X AI KOLs Following Tools

Summary

This article is a comprehensive guide on automating Go-To-Market campaigns using Claude Code and AI agents, integrating tools like Apollo, Clay, and Instantly via Model Context Protocol to drastically reduce manual effort.

https://t.co/idQpIDj8xU
Original Article
View Cached Full Text

Cached at: 09/10/26, 09:02 AM

How to Run GTM on Claude Code Like the Top 1%

A campaign that took one of our GTM engineers two days now takes one prompt and about twenty minutes of agents working.

We have sent over a million outreach messages for clients, and that is the number I would have quoted you a year ago. This is the one that changed how we staff.

None of the change came from Claude writing better copy.

The campaign gets assembled somewhere else now. The old loop had a person carrying a CSV between four products: pull the list in Apollo, enrich in Clay, export, upload to Instantly, write the copy, repeat from scratch on Monday. That is ten subscriptions and ten API keys, with nothing carrying over to the next campaign.

The new loop has one description, typed once, into a terminal that already holds the ICP, the scoring rubric and the copy rules as files sitting in the folder.

The teams getting real output from this all made the same move. Claude Code runs the stack from the terminal now, and Apollo, Clay and Instantly sit underneath it as endpoints it calls.

Here is the entire build. The install, the connection layer, the seven-step run from signal to booked meeting, the skills files, the commands, five prompts you can paste today, and the eight things that break the first time you try it.

1. The install

Twenty minutes, no developer required. You need your own API keys and a terminal.

The npm route still works and is still documented, filed under advanced options. Two things about it: never run it with sudo, and upgrade with @latest, since npm update -g respects the original semver range and can leave you behind. Native installs update themselves in the background, and Homebrew, apt and WinGet leave that to you.

Then build the folder out. Most people skip this structure, then wonder why the fifth run looks nothing like the first.

Two files, two jobs.

CLAUDE.md loads automatically on every run. It holds standing rules: who the client is, what tone to write in, what never to do, where to write output. Keep it under 200 lines. Past that, the rules near the bottom stop getting followed.

brain.md holds the GTM substance and you reference it explicitly with @brain.md when a prompt needs it. That way the ICP, the personas and the scoring rubric are not sitting in context on a run that does not need them.

Here is a brain.md worth stealing:

Do not skip that last block. The ICP doc, the intelligence store and last quarter’s notes will eventually contradict each other. Rank them before an agent runs, so the model is not silently picking a winner while it writes forty emails.

2. The connection layer

Model Context Protocol is how Claude Code talks to other tools. Install a server and Claude calls those endpoints itself, so you can ask for 200 SaaS companies hiring SDRs and leave it to work out whether that means search_companies, find_signal, or both.

Adding one is a single line.

Inside a running session, /mcp opens the panel and shows the tool count per server.

That writes to .mcp.json in the project root:

Quote the variable when you add it from the shell. Unquoted, your shell expands $COLDIQ_API_KEY before the file is written, and the live key lands in .mcp.json, which is the file you are about to commit. Wrapped in single quotes, the literal ${COLDIQ_API_KEY} is stored and resolved from your environment at load time.

Always write the type. Claude Code treats a typeless entry as stdio, so a remote entry with only a url is skipped with an error. That one bites when you paste an mcpServers block out of another MCP client’s docs.

Three more things about that file catch people out.

It is read at session start only. Edit it, then exit and restart claude, or nothing changes.

A project-scoped server prompts for your approval the first time it runs. That prompt is what stops a cloned repo from launching processes on your machine, so read it. It does not appear in claude -p or SDK runs, where project servers load without asking.

An unset variable does not fail loudly. Claude Code passes the literal ${COLDIQ_API_KEY} through and the server fails to authenticate, so claude mcp list is where you find out.

The endpoints that matter for outbound:

ToolWhat it returnsRelative costsearch_companiesCompanies by industry, size, location, tech stack, signalslowenrich_companyFirmographics, tech stack, funding, headcountlowfind_signalHiring, funding, tech changes, job postingslowfind_peopleDecision makers by title, seniority, departmentlowenrich_personFull profile from an email, LinkedIn URL, or name plus companylowfind_emailVerified work email, waterfall stops on first hit~1 creditfind_phoneMobile number, multi-provider~10 credits

Billing runs on a monthly credit pool. Roughly $99 buys 7,000 credits, $199 buys 15,000, $499 buys 40,000. Phone lookups cost about ten times what an email lookup costs. Work that out before you point a waterfall at 800 rows. The credits charged come back on the response headers at runtime, so log them on the first run and you will know what a campaign costs before you scale it.

find_email runs providers in sequence and stops at the first verified hit, so one verified contact costs you one charge. Hold forty separate subscriptions and you are picking the provider by hand every campaign, then paying for the picks that miss.

On provider strategy, run two layers.

GetLeads is the cheap single-source option, fine when a few gaps do not hurt. ColdIQ routes across providers, which is what you want on the accounts you cannot afford to miss. That is still two vendors, two invoices and two sets of rate limits.

3. The seven-step run

This is the loop, from a signal existing in the world to a meeting on the calendar. Steps one through six are tool calls you can run today. Step seven is the one people drop.

Step 1. Detect the signal. Hiring, funding, tech-stack changes, job posts. find_signal and search_companies do this. The filter should describe an event that happened, with a date attached to it.

Step 2. Score and sort. Claude reads @scoring.md and classifies every account into Tier 1, Tier 2 or Tier 3. Tier 1 is strong fit with an active signal. Tier 2 is strong fit with no signal yet. Tier 3 is adjacent fit, watchlist only. This removes roughly 80% of manual sorting.

Step 3. Find the contacts. find_people against the tiered account list, filtered to the personas in brain.md. Use enrich_person when you already hold an email or a LinkedIn URL and need the rest of the profile.

Step 4. Enrich and validate. find_email first. find_phone on Tier 1 only. Bounce check, catch-all filter, MX check before anything gets uploaded.

Step 5. Generate the copy. The copy skill reads the signal captured in step 1 and writes per-tier. Tier 1 gets its own prompt per account, built on that account’s signal. Tier 2 runs off a template with a single variable swapped, and Tier 3 drops into the volume sequence.

Step 6. Route and launch. Tier 1 into a multichannel sequence in lemlist, with a call task and a LinkedIn touch. Tier 2 and Tier 3 into Instantly. Sending infrastructure sits underneath in Hypertide.

Step 7. Analyse and save. What worked goes back into the intelligence store, so the next run starts from a better rubric than this one did.

Run it with a checkpoint after each step. Approving it end to end on the first pass is how you find out something was wrong after the mail went out. Approve the plan, review the list before enrichment spends credits, and read the copy before anything gets pushed live.

4. Skills files

Ask Claude to build the same list five times from a typed prompt and you get five different lists. You never type it the same way twice, and the output tracks the wording.

A skill is a folder with a SKILL.md inside it, holding one procedure written down once. Claude loads the ones relevant to the job in front of it and ignores the rest, which keeps context small.

The five expertise packages worth having in place before your first campaign:

  • The Cold Email Strategist. Email writing, sequences, deliverability, personalisation, infrastructure.

  • Intent Signal Analyzer. Buying signals, intent data, scoring frameworks, signal-to-action playbooks.

  • The List Architect. ICP definition, lead sourcing, data validation, list hygiene, tiering.

  • The LinkedIn Creator. Posting strategy, hooks, storytelling, sequencing for a B2B audience.

  • The RevOps Operator. CRM hygiene, routing rules, pipeline reporting.

Then the smaller ones that sit inside a project:

  • Email frameworks. Five proven structures: Direct Ask, Mixed Trigger, Challenge, Reactive Insight, Ladder.

  • Buying signals. Signals ranked by purchase intent, with the statement each one supports.

  • Cold email templates. A library of 24: eight first touch, five follow-up, six re-engagement, five industry-specific.

  • GTM offers. Eleven offer structures with the audience each one suits.

  • Signal scraper and lead prioritiser. Scores leads 1 to 100 and routes them automatically.

Ours come out of the outbound we have run for 275+ companies, which is the only reason they are worth anything. Write yours from your own closed-won data and your own reply rates, and update it whenever a campaign beats the one before it.

5. The commands

The ones you will use daily.

CommandWhat it does/compactCompresses the conversation so far. Run it on long list jobs before quality drops./clearWipes context between unrelated tasks. Prevents bleed from the last client./modelSwitch model. Opus for planning and copy, Sonnet for bulk mechanical work./mcpCheck which MCP servers connected and which tools registered./doctorIn-session setup checkup that offers to fix what it finds. The shell version, claude doctor, is read-only./resumePick up a previous session by name.

File references, typed inline in a prompt:

ReferenceLoads@brain.mdThe full contents of one [email protected] @brain.mdSeveral files at once@data/input/A listing of that folder. The contents of the files stay unread.

That last row trips people constantly. A folder reference gets you the filenames and nothing else. Name the file itself, @data/input/leads-raw.csv, when you want it read.

Never @ your .env into a prompt.

It will load, and that is the problem: the contents go into the prompt, into the local session transcript, and into anything downstream of that. Nothing blocks it by default. Put a deny rule in .claude/settings.json instead:

If Claude needs to know the shape of your environment, hand it a .env.example with the values stripped.

Flags worth knowing:

The pattern that makes all of it repeatable: reference @brain.md in every prompt that touches targeting or copy. Nine characters, and it stops the agent inventing its own ICP mid-run.

6. Five prompts worth saving

Paste these, swap the specifics, run them.

Reverse-engineer the ICP from closed-won.

Signal to sequence in one pass.

Take the competitor’s installed base.

Map the full TAM.

Waterfall enrich a cold list.

That last one is where the waterfall pays for itself, with one caveat worth repeating: the find_phone fallback is roughly ten times the cost of the email lookup it follows. Cap it to the tier you will call.

7. Seven patterns that separate the teams doing this well

The build above is mechanical. These are the judgement calls, and they are the ones we still argue about internally.

Describe the campaign once. Say what you want in one prompt and let the agent call the tools, build the list, write the copy and push the sequence. That is the shift that took our engineers off two-day campaign builds.

Write the rules down. Skills files hold copywriting rules, provider routing, deliverability checks and personalisation frameworks. Written down, the deliverability check still runs in month three, whether or not the person running it remembers why.

Route through one key. Claude picks the best provider per query, and it can only call what it has access to. One unified MCP puts 40+ sources behind a single key, which leaves you one credential to rotate.

Put the proof where it gets read. The best cold email I ever received came from FullEnrich, with my own phone number in the subject line and an offer of free credits underneath it. It proved the product on me before asking me for anything.

I would not copy that mechanism literally. A personal mobile is the one field you should be minimising, it renders on lock screens and in shared inboxes, and sourcing it without telling the recipient where it came from is the exact pattern CNIL fined Kaspr 240,000 euros for. Keep the principle and demonstrate on something non-personal: the open role, the tech stack, the page they read. Prove the product before you ask. That part you can copy.

Let the signal supply the reason. Selling phone data, I target sales leaders whose job posts mention cold calling, or who have Nooks, Salesfinity or Orum in the stack. They can open the job post themselves and see the line I was talking about.

Lead with something they keep. “Shall I send you free credits to test the data yourself?” and “I built a list of 1,000 HR directors at companies hiring 5+ roles, want it?” both hand over something first and let them raise their hand.

Run agents in parallel. While one set of agents runs a campaign, open another terminal instance and launch a second campaign against a different targeting hypothesis. Running three, four or six at once used to mean hiring more people. Now it is a question of how many terminals you want open and how many lists you want to read on Friday.

8. The eight things that break

Every one of these has cost us a campaign.

The context window fills on large lists. Processing 200 to 1,000 rows in one pass degrades quality partway through. Batch 100 at a time and run /compact between batches.

**brain.md goes stale.The model is only as current as your last update. Rewrite it after every closed deal and every campaign that taught you something. Weekly is a reasonable floor.

Vague prompts produce vague lists. “Find some good companies” returns garbage. Always specify count, industry, headcount range, region and tech stack.

One copy template across every persona. A VP of Sales and a Head of RevOps do not respond to the same message. Keep separate blocks per persona in copy-frameworks.md.

Auto-approve pushes campaigns live. Running with –dangerously-skip-permissions means Claude uploads to Instantly and starts a sequence with no confirmation. The flag is named that way for a reason. Keep approvals on for any step that sends mail, and note the docs scope that flag to isolated containers and VMs.

Enriching Tier 3 burns credits. Running full waterfall enrichment on accounts you will never call is paying for data you will not use. Tier first, enrich Tier 1 and Tier 2, leave Tier 3 unenriched until it earns it.

Pointing the agent at LinkedIn. Claude Code has web access through WebFetch and WebSearch, and they report their failures: you get the redirect notice, the status code, or an explicit note that the content came back partial. The problem is upstream of that. Scraping profiles breaches LinkedIn’s User Agreement, and the case people cite as cover, hiQ, ended in a 500,000 dollar stipulated judgment against the scraper with an order to delete the data.

Neither signal needs LinkedIn.

Job posts come out of the ATS layer: Greenhouse publishes an open JSON board API, Lever exposes public postings per employer, and PredictLeads or Coresignal cover the tail. Tech stack comes off the company’s own front end, which BuiltWith and Wappalyzer read from HTML, headers, DNS and cookies with no login involved. The job description gives you a second read on the stack for free, because the requirements name the tools. Point the agent there.

Good runs get thrown away. Six weeks later nobody remembers the send window or the subject-line rule that made it work. When something lands, that sequence becomes a skill file the same day.

The stack

What we actually run:

  • Claude Code for orchestration

  • ColdIQ MCP for data, 40+ sources behind one API key

  • Hypertide.io for sending infrastructure

  • Instantly.ai for sequencing and inbox management

  • lemlist for multichannel outreach

  • Aqua Voice for voice prompting, which matters more than it sounds when you are writing long prompts all day

What it actually buys you

A campaign became a file. Targeting logic, scoring rubric, copy rules, routing: it all sits in that folder, so campaign two opens where campaign one finished.

The second return is slower and worth more. That folder gets edited every time a campaign teaches you something, so the twenty minutes keeps shrinking while the rubric behind it keeps sharpening.

Start with one client folder, one brain.md and one signal. Run the seven steps by hand, with a checkpoint after each one, and watch where it breaks. Usually it is step four, where a catch-all domain sails through the validator and shows up as a bounce a day later.

Then write down what worked, and Monday’s run starts by reading that file.

Similar Articles

@EXM7777: https://x.com/EXM7777/status/2089714608244457543

X AI KOLs Following

A comprehensive guide on building AI-driven go-to-market systems using tools like Viktor to automate customer acquisition for one-person businesses, with specific workflows for agencies, SaaS, and infoproducts.

@nifinet: https://x.com/nifinet/status/2064397495036440907

X AI KOLs Timeline

A detailed guide on building an AI-powered GTM (go-to-market) brain using Claude Code, covering five core components—Sense, Remember, Judge, Act, Learn—to automate account-based outreach with judgment, not just volume.