Claude Code Workflows for GTM: 6 Automations That Replace a Stack

Six terminal-native GTM automations with the prompts to run them — lead sourcing, enrichment, CRM cleanup, outreach personalisation, competitive intelligence and signal processing — plus where a platform still beats a script.

Key takeaways
  • Claude Code executes rather than suggests: one prompt chain scrapes a site, parses to CSV, enriches each row by API and outputs a finished list.
  • The six workflows cover lead sourcing, data enrichment, CRM cleanup, outreach personalisation, competitive intelligence and sales signal processing.
  • The time deltas are the argument: 10,000 CRM records cleaned in under five minutes, and list research down from 4-8 hours to under 15 minutes.
  • Read the limitations section before you cancel anything — it is explicit about when a platform still beats a self-built script.

What Claude Code Is and Why GTM Teams Use It

Source: syncgtm.com/blog/gtm-claude-code (Kushal Magar, SyncGTM)

Claude Code accounts for roughly 4% of all public code commits. GTM teams are using it to automate workflows that used to require a developer, a data team, and three SaaS subscriptions. It runs in your terminal, operates on real files, calls APIs, scrapes websites, and chains multi-step workflows from natural language prompts.

The difference from chat-based AI: chat tools generate text you copy-paste. Claude Code executes actions. It scrapes a website, parses results into a CSV, enriches each row with API calls, and outputs a formatted prospect list in one prompt chain. No copy-paste, no manual steps between.

Workflow What it replaces Time saved
Lead sourcing and list building 4-8 hours of SDR list research Under 15 minutes
Data enrichment Manual API calls and CSV merging Batch of 200 in under 10 minutes
CRM cleanup 2-3 day manual spreadsheet work 10,000 records in under 5 minutes
Outreach personalisation Generic template emails 50 unique emails in under 10 minutes
Competitive intelligence Manual weekly competitor checks Automated diff and summary on demand
Signal processing Fragmented manual monitoring Aggregated, scored, routed in one run

What makes Claude Code different from a prompt

Every workflow in this playbook follows the same pattern. You describe what you want in natural language, Claude Code writes and executes the code, and you get structured output: a CSV, a JSON file, or updates pushed directly to your tools via API.

Claude Code can: read and write files on your machine, run Python and JavaScript scripts, call external APIs, scrape websites (including JavaScript-rendered pages via the Playwright MCP), chain multi-step workflows, and fix its own errors without you intervening.

Eight of the Fortune 10 use Anthropic products. Claude Code hit a $2.5B annualised run rate by early 2026, with weekly active users doubling in the same period. GTM teams are a growing segment of that user base because the tool does exactly what GTM engineers need: converts data into action without requiring a developer.

Workflow 1: Lead Sourcing and List Building

The most common entry point for GTM teams adopting Claude Code. Combines web scraping, API calls, and data structuring into a single prompt chain that outputs a ready-to-use prospect list.

Typical result: 50-200 qualified prospects in under 15 minutes. Manual equivalent: 4-8 hours of SDR list building.

What this workflow does

You define your ICP criteria in plain language. Claude Code writes a scraping or API-based script, pulls data from relevant sources (Crunchbase, LinkedIn, company websites, open directories), deduplicates and structures the results, and outputs a CSV with the columns you specified.

Output quality depends on the data sources Claude Code can access. Public directories, company websites, and open APIs produce reliable results. Gated databases like LinkedIn Sales Navigator require authenticated sessions, which adds complexity but is achievable with the Linked API CLI or LinkedIn MCP.

Step-by-step workflow

Step 1: Define ICP criteria in the prompt. Include industry, funding stage, tech stack, geography, and employee range. The more specific, the better the output.

Step 2: Claude Code writes a Playwright or API-based scraping script targeting the relevant data sources for your criteria.

Step 3: Results are parsed, deduplicated, and structured into a CSV with the columns you specified.

Step 4: Review the output, refine the criteria if the quality is off, and re-run for additional segments.

Copy-paste prompts

# Basic list build by ICP criteria
"Build me a list of Series A through Series C fintech companies that use Salesforce.
Include: company name, funding amount, employee count, headquarters, CEO LinkedIn URL.
Output as CSV."

# Signal-enriched list
"Find [TARGET TITLES] at [COMPANY TYPE] companies that have [SIGNAL: raised funding / posted SDR roles / published content about outbound] in the last 30 days.
Filter: 50-500 employees, US/UK/EU.
For each: name, LinkedIn URL, company, signal source, signal date.
Output as leads.csv."

