Prompt Engineering
The Prompts That Do The Work
These aren't generic templates. Each prompt is engineered to extract specific, actionable data from a company profile. The output is structured JSON that maps directly to HubSpot deal properties.
How to use these: Each prompt accepts variable inputs wrapped in double curly braces — filled in by Clay or your enrichment pipeline before being sent to Claude. Force JSON-only output in every system prompt to avoid inconsistent formatting at scale.
01 — Company Research & Gap Analysis Foundation Prompt
The base prompt. Send this when you have a company URL and want to identify specific weaknesses you can sell against. Works for any service-based agency. Run this first — all other prompts build on its output.
Company Research Prompt
Input: URL + Industry
# System
You are a B2B growth analyst specializing in {{your_service}}.
Analyze companies and identify specific, actionable gaps.
Return structured JSON only. No preamble, no commentary.
# User
Analyze this company and return a JSON object:
Company URL: {{company_url}}
Industry: {{industry}}
Company Size: {{employee_count}}
Our Service: {{service_category}}
Return:
{
"gap_analysis": [top 3 specific gaps related to our service],
"growth_signals": [hiring, content velocity, ad spend indicators],
"decision_maker_angle": [what CEO vs CMO vs VP cares about],
"fit_score": number 1-10,
"fit_reasoning": "one sentence",
"urgency_signals": [evidence they need this now]
}
02 — Personalized Cold Email Generator Outreach Prompt
Takes the gap analysis output and turns it into a high-conversion first-touch email. The key is referencing something specific — not just their company name. Claude will use the actual pain point you found.
Cold Email Prompt
Input: Gap Analysis JSON
# System
You write cold emails that get replies. No fluff. No generic openers.
Lead with a specific observation. Keep it under 100 words.
Never use "I hope this email finds you well."
Never mention your company in the first sentence.
Contact Name: {{first_name}}
Company: {{company_name}}
Their Biggest Gap: {{gap_analysis[0]}}
Growth Signal: {{growth_signals[0]}}
Our Offering: {{service_pitch}}
Format as JSON:
{
"subject_line": "...",
"email_body": "...",
"ps_line": "optional 1-line P.S.",
"followup_angle": "what to reference in follow-up #2"
}
03 — Mini Audit Report Generator High-Value Asset
The highest-converting outreach asset. A free 1-page audit specific to their business. Claude generates the full content automatically — you send it as a PDF or landing page. Dramatically increases reply rate vs. plain email.
Audit Report Prompt
Input: Full Company Profile
# System
You are a senior consultant writing a free audit report.
Be specific, credible, and show your work. Avoid vague statements.
Every finding must include a severity level and a recommended action.
Company: {{company_name}}
URL Scraped: {{scraped_content}}
Tech Stack: {{tech_stack}}
Competitors: {{competitor_list}}
Our Service Focus: {{service_category}}
Return JSON:
{
"executive_summary": "2-3 sentences",
"findings": [{ issue, severity, recommendation }],
"quick_wins": [3 things they can do this week],
"competitive_gap": "what competitors do that they don't",
"estimated_impact": "if they fixed the top issue, what happens"
}
04 — ICP Scoring & Prioritization Batch Prompt
Use this to rank a batch of companies so your team focuses on the highest-leverage targets first. Feed 10–50 companies at once. The output tells you exactly where to spend your time.
Batch Scoring Prompt
Input: Company Array
# System
You are an ICP scoring engine. Score companies ruthlessly.
A 10 = budget, urgency, exact service match.
A 1 = wrong size, wrong industry, or no evidence of pain.
Return only the JSON array, sorted by score descending.
ICP Definition: {{icp_description}}
Our Service: {{service_description}}
Company List: {{company_array_json}}
Return:
[{
"company": "...",
"score": 1-10,
"tier": "A" | "B" | "C",
"top_reason": "why they scored high",
"disqualifier": "biggest risk or gap"
}]
MCP Connectors
How to Connect Claude to Your Stack
MCP (Model Context Protocol) is what lets Claude natively talk to ZoomInfo, Clay, HubSpot, and your other tools without copy-pasting data between systems. Here's how each connector works in practice.
What MCP actually is: MCP gives Claude direct read/write access to external tools in real time. Instead of you exporting a CSV from ZoomInfo and pasting it into Claude, Claude pulls the data itself, analyzes it, and writes the results back to HubSpot — all in one conversation. It's the difference between a research assistant and a fully autonomous workflow.
🔍
ZoomInfo MCP
Connect via ZoomInfo's API or through Clay as a pass-through. Claude queries company and contact data directly by ICP filter — no manual exports required.
- Query companies by SIC code, revenue, tech stack
- Pull decision-maker contact data in real time
- Search by intent signals (in-market buyers)
- Export directly to enrichment pipeline
🏺
Clay MCP
Clay's API lets Claude trigger enrichment waterfalls, check column outputs, and build table rows autonomously. Best used with Claude as the AI column inside your table.
- Trigger waterfall enrichment per row
- Read scraped website content as input
- Write Claude's output back to Clay columns
- Trigger downstream actions (email, Slack)
🟠
HubSpot MCP
The HubSpot MCP lets Claude create contacts, update deal properties, write notes, enroll contacts in sequences, and read CRM context — without leaving Claude's interface.
- Create contacts with full enrichment data
- Write Claude's gap analysis to deal notes
- Enroll contacts into email sequences
- Update deal stage and fit score properties
🌐
Web Fetch MCP
Claude's built-in web fetch capability lets it visit any company URL and read page content directly. This is how Claude researches a company without you copying anything.
- Scrape homepage, about, pricing, blog pages
- Read job postings for growth signals
- Analyze competitor pages for comparison
- Pull LinkedIn company pages for signals
What a Live MCP Session Looks Like
This is a real Claude + MCP prospecting session. One prompt. Claude handles everything end to end.
Live MCP Session Example
Claude Desktop / Claude.ai
User: Pull the top 20 ecommerce brands from ZoomInfo doing
$5M–$50M revenue with an Amazon presence, founded after 2018.
Score them against our ICP. Write a first-touch email for the top 5.
Claude: [calls ZoomInfo MCP → pulls 20 companies]
[calls web_fetch on each company URL]
[runs gap analysis prompt on each]
[scores and ranks all 20 by fit]
[generates 5 personalized cold emails]
[creates 5 contacts in HubSpot with notes]
[enrolls all 5 in outbound sequence]
# Total time: ~45 seconds. Previously: 4–6 hours.
Know Before You Build
Real Limitations of This System
This workflow is powerful but not magic. Here's exactly where it breaks down and how to work around each limitation before it costs you a deal.
Limitation 01
Context Window Limits
Claude can process ~200K tokens per conversation. Feed it 100 companies with full scraped content and output quality degrades toward the end.
Batch in groups of 10–15 companies max. Use Claude Haiku for initial scoring, Sonnet for writing.
Limitation 02
No Real-Time LinkedIn Data
Claude cannot directly access LinkedIn profiles or activity feeds without a third-party integration. Scraping LinkedIn at scale violates their ToS.
Use Clay's LinkedIn enrichment columns to pull data first, then pass that structured data to Claude as input.
Limitation 03
Hallucinated Company Data
If Claude can't access a URL (paywalled, JS-rendered, slow load), it may generate plausible-sounding but inaccurate company details from training data.
Require a confidence field in your JSON schema. Pre-scrape with Clay before sending to Claude.
Limitation 04
Rate Limits at Scale
At 1000+ companies you'll hit Claude API rate limits, ZoomInfo API quotas, and Clay row limits simultaneously. Parallel processing breaks if not managed.
Implement exponential backoff in your Clay → Claude webhook. Run batches during off-peak hours.
Limitation 05
Output Consistency
Claude is non-deterministic. Two runs on the same company produce different output, breaking downstream CRM automations that expect exact field names.
Use strict JSON schema validation. Force enum values for categorical fields like tier and urgency level.
Limitation 06
Stale Personalization
Claude will write confident emails referencing a "product launch" based on a blog post published 18 months ago. Prospects notice outdated references immediately.
Pass {{content_date}} to Claude and instruct it to flag anything older than 90 days.
Bottom line: This system is 10× better than manual prospecting, but it requires a human QA layer before anything reaches a real prospect. Use Claude to generate at scale, then do a 30-second spot check on your A-tier accounts before sending. The system finds the needle in the haystack — you still throw the pitch.