Skip to main content

Cold Email Icebreaker

The Cold Email Icebreaker agent generates highly personalized 7-email cold outreach sequences for a specific contact using deep research on the person and their company.

Overview​

Agent ID: cold_email_icebreaker

Output: Self-contained HTML document with complete 7-email sequence, research summary, and personalization tags.

Execution Time: 30-60 seconds (extensive research phase)

Accepts: LinkedIn URL or email address

Sample Output​

See it in action: Josh Aborwitz Email Sequence

This sample shows a complete 7-email sequence with person insights, company context, icebreaker hooks, and anti-AI detection guidelines.

Value Proposition​

Creates cold email sequences that actually get responses by:

  1. Deep personalization from contact research (posts, career history, interests)
  2. Company-specific hooks (not generic value props)
  3. Human-sounding copy that avoids AI tells
  4. Full 7-email sequence with varied approaches

Quick Start​

1. Start an Email Sequence Generation​

curl -X POST "https://phoenix.hginsights.com/api/agents/v1/agents/cold_email_icebreaker/runs" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"contactIdentifier": "https://linkedin.com/in/username"
},
"params": {
"campaignGoal": "meeting",
"productContext": "Sales intelligence platform",
"tonePreference": "conversational"
}
}'

Response:

{
"run_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued"
}

2. Poll for Completion​

curl "https://phoenix.hginsights.com/api/agents/v1/runs/{run_id}" \
-H "Authorization: Bearer YOUR_API_KEY"

3. Retrieve the HTML Sequence​

curl "https://phoenix.hginsights.com/api/agents/v1/runs/{run_id}/artifacts" \
-H "Authorization: Bearer YOUR_API_KEY"

Input Parameters​

Required: Contact Identifier​

FieldTypeDescription
contactIdentifierstringLinkedIn URL (e.g., https://linkedin.com/in/username) OR email address

Optional: Context Parameters​

FieldTypeDefaultDescription
senderContextobject{}Info about sender (name, title, company, mutualConnections)
campaignGoalstringmeetingGoal: meeting, reply, or referral
productContextstring-What you're selling (for relevance)
tonePreferencestringconversationalTone: formal, conversational, bold, or casual

Example with Full Context​

{
"input": {
"contactIdentifier": "https://linkedin.com/in/sarahchen-revops"
},
"params": {
"senderContext": {
"name": "Alex",
"title": "Account Executive",
"company": "HG Insights",
"mutualConnections": ["Mike at Gong"]
},
"campaignGoal": "meeting",
"productContext": "Sales intelligence data to improve pipeline quality",
"tonePreference": "conversational"
}
}

7-Email Sequence Structure​

EmailPurposeDayLength
1Icebreaker - Personal hook, establish relevance150-80 words
2Value - One specific pain point you solve360-100 words
3Social proof - Brief case study or name drop650-80 words
4Different angle - New hook or approach1060-100 words
5Quick bump - Short, casual follow-up1430-50 words
6Resource share - Offer something valuable, no ask1850-80 words
7Breakup - Respectful close, leave door open2340-60 words

HTML Output​

The agent produces a self-contained HTML document that includes:

  1. Contact Header - Name, title, company, LinkedIn URL, email
  2. Research Summary - Person insights and company insights
  3. Icebreaker Hooks - Best personalization opportunities identified
  4. 7-Email Cards - Each with:
    • Subject line
    • Email body
    • Personalization tags used
    • Word count and CTA type
  5. Sequence Strategy - Primary hook, backup angles, best send times
  6. Do Not Say List - AI tells specific to this prospect

Anti-AI Detection​

The agent follows strict guidelines to avoid AI-sounding copy:

Banned Phrases​

  • "I hope this email finds you well"
  • "I wanted to reach out"
  • "I came across your profile/company"
  • "Revolutionary/game-changing/cutting-edge"
  • "Please let me know if you're interested"

Human-Sounding Patterns​

  • Start mid-thought sometimes
  • Use "you" more than "I" or "we"
  • One ask per email, max
  • Vary sentence structure and length
  • End with questions, not statements

Personalization Depth Levels​

LevelExampleQuality
None"Companies like yours..."Bad
Surface"I see you're at Acme"Weak
Company"With your EMEA expansion..."Okay
Personal"Your post about pipeline quality..."Good
Specific"When you said 'quality > quantity' last week..."Best

Use Cases​

AE Outbound Prospecting​

Generate personalized sequences for high-value prospects before cold outreach.

BDR High-Volume Prospecting​

Create varied, personalized emails that avoid the spam folder and AI detection.

Account-Based Marketing​

Develop multi-touch sequences tailored to specific accounts and personas.

Re-engagement Campaigns​

Create fresh approaches for prospects who've gone cold.

Error Handling​

ScenarioBehavior
LinkedIn URL invalidReturns HTML error page with format guidance
Contact not foundProceeds with web search only, notes limited personalization
No personalization foundFlags as "low personalization risk," uses company-level hooks
Company unknownProceeds with contact-only personalization

MCP Tools Used​

ToolPurpose
contact_searchFind contact from LinkedIn URL or email
contact_enrichGet full profile (career history, skills)
web_searchFind posts, talks, articles by the person
company_firmographicCompany context (size, industry)
company_technographicTech stack for relevance (optional)

Example: Python Integration​

import requests
import time

API_KEY = "phx_your_api_key_here"
BASE_URL = "https://phoenix.hginsights.com/api/agents"

headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}

def generate_cold_email_sequence(
contact_identifier: str,
product_context: str = None,
campaign_goal: str = "meeting"
) -> str:
"""Generate a 7-email cold outreach sequence."""

# 1. Start the run
payload = {
"input": {"contactIdentifier": contact_identifier},
"params": {"campaignGoal": campaign_goal}
}
if product_context:
payload["params"]["productContext"] = product_context

response = requests.post(
f"{BASE_URL}/v1/agents/cold_email_icebreaker/runs",
headers=headers,
json=payload
)
response.raise_for_status()
run_id = response.json()["run_id"]
print(f"Started run: {run_id}")

# 2. Poll for completion
while True:
status_response = requests.get(
f"{BASE_URL}/v1/runs/{run_id}",
headers=headers
)
status = status_response.json()

print(f"Status: {status['status']}")

if status["status"] == "succeeded":
break
elif status["status"] == "failed":
raise Exception(f"Run failed: {status.get('error')}")

time.sleep(5)

# 3. Get artifacts
artifacts_response = requests.get(
f"{BASE_URL}/v1/runs/{run_id}/artifacts",
headers=headers
)
artifacts = artifacts_response.json()["artifacts"]

html_artifact = next(a for a in artifacts if a["artifact_type"] == "html")
return html_artifact["url"]

# Usage
sequence_url = generate_cold_email_sequence(
"https://linkedin.com/in/username",
"Sales intelligence platform"
)
print(f"Sequence available at: {sequence_url}")

Best Practices​

  1. Provide product context - Helps the agent tailor messaging to your specific solution
  2. Include sender context - Mutual connections and sender info improve personalization
  3. Review and customize - Use the sequence as a starting point, add your personal touch
  4. Test different tones - Try bold for senior executives, casual for peers
  5. Use the "Do Not Say" list - These phrases will trigger spam filters and AI detection

Next Steps​