# Job posting trigger list
"Search for companies posting [JOB TITLE] roles on LinkedIn and Indeed in the last 14 days.
Filter: [INDUSTRY], [GEO], [COMPANY SIZE].
For each company: company name, job title, posting date, company website, employee count.
Save as hiring-signals.csv."

# Tech stack filter list
"Find B2B SaaS companies between 50-500 employees that use [TECH STACK: HubSpot, Intercom, Segment].
Sources: BuiltWith API, company job postings (tech stack references), company blog tech mentions.
Output: company name, website, employee count, confirmed tech stack, source URL."

Workflow 2: Data Enrichment Automation

Takes a raw lead list, calls enrichment APIs row by row, and merges results back into a single structured file. You provide the input CSV and specify which fields to fill: email, phone, job title, company revenue, technographics.

Typical result: batch of 200 contacts enriched in under 10 minutes. Saves hours of manual API lookups and CSV merging.

What this workflow does

Claude Code reads your input CSV, calls the enrichment APIs you specify, handles rate limits and retries automatically, and merges all responses back into a single output file. It works well for single-provider enrichment and batch processing of any list size.

One limitation: Claude Code has no built-in waterfall enrichment logic. Waterfall enrichment queries multiple providers in sequence (if Provider A misses the email, try Provider B, then Provider C) to maximise coverage. Building this in Claude Code requires writing custom fallback logic for every provider and managing API keys manually. For one-off enrichment of a small list, Claude Code works. For ongoing enrichment across 40+ providers with automatic fallback, you need purpose-built infrastructure.

Step-by-step workflow

Step 1: Prepare your input CSV with the minimum required fields for your enrichment API (usually company domain or LinkedIn URL).

Step 2: Tell Claude Code which APIs to call and which fields to return. Include your API keys in the prompt or in a .env file that Claude Code reads.

Step 3: Claude Code writes a batch enrichment script, handles rate limits, retries on failure, and logs any rows where the API returned no data.

Step 4: Review the output CSV. Empty fields indicate enrichment misses. For misses, re-run against a second provider or flag for manual research.

Copy-paste prompts

# Single-provider enrichment (CEO emails)
"Take this CSV of 200 companies.
For each row: look up the CEO's email using the Hunter.io API [KEY: YOUR_KEY].
Get the company's employee count from Clearbit API [KEY: YOUR_KEY].
Add results as new columns: ceo_email, employee_count.
Save as enriched-leads.csv.
Log any rows where the API returned no data to enrichment-misses.csv."

# Multi-field enrichment from one provider
"Enrich every row in leads.csv using Apollo API.
For each contact, return: verified work email, direct phone, current title, current company, LinkedIn URL, company size, company industry, company funding stage.
Add as new columns. Save to leads-enriched.csv.
Handle rate limits: max 10 requests per second. Retry failed rows up to 3 times before logging to failures.csv."

# Email waterfall (manual sequence)
"Enrich emails for every row in leads.csv using this waterfall:
Step 1: Try Apollo API. If email returned, mark source = Apollo and move to next row.
Step 2: If Apollo returns null, try Hunter.io. If email returned, mark source = Hunter.
Step 3: If Hunter returns null, try Findymail. If returned, mark source = Findymail.
Step 4: If all three return null, mark email = null, source = none.
Output: leads-enriched.csv with columns: name, company, email, email_source, confidence."

# Tech stack enrichment
"For each company domain in companies.csv, call the BuiltWith API to get their current tech stack.
Return: CRM, marketing automation, analytics, support tool, and any sales tools visible.
Add as columns. Flag any company using [COMPETITOR TOOL] as competitor_user = true."

Workflow 3: CRM Data Cleanup

Reads exported CRM CSV files, identifies issues (duplicates, inconsistent formatting, stale records), and writes cleanup scripts from plain English descriptions.

Typical result: 10,000 contacts cleaned in under 5 minutes. Manual equivalent: 2-3 full working days in a spreadsheet.

What this workflow does

The most common CRM hygiene problem is job title normalisation. A typical Salesforce instance contains 15+ variants of the same role: VP Sales, Vice President Sales, VP of Sales, Vice President - Sales, Head of Sales, VP Revenue. Claude Code normalises all of them to a standard taxonomy in a single pass.

