# HeyLead — Autonomous LinkedIn SDR

Your AI sales rep. One command to fill your pipeline.

HeyLead is an MCP-native autonomous LinkedIn SDR that gives your OpenClaw agent the ability to do LinkedIn outreach — find prospects, send personalized messages, follow up, and close deals.

## What This Skill Does

This skill connects HeyLead as an MCP server in your OpenClaw agent, giving it 30 specialized LinkedIn outreach tools:

- **ICP Generation** — RAG-powered buyer personas with pain points, fears, barriers, and LinkedIn search parameters
- **Campaign Management** — Create, pause, resume, archive, and compare outreach campaigns
- **Personalized Outreach** — Voice-matched connection invitations that sound like you, not a bot
- **Multi-Touch Sequences** — Follow-up DMs, engagement warm-ups (comments, likes, endorsements)
- **Reply Handling** — Sentiment classification, auto-responses, meeting scheduling
- **Analytics** — Funnel reports, conversion rates, stale lead detection, engagement ROI
- **Autonomous Scheduling** — 24/7 cloud scheduler for invitations, follow-ups, and reply checks

## Setup

### Prerequisites

- [uv](https://docs.astral.sh/uv/getting-started/installation/) installed (`brew install uv` on Mac, or `curl -LsSf https://astral.sh/uv/install.sh | sh`)

### Configuration

Add to your `openclaw.json`:

```json
{
  "mcp": {
    "servers": [
      {
        "name": "heylead",
        "command": "uvx",
        "args": ["heylead"]
      }
    ]
  }
}
```

### First-Time Account Setup

After adding the MCP server, tell your OpenClaw agent:

> "Set up my HeyLead profile"

**Hosted:** sign in at [heylead.dev/auth/login-url](https://heylead.dev/auth/login-url), connect LinkedIn, and paste the token message into chat — the backend handles LinkedIn access and AI calls.

**Self-hosted:** requires a [Unipile](https://www.unipile.com) account for LinkedIn access and your own LLM API key (a free [Gemini key](https://aistudio.google.com/apikey) works). Pass the key to setup_profile, open the LinkedIn link it returns, then run setup_profile again.

## Usage Examples

```
"Find me CTOs at fintech startups in New York"
"Generate an ICP for AI SaaS founders"
"Create a campaign targeting VP of Sales at Series B startups"
"Send outreach to the campaign"
"Check my replies"
"How's my outreach doing?"
"Suggest next action"
"Enable the cloud scheduler"
```

## Typical Workflow

```
1. setup_profile(backend_jwt="...")             → Connect LinkedIn
2. generate_icp(target="CTOs fintech")          → Create buyer personas
3. create_campaign(target="...", icp_id="...")  → Find prospects (saved as a draft)
4. campaign(action="launch", campaign_id="...") → Start outreach
5. scheduler(action="toggle", enabled=True)     → Autonomous outreach
6. check_replies() / show_status()              → Monitor pipeline
7. prospect(action="close", outcome="won")      → Track conversions
```

## Safety Model

Campaigns are created as drafts and only start when explicitly launched. Every send passes rate limits, working-hours checks, and a 1st-degree connection guard.

## All 30 Tools

| Tool | What it does |
|------|-------------|
| `setup_profile` | Connect LinkedIn, analyze writing style, create voice signature |
| `account` | Manage LinkedIn accounts — list, switch, or disconnect |
| `generate_icp` | Create Ideal Customer Profiles with buyer personas |
| `icp` | Preview which LinkedIn profiles a saved ICP matches, without creating a campaign |
| `create_campaign` | Find prospects and build an outreach campaign (as a draft) |
| `campaign` | Launch, pause, resume, archive, delete, emergency stop, retry failed |
| `edit_campaign` | Update name, mode, booking link, preferences |
| `import_prospects` | Import prospects from CSV |
| `generate_and_send` | Send personalized connection invitations |
| `send_message` | Follow-up DMs, replies, and voice memos |
| `send_email` | Send email via Unipile (Gmail/Outlook). Never Mail.app. |
| `check_replies` | Monitor inbox, classify sentiment, surface hot leads |
| `book_meeting` | Put an agreed call on your Google Calendar and invite the prospect |
| `show_status` | Campaign dashboard with stats and health |
| `engage_prospect` | Comment, react, follow, or endorse prospects |
| `inbox` | Browse and read LinkedIn inbox messages |
| `backfill_inbox` | Process unreplied inbox messages through the inbound pipeline |
| `create_post` | Generate and publish posts to LinkedIn, X/Twitter, or both |
| `prospect` | Skip, close with outcome, view conversation or timeline |
| `contacts` | Search and manage the global contact base |
| `partner` | Track follow-ups with partners, vendors, and investors |
| `crm_sync` | Sync won deals to HubSpot CRM |
| `analytics` | Reports, comparisons, and exports |
| `suggest_next_action` | AI-recommended next step |
| `signals` | View and analyze buying signals |
| `manage_watchlist` | Manage signal keyword watchlists |
| `network` | Network intelligence across connected accounts |
| `brand_strategy` | LinkedIn personal brand audit and strategy |
| `profile` | View and restore LinkedIn profile change history |
| `scheduler` | Autonomous scheduler — status, on/off, always-on |

## Pricing

| Plan | Price | Limits |
|------|-------|--------|
| **Free** | $0 | 50 invitations/month, 1 campaign, 30 engagements/month |
| **Pro** | $29/mo | Unlimited campaigns, 5 LinkedIn accounts, cloud scheduler |

## Privacy

- Contacts and messages stored in local SQLite database
- AI calls routed through HeyLead backend or your own key
- No messages or contacts stored on HeyLead servers

## Links

- [PyPI](https://pypi.org/project/heylead/)
- [GitHub](https://github.com/D4umak/heylead)
- [Issues](https://github.com/D4umak/heylead/issues)

## License

MIT
