outreach-sequencer

Create and manage multi-step outreach sequences — LinkedIn messages, cold emails, and follow-ups with personalization. Use when asked to "send outreach", "create email sequence", "follow up with leads", "start a drip campaign", "send LinkedIn messages", "personalized outreach", or any automated multi-step communication workflow.

3,891 stars

Best use case

outreach-sequencer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create and manage multi-step outreach sequences — LinkedIn messages, cold emails, and follow-ups with personalization. Use when asked to "send outreach", "create email sequence", "follow up with leads", "start a drip campaign", "send LinkedIn messages", "personalized outreach", or any automated multi-step communication workflow.

Teams using outreach-sequencer should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ironclaw-outreach-sequencer/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/aspenas/ironclaw-outreach-sequencer/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ironclaw-outreach-sequencer/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How outreach-sequencer Compares

Feature / Agentoutreach-sequencerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create and manage multi-step outreach sequences — LinkedIn messages, cold emails, and follow-ups with personalization. Use when asked to "send outreach", "create email sequence", "follow up with leads", "start a drip campaign", "send LinkedIn messages", "personalized outreach", or any automated multi-step communication workflow.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Outreach Sequencer — Multi-Step Personalized Campaigns

Design, schedule, and execute multi-step outreach sequences across LinkedIn and email. Each message is personalized per lead using their profile data from DuckDB.

## Sequence Templates

### Template 1: LinkedIn Connection + Message
```
Day 0: Send LinkedIn connection request (with note)
Day 1: If accepted → Send intro message
Day 3: If no reply → Follow-up message
Day 7: If no reply → Break-up / value-add message
```

### Template 2: Cold Email Sequence
```
Day 0: Initial cold email
Day 3: Follow-up (reply to original thread)
Day 7: Value-add email (case study, resource)
Day 14: Break-up email ("closing the loop")
```

### Template 3: Multi-Channel
```
Day 0: LinkedIn connection request
Day 2: Cold email (if not connected on LinkedIn)
Day 4: LinkedIn message (if connected) OR email follow-up
Day 7: Final touch (whichever channel they engaged on)
```

## Personalization Engine

Each message is generated per-lead using their DuckDB profile data. Use these variables:

| Variable | Source | Example |
|----------|--------|---------|
| `{first_name}` | Name field (split) | "Jane" |
| `{company}` | Company field | "Acme Corp" |
| `{title}` | Title field | "CTO" |
| `{mutual}` | Shared connections/background | "Stanford" |
| `{trigger}` | Why reaching out now | "saw your Series A" |
| `{value_prop}` | What you offer them | "AI-powered analytics" |
| `{pain_point}` | Their likely challenge | "scaling engineering team" |

### Personalization Rules
- **Never use generic openers** like "I hope this finds you well"
- **Reference something specific**: recent post, company news, shared background
- **Keep LinkedIn messages under 300 chars** (connection note limit)
- **Keep cold emails under 150 words** (respect attention)
- **Vary language across leads** — don't send identical messages to people at the same company
- **Match tone to seniority**: C-suite gets concise/strategic, ICs get technical/peer-level

### Message Generation Pattern
```
1. Read lead profile from DuckDB
2. Identify personalization hooks:
   - Shared background (school, company, location)
   - Recent company news (web search if needed)
   - Role-specific pain points
3. Select message template for sequence step
4. Generate personalized message
5. Store message + status in DuckDB
```

## Execution

### LinkedIn Messages (via Browser)
```
browser → open LinkedIn messaging
browser → search for recipient
browser → open conversation
browser → type personalized message
browser → send
→ Update DuckDB status: "Sent"
```

### Email (via gog CLI)
```bash
gog gmail send \
  --to "{email}" \
  --subject "{subject}" \
  --body "{personalized_body}" \
  --account patrick@candlefish.ai
```

For follow-ups (reply to thread):
```bash
gog gmail reply \
  --thread-id "{thread_id}" \
  --body "{follow_up_body}"
```

## Sequence Status Tracking

Track in DuckDB with these status fields:

| Field | Values | Notes |
|-------|--------|-------|
| Outreach Status | Queued, Sent, Replied, Converted, Bounced, Opted Out | Main status |
| Sequence Step | 1, 2, 3, 4 | Current step in sequence |
| Last Outreach | date | When last message was sent |
| Next Outreach | date | When next step is due |
| Outreach Channel | LinkedIn, Email, Both | Active channel |
| Reply Received | boolean | True if they responded |
| Thread ID | text | Gmail thread ID for email chains |

```sql
-- Find leads due for next sequence step
SELECT "Name", "Email", "Outreach Status", "Sequence Step", "Next Outreach"
FROM v_leads
WHERE "Outreach Status" = 'Sent'
  AND "Reply Received" = false
  AND "Next Outreach" <= CURRENT_DATE
ORDER BY "Next Outreach";
```

## Cron Integration

Set up automated sequence execution:

```
Schedule: Every 2 hours during business hours (9am-5pm Mon-Fri)
Action:
1. Query leads due for next step
2. For each due lead:
   a. Generate personalized message for their current step
   b. Send via appropriate channel
   c. Update status + advance step
   d. Set next outreach date
3. Report: "Sent 12 messages (8 LinkedIn, 4 email). 3 replies received."
```

### Cron Job Setup (for OpenClaw)
```json
{
  "name": "Outreach Sequencer",
  "schedule": { "kind": "cron", "expr": "0 9,11,13,15 * * 1-5", "tz": "America/Denver" },
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "Run outreach sequence check. Query DuckDB for leads with Next Outreach <= today. Send personalized messages for their current sequence step. Update statuses. Report results.",
    "timeoutSeconds": 300
  }
}
```

## Safety & Compliance

- **Daily send limits**: Max 50 LinkedIn connection requests/day, 100 messages/day
- **Email limits**: Max 100 cold emails/day (avoid spam flags)
- **Opt-out handling**: If someone replies "not interested" / "unsubscribe", immediately set status to "Opted Out" and never contact again
- **Bounce handling**: If email bounces, mark as "Bounced" and try alternate email patterns
- **CAN-SPAM compliance**: Include sender identity, physical address option, and opt-out mechanism in emails
- **LinkedIn ToS**: Keep connection notes professional, don't spam InMails
- **Cool-down**: If a lead hasn't replied after full sequence, wait 90 days before any re-engagement

## Analytics

After each sequence run, track:
```
Active Sequences: 85 leads
├── Step 1 (Initial): 20 leads
├── Step 2 (Follow-up): 35 leads
├── Step 3 (Value-add): 18 leads
├── Step 4 (Break-up): 12 leads
│
Outcomes:
├── Replied: 23 (27% reply rate)
├── Converted: 8 (9.4% conversion)
├── Opted Out: 3 (3.5%)
├── Bounced: 2 (2.4%)
└── No Response (completed): 15 (17.6%)
```

Related Skills

doppel-social-outreach

3891
from openclaw/skills

Promote Doppel world builds across social platforms. Use when the agent wants to share builds on Twitter/X, Farcaster, Telegram, or Moltbook to drive observers, grow reputation, and recruit collaborators.

Social Media

email-outreach-ops

3891
from openclaw/skills

Draft and manage vendor outreach emails for quotes/availability, follow-up cadence, and response summarization into structured decision tables. Use when contacting hotels, transport vendors, or activity providers.

moltflow-outreach

3891
from openclaw/skills

Bulk messaging, scheduled messages, scheduled reports, and custom groups for WhatsApp outreach. Use when: bulk send, broadcast, schedule message, schedule report, cron, custom group, contact list, ban-safe messaging.

outreach-scout

3891
from openclaw/skills

Find and engage warm leads on Reddit, X/Twitter, and forums. Monitors platforms for people asking questions your product solves, drafts helpful replies that naturally mention your offering, and tracks all activity. Use when you need marketing, lead generation, audience building, finding potential customers, or growing product awareness. Works with heartbeats for automated daily scouting.

cold-outreach-pack

3891
from openclaw/skills

Cold email, LinkedIn outreach, and follow-up sequences for sales and networking. Professional templates and best practices.

outreach-sequence-crafter

3891
from openclaw/skills

Build respectful multi-touch outreach sequences with channel mix, follow-up timing, objection handling, and logging templates.

outreach-crm

3891
from openclaw/skills

Track leads locally, manage outreach campaigns, and export as CSV for download.

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research

baidu-search

3891
from openclaw/skills

Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.

Data & Research