The prompt is simple. Describe what bad data looks like and what clean data should look like. Claude Code writes the normalisation logic, applies it across the full file, and outputs the clean version alongside a log of every change it made. You get a full audit trail.

Step-by-step workflow

Step 1: Export your CRM contacts or accounts as a CSV. No need to pre-clean anything.

Step 2: Describe the cleanup rules in plain language. What counts as a duplicate? What are the canonical job title categories? What makes a record stale?

Step 3: Claude Code writes and runs the cleanup script. It outputs a clean CSV and a separate log file showing every record it changed and why.

Step 4: Review the log. Spot-check 10-15% of the changes. Adjust the rules if anything looks wrong and re-run.

Step 5: Import the clean CSV back into your CRM. Always import to a staging view first so you can review before it affects live data.

Copy-paste prompts

# Job title normalisation
"Read contacts.csv.
Normalise all job titles to one of these canonical categories:
[C-Suite, VP, Director, Manager, Individual Contributor, Founder, Other]

Rules:
- Anything with CEO, COO, CTO, CFO, Chief in the title = C-Suite
- Anything with VP, Vice President in the title = VP
- Anything with Director, Head of in the title = Director
- Anything with Manager, Lead in the title = Manager
- Founder, Co-founder, Owner = Founder
- Everything else = Individual Contributor unless blank = Other

Output: cleaned-contacts.csv with original_title and normalised_title columns.
Also output: title-changes-log.csv listing every record changed."

# Duplicate detection and merge
"Read contacts.csv.
Find duplicates using fuzzy matching:
- First name + last name + company domain = definite duplicate
- First name + company domain (no last name) = probable duplicate
- Email domain + last name = possible duplicate

For definite duplicates: keep the record with the most complete fields. Merge any unique data from the duplicate into the kept record.
For probable and possible: flag them but do not auto-merge. Put them in a review-needed.csv.

Output: deduped-contacts.csv + duplicates-merged.csv + review-needed.csv."

# Stale record flagging
"Read contacts.csv.
Flag records as stale where any of these conditions apply:
- No activity date field or last_activity_date is more than 180 days ago
- Email field is empty or null
- Phone field is empty or null and email is also empty
- Job title is empty
- Company field is empty

For each stale record: add a column stale_reason with the reason (pipe-separated if multiple).
Output: contacts-flagged.csv with a summary at the top: N total records, N flagged stale, breakdown by reason."

# Email validation and format fix
"Read contacts.csv.
For each email address:
1. Check the format is valid: name@domain.tld
2. Flag obvious typos: @gmial.com, @hotmai.com, @yaho.com etc
3. Flag role-based emails: info@, contact@, hello@, support@ (these are lower deliverability)
4. Flag personal emails (gmail, hotmail, yahoo, outlook) separately from work emails

Add columns: email_valid (true/false), email_type (work/personal/role-based), email_flag (typo/format_error/none).
Output: contacts-email-checked.csv."

Workflow 4: Outreach Personalisation at Scale

Combines Claude Code's language model capabilities with its file-handling power. Feed it a prospect CSV with enriched data and it generates personalised emails or LinkedIn messages for each row. Not merge tags. Actual personalisation based on company context.

Typical result: 50 unique personalised emails in under 10 minutes.

What this workflow does

The difference from generic AI email tools is context depth. Claude Code can read a prospect's company website, their recent LinkedIn posts, and their CRM activity history, then synthesise all of it into a single personalised message. The personalisation is specific to each row, not a template with a name merge.

For teams running multi-channel outreach, Claude Code can generate LinkedIn connection request messages and follow-up sequences alongside the initial email, all from the same prospect data file.

Quality control matters. Claude Code generates the emails but you should review a sample of 10-15% before sending. Common failure modes: hallucinated company details, generic openings despite specific data being available, occasional tone mismatches. Catching these before send protects your sender reputation.

Step-by-step workflow

Step 1: Prepare your input CSV with enriched prospect data. The more context per row, the better the personalisation. At minimum: name, company, title, and one contextual signal (funding stage, tech stack, hiring pattern, recent content).

Step 2: Write the personalisation prompt. Specify tone, length, what to reference, and what to avoid.

Step 3: Claude Code generates a unique email for each row and outputs a new CSV with subject line, body, and any additional columns you need for import into your sequencer.

Step 4: Review 10-15% of the output. Flag any emails with hallucinated details or wrong tone. Refine the prompt and re-run the flagged rows.

Step 5: Import to Instantly, Smartlead, or your sequencer of choice.

Copy-paste prompts

# Tech stack and funding stage personalisation
"Read prospects.csv.
For each prospect, write a 3-sentence cold email referencing their specific tech stack
and a pain point common to companies at their funding stage.
Tone: direct, peer-to-peer, no salesy language.

Rules:
- Opening line references their specific tech stack (use tech_stack column)
- Second sentence names the pain we solve for companies at their stage (use funding_stage column)
- Third sentence is a single low-friction CTA: one question, not a calendar link
- Under 90 words total per email
- No em dashes
- No filler phrases (I hope this finds you well, I wanted to reach out, etc.)

Output: outreach.csv with columns: name, email, subject_line, body."

# Signal-led personalisation (job posting trigger)
"Read prospects.csv. Each row includes a job posting the company recently published.
For each prospect, write a cold email opener (3 sentences) that:
- References the specific job posting (use job_title and job_posted_date columns)
- Infers what problem they are trying to solve by hiring for that role
- Connects that inferred problem to our value prop: [ONE SENTENCE VALUE PROP]

Do not pitch. Do not mention pricing. End with one open question.
Under 80 words per opener. No em dashes.
Output: outreach.csv with: name, email, opener."

# LinkedIn connection request personalisation
"Read prospects.csv.
For each prospect, write a LinkedIn connection request note.
Max 200 characters. No pitch. No mention of our product.
Reference one thing from their profile (use recent_post or job_title column).
Sound like a peer who found them interesting, not a sales rep.
Output: linkedin.csv with: name, linkedin_url, connection_note."

# Full 3-touch sequence per prospect
"Read prospects.csv.
For each prospect, write a 3-touch outreach sequence:
Touch 1 (Day 1): Signal-led email referencing their tech_stack or recent_news column. Under 80 words.
Touch 2 (Day 5): Different angle. Lead with a relevant insight or stat. No repeat of Touch 1. Under 70 words.
Touch 3 (Day 14): Breakup email. Honest, no guilt trip, leaves the door open. Under 50 words.

Each touch needs its own subject line. No em dashes anywhere.
Output: sequences.csv with columns: name, email, touch_1_subject, touch_1_body, touch_2_subject, touch_2_body, touch_3_subject, touch_3_body."

Workflow 5: Competitive Intelligence

Scrapes competitor websites, parses pricing and feature data, and diffs changes against previous snapshots, all in a single automated run. Point Claude Code at the target URLs, define what to extract, and it outputs structured data you can track over time.

The Playwright MCP integration makes this particularly powerful: Claude Code can control a full browser instance, navigate JavaScript-rendered pages, and capture screenshots for visual diffing.

What this workflow does

Claude Code scrapes competitor pages, parses the content into structured data, compares it against a previously saved version, and writes a summary of what changed. The output is a plain English summary of every change and a diff file so you can inspect exact wording changes.

For hiring signal tracking: Claude Code monitors competitor job posting pages, categorises new roles by department, and flags patterns. A competitor suddenly posting 5 ML engineering roles signals a product direction shift before any press release.

One limitation: Claude Code runs on demand. There is no built-in scheduler for recurring monitoring. You run it manually or set up a cron job to trigger it on a schedule. For always-on monitoring, you need infrastructure that runs 24/7.

Step-by-step workflow

Step 1: Define what to track and where. Pricing pages, feature pages, changelog entries, job postings, or blog content.

Step 2: First run: Claude Code scrapes the target URLs and saves the structured output as a baseline file (e.g., competitor-pricing-baseline.md).

Step 3: Subsequent runs: Claude Code scrapes the same URLs, compares against the baseline, and writes a summary of changes. If nothing changed, it says so. If something changed, it flags the specific lines that differ.

Step 4: Claude Code saves a new snapshot as the updated baseline, so next week's comparison runs against this week's version.

Copy-paste prompts

# Pricing page monitoring and diff
"Visit competitor.com/pricing.
Compare today's pricing tiers against the saved version in reference/competitor-pricing-last-week.md.

If anything changed:
- Write a plain English summary of every change (what tier changed, what the old price was, what the new price is)
- Save the diff to competitive-intel/pricing-changes-[DATE].md
- Take a full-page screenshot and save it

If nothing changed: write 'No changes detected on [DATE]' to competitive-intel/pricing-log.md.
Save today's scraped version as reference/competitor-pricing-last-week.md (replacing the old file)."

# Hiring signal tracking
"Scrape the jobs page at competitor.com/careers.
Compare today's job listings against the saved version in reference/competitor-jobs-baseline.json.

For any new job postings since the baseline:
- Extract: job title, department, location, date posted
- Categorise by department: Engineering, Sales, Marketing, Product, Operations, Other
- Flag if more than 3 new postings in the same department (this is a hiring surge signal)

Write a summary to competitive-intel/hiring-signals-[DATE].md:
- Total new jobs
- Breakdown by department
- Any hiring surge signals and what they might indicate about product direction"

# Feature and changelog monitoring
"Visit competitor.com/changelog and competitor.com/features.
Parse all new entries added since [LAST_CHECK_DATE].

For each new entry:
- Feature name
- What it does in one sentence
- Whether it overlaps with our product (check against our-features.md)
- Whether it fills a gap we do not have

Output: competitive-intel/feature-changes-[DATE].md
Section 1: New features that overlap with ours
Section 2: New features that are gaps for us
Section 3: Raw list of all new changelog entries"

# Full competitive brief on demand
"Build a competitive brief on [COMPETITOR].
Sources: their website, G2 reviews from the last 90 days (search G2.com for their product), their LinkedIn posts from the last 30 days, their job postings.

Return:
1. Their current positioning (in their own words from their homepage)
2. Top 5 most common customer complaints from G2 reviews (exact quotes, paraphrased)
3. Recent product signals from changelog or job postings
4. Messaging shifts visible in their recent LinkedIn content
5. The one thing to say when their name comes up on a call

Save to competitive-intel/[competitor]-brief-[DATE].md"

Workflow 6: Sales Signal Processing

The most complex GTM workflow you can build with Claude Code. Aggregates buying signals from multiple sources, scores them by relevance, and routes high-priority signals to the right rep or sequence, all in a single run.

The practical ceiling is persistence: Claude Code processes signals when you run it. It does not continuously monitor sources, queue signals, or maintain state between sessions. For always-on signal processing, you need infrastructure that runs 24/7.

Signal sources Claude Code can ingest

  • Job postings from LinkedIn, Indeed, and company career pages (hiring signals)
  • Funding announcements from Crunchbase or press releases
  • Technology install data from BuiltWith or Wappalyzer APIs
  • Social media mentions and engagement patterns
  • News articles mentioning target accounts or relevant keywords
  • CRM activity data (last contact date, open deals, stage changes)
  • LinkedIn post engagement from target accounts
  • Website visitor data from tools that expose an API

Step-by-step workflow

Step 1: Collection. Claude Code scrapes or queries each signal source, normalises the data into a common format, and deduplicates signals that appear across multiple sources (a funding announcement that shows up on Crunchbase and in a news article should count once).

Step 2: Scoring. Claude Code applies your scoring rules to each signal. A Series B funding announcement from an ICP-match company scores higher than a generic job posting. You define the rules; Claude Code applies them at scale.

Step 3: Routing. Claude Code segments the scored signals into output files by priority tier, formats them for Slack webhook delivery, or creates CRM import files. The routing logic is defined in your prompt.

Step 4: Review. A human reviews the Tier 1 signals before any outreach goes out. Claude Code speeds up the detection and classification. A human decides whether to act.

Copy-paste prompts

# Multi-source signal aggregation and scoring
"Aggregate buying signals for my ICP from these sources:

Source 1: Search LinkedIn for [TITLE] job postings at companies matching [ICP CRITERIA] in the last 7 days
Source 2: Search Crunchbase for funding announcements from [ICP INDUSTRIES] companies in the last 30 days
Source 3: Check BuiltWith API for companies that recently added [COMPETITOR TOOL] to their tech stack

For each signal, score 1-10 using these rules:
- Series B+ funding + ICP match = 9-10
- Series A funding + ICP match = 7-8
- [COMPETITOR TOOL] added to tech stack + ICP match = 8-9
- Hiring [RELEVANT ROLE] + ICP match = 6-7
- Hiring [ADJACENT ROLE] + ICP match = 4-5

Route:
- Score 8+: save to outreach-queue-urgent.csv (act within 24 hours)
- Score 5-7: save to outreach-queue-weekly.csv (act this week)
- Score below 5: save to monitor.csv

For each signal: company name, website, signal type, signal date, score, score reason."

# Daily signal digest for a target account list
"Run my daily signal digest for the accounts in target-accounts.csv.

For each account:
1. Check if there are any new job postings in the last 24 hours at their company (scrape careers page or use LinkedIn)
2. Check if there are any news articles mentioning the company name in the last 24 hours (search Google News)
3. Check if any key contacts at this account have posted on LinkedIn in the last 48 hours (use LinkedIn MCP)

For any signal found:
- Signal type (job posting / news / LinkedIn post)
- Signal summary in one sentence
- Recommended action (connect request referencing the post / reply to the news / send a DM)

Post the digest to Slack webhook [WEBHOOK_URL] in this format:
Account: [NAME] | Signal: [TYPE] | Summary: [ONE SENTENCE] | Action: [RECOMMENDED]"

# Job change signal detection
"Check my CRM contacts for job changes.
Read contacts.csv which has names and LinkedIn URLs.

For each contact with a LinkedIn URL:
- Fetch their current profile via the LinkedIn MCP or Linked API CLI
- Compare current title and company against the title and company in the CSV
- If they have changed company or title in the last 90 days: flag as JOB_CHANGE

For each JOB_CHANGE detected:
- Old company, old title
- New company, new title
- Date of change (if visible on LinkedIn)
- Is their new company also an ICP match? (check against ICP criteria from CLAUDE.md)

Output:
Job-changes-new-company.csv: contacts who moved to a new company that is also an ICP match (these are warm outreach opportunities)
Job-changes-same-company.csv: contacts who were promoted at the same company
Job-changes-non-icp.csv: contacts who moved to a non-ICP company"

Limitations and When to Use a Platform Instead

Claude Code is powerful for prototyping and one-off automations. Production GTM workflows at scale need additional infrastructure. Understanding the limitations lets you use Claude Code where it wins and fill the gaps with the right tools.

The 5 real limitations

No persistent scheduling. Claude Code runs when you invoke it. There is no built-in cron, no background daemon, no always-on monitoring. Every workflow requires a manual trigger or external scheduling via cron or a workflow tool. If you need signals processed every morning at 7am automatically, you need something else running the trigger.

No built-in CRM connectors. Claude Code can call CRM APIs if you write the integration yourself. It does not have pre-built HubSpot, Salesforce, or Pipedrive connectors. Importing enriched data back into your CRM requires either manual CSV import or custom API code you build once and maintain.

No waterfall enrichment. Single-provider enrichment works well. Waterfall enrichment across 5-10 providers with automatic fallback, deduplication, and coverage optimisation requires building custom logic per provider. At scale, purpose-built enrichment infrastructure is faster to operate and more reliable.

No team collaboration. Claude Code runs on one machine. There is no shared workspace, no audit log visible to your team, no role-based access. For a solo GTM engineer or a founder doing their own outreach, this is fine. For a RevOps team or an agency running workflows for multiple clients, coordination becomes friction.

Context limits on very large datasets. Processing 10,000 CRM records in one session is usually fine. Processing 100,000 records with complex enrichment logic across multiple providers in one run can hit context limits. Large-scale batch jobs sometimes need to be broken into smaller runs.

When Claude Code wins vs when to use a platform

Claude Code wins when:

  • You need to prototype a new GTM workflow fast before committing to infrastructure
  • You are running a one-off cleanup, enrichment, or research task
  • You want full control over the logic and output format without a vendor's constraints
  • You are a solo GTM engineer or technical founder who wants to own the stack
  • The task requires custom logic that no off-the-shelf tool does well

A platform wins when:

  • You need workflows that run automatically on a schedule without manual triggering
  • You need waterfall enrichment across 10+ providers with guaranteed coverage rates
  • Your team needs shared access, audit logs, and role-based permissions
  • You are enriching thousands of records per day and need reliable CRM sync
  • You need always-on signal monitoring that processes and routes without human triggering

The strongest setup combines both: Claude Code for rapid prototyping and custom one-off tasks, a dedicated GTM platform for production workflows that need to run reliably at scale with no manual intervention.

Quick Reference: Setup and All Prompts in One Place

Every prompt from this playbook in one place. Copy, fill in the brackets, paste into Claude Code.

Setup (run once)

# Install Claude Code
npm install -g @anthropic-ai/claude-code

# Start a session
claude

# Install Playwright MCP (for browser-based workflows: competitive intel, LinkedIn scraping)
claude mcp add playwright

# Install LinkedIn MCP (for LinkedIn profile and post data)
npx uvx linkedin-scraper-mcp@latest

# Install Linked API CLI (for LinkedIn automation)
npm install -g @linkedapi/linkedin-cli
linkedin setup

# Create your project folder structure
mkdir -p gtm-ops/{leads,enriched,crm-clean,outreach,competitive-intel,signals,reference}

# Create CLAUDE.md with your ICP, offer, and rules
# Tell Claude: "Interview me to build a CLAUDE.md for my GTM workflows."
# It asks questions, generates the file, saves it to your project folder.

All 6 workflow prompts condensed

# 1. Lead sourcing
"Build me a list of [ICP CRITERIA: industry, funding stage, tech stack, geo, employee range].
Include: [FIELDS]. Deduplicate. Output as leads.csv."

# 2. Data enrichment (single provider)
"Take leads.csv. For each row, call [API] to return [FIELDS].
Add as new columns. Save to leads-enriched.csv. Log misses to enrichment-misses.csv."

# 3. Email waterfall
"Enrich emails from leads.csv using this sequence:
Step 1: Apollo. If null, Step 2: Hunter. If null, Step 3: Findymail.
Mark source per row. Output: leads-enriched.csv with email and email_source columns."

# 4. CRM cleanup (title normalisation)
"Read contacts.csv. Normalise all job titles to: [CANONICAL LIST].
Output: cleaned-contacts.csv + title-changes-log.csv."

# 5. Outreach personalisation
"Read prospects.csv. For each row, write a [N]-sentence cold email referencing [COLUMN] and [COLUMN].
Tone: [DESCRIBE]. Under [N] words. No em dashes. No filler phrases.
Output: outreach.csv with name, email, subject_line, body."

# 6. Competitive pricing diff
"Visit [COMPETITOR URL]. Compare against [BASELINE FILE]. If changed: write summary and save diff.
If unchanged: log no changes. Save today's version as new baseline."

# 7. Signal aggregation and scoring
"Aggregate signals from [SOURCES]. Score 1-10 using [RULES].
Route score 8+ to outreach-queue-urgent.csv, score 5-7 to outreach-queue-weekly.csv, below 5 to monitor.csv."

# 8. Job change detection
"Check contacts.csv LinkedIn URLs. Detect any company or title changes in last 90 days.
Separate into: new-company-icp-match.csv, promoted-same-company.csv, non-icp.csv."

CLAUDE.md template for GTM projects

# GTM AGENT: [COMPANY NAME]

### My offer
[ONE SENTENCE: what you sell and who you sell it to]

### ICP definition
- Target titles: [LIST]
- Company type: [SAAS / AGENCY / B2B SERVICES]
- Company size: [EMPLOYEE RANGE]
- Geography: [REGIONS]
- Buying signals: [DESCRIBE WHAT TRIGGERS OUTREACH]

### Disqualification criteria
- Job seekers or open to work
- Company size below [N]
- Industries to exclude: [LIST]
- Competitors: [LIST]

### Output rules
- All lead lists: save to leads/ folder as CSV
- All enriched lists: save to enriched/ folder
- All cleaned CRM files: save to crm-clean/ folder
- All outreach copy: save to outreach/ folder as CSV with name, email, subject_line, body columns
- All competitive intel: save to competitive-intel/ folder as markdown
- All signal reports: save to signals/ folder
- Never overwrite the input file. Always save to a new output file.
- Log every change made (what was changed and why) to a separate log file.

### API keys
- Hunter.io: [KEY]
- Apollo: [KEY]
- BuiltWith: [KEY]
- Clearbit: [KEY]
- Slack webhook: [URL]

### Tone rules for any copy generated
- No em dashes
- No filler phrases: I hope this finds you well, I wanted to reach out, I came across your profile
- Direct, peer-to-peer, no corporate language
- British English
- No hashtags
Stop reading, start testing
Run this on a real list

Free while you set up. Connect a LinkedIn account, import a list, and see the drafts before a single message sends.

21 sales teams & agencies switched to Prosp in last 2 days
5/5 Rated on CapterraCapterra