# AI SDR Playbook — run outbound as an agent

LDM turns your AI agent into a working SDR. This page is the role description and the end-to-end operating procedure: every stage maps to concrete `/api/*` endpoints (all of them are also exposed as MCP tools — see the agent card). A human can follow along in the web UI at app.live-direct-marketing.online: everything the agent does is visible and editable by hand.

> **TL;DR for agents:** Prospect → `/api/companies` + `/api/contacts` (+ enrichment, email verification) → build `/api/contact-lists` → creatives via `/api/briefs` + `/api/creatives` (QC gate) → campaign `/api/campaigns` (pour {listId} → prepare → screen → send) → work replies in `/api/dialogs` → qualify to `/api/leads` kanban → hand off to a human. Machine-readable mirror of this page: `GET /sdr-playbook.md`; full capability list: `GET https://api.live-direct-marketing.online/.well-known/agent-card.json`.

## Built for AI agents — bring yours

You are in the right place: LDM is agent-friendly by design. There is no separate "robot API" — your agent uses the same surface as the human UI, with its own scoped key. Works out of the box with:

- **Claude Desktop / Claude Code** — connect the [`ldm-crm-mcp`](https://www.npmjs.com/package/ldm-crm-mcp) MCP server and install the [Claude Skills pack](/sdr-skills) (38 ready SKILL.md files).
- **Cursor / Windsurf / any MCP client** — the same MCP server, same key.
- **Custom agents (OpenAI SDK, LangChain, your own code)** — plain REST + [OpenAPI](/api-reference) + [`agent-card.json`](https://api.live-direct-marketing.online/.well-known/agent-card.json) discovery.
- **Agent-to-agent** — A2A protocol endpoint for orchestrator agents.
- **You (human)** — the full web UI at [app.live-direct-marketing.online](https://app.live-direct-marketing.online): everything the agent does is visible, auditable and editable by hand.

Getting started takes three steps: 1) sign up — a scoped `ldm_*` key is issued automatically; 2) plug the key into your agent (MCP config below or plain Bearer header); 3) hand the agent this playbook and the skills pack. Dangerous capabilities (actually sending mail) stay off until you grant the scopes yourself in Settings → API Keys.

## The SDR role, defined

An SDR owns the top of the sales funnel: finding target companies and people, reaching out cold (compliantly), spotting interest in replies, qualifying, and handing warm leads to a human closer. As an agent you do all of it through the API with your scoped `ldm_*` key. Your default signup key is read+draft only — the workspace owner expands scopes (Settings → API Keys) as trust grows; `email:send` and `mailing:write` are deliberately manual grants.

## Stage 1 — Prospecting: build the account & contact base

- `POST /api/companies` / `POST /api/companies/import` — create or bulk-import target accounts (CSV, Google Sheets, combined import).
- `POST /api/companies/:id/enrich-from-inn`, `GET /api/connectors/dadata` — enrich requisites and firmographics.
- `POST /api/contacts` + channels — decision-makers; a person is not an email, channels attach separately.
- `POST /api/email-verification/verify-batch` — verify addresses before any outreach; drop invalid ones.
- `POST /api/company-lists` / `contact-lists` (+ groups) — segment into named lists; lists are the unit every campaign consumes.
- Hybrid mode: the LDM Chrome side-panel extension scores the page a human is browsing against the ICP, captures emails and drafts a message on the spot — the agent feeds it queues via `/api/icp-tasks` and harvests results (see the ICP Review Dispatcher skill).

## Stage 2 — Compliance gate (non-negotiable)

- `GET /api/stop-list/check` and `GET /api/suppression/check` — never mail a stopped or suppressed address/domain.
- `GET /api/anti-spam` rules of the workspace — respect send limits, warmup schedules and provider blocks (see [Anti-spam](/anti-spam)).
- One test message to yourself before any bulk send. Bulk actions against external services can email real third parties — treat every send as irreversible.

## Stage 3 — Creatives: what you will say

- `POST /api/briefs` — capture the offer, ICP and tone as a structured brief.
- `POST /api/creatives` + creative bank — generate spintax variants per segment; personalization variables resolve per contact.
- `POST /api/creatives/:id/checklist/qc` — run the QC gate; only QC-passed creatives go to campaigns.
- `POST /api/creatives/:id/test-send` — send the test to your own inbox and read it as a human would.

## Stage 4 — Campaign: launch and monitor

- `POST /api/campaigns` → `POST /api/campaigns/:id/pour` with an explicit `{"listId": …}` (an empty body pours the ENTIRE base — never do that) → `prepare` → `screen` → `send`.
- `GET /api/campaigns/:id/metrics` and `/recipients` — delivery, opens, replies, bounces per stage of the recipient state machine.
- Campaigns may require human approval before sending (auto-approve is a per-user admin setting). If your workspace requires it, request approval and wait.
- Full lifecycle reference: [Mailing Campaign](/mailing-flow) and [Tasks](/tasks-campaigns).

## Stage 5 — Inbox: work every reply

- `GET /api/dialogs?folder=inbox` — poll the unified inbox; every outbound thread and reply lands here.
- `POST /api/dialogs/:id/classify-reply` — AI-classify: interested / not now / unsubscribe / bounce / out-of-office.
- `POST /api/dialogs/:id/actions/unsubscribe|bounce|stop-list` — honor negative signals immediately.
- `POST /api/dialogs/:id/reply` (needs `dialogs:write`) — answer interested prospects; keep threads human-quality.

## Stage 6 — Qualify & hand off

- `POST /api/dialogs/:id/create-lead` — promote an interested reply to a lead, linked to its dialog history.
- `PATCH /api/leads/:id/move` + `/interest` — advance the kanban stage, set interest level, attach the dossier (`GET /api/leads/:id/dossier`).
- Hand off: assign to a human, drop a summary comment (what they want, budget signals, next step), and notify. The human sees the full thread in the UI.

## Workspace limits (self-signup)

- 50MB database quota — over quota, POST/PUT/PATCH return 403 while reads and DELETE keep working. Prune imports or ask the admin to raise it.
- One self-service signup auto-activates per hour platform-wide; later signups wait for admin approval.
- Default key scopes are read + safe drafts. `email:send`, `mailing:write`, `dialogs:write` are granted by the workspace owner in Settings → API Keys.

## Machine-readable entry points

- `GET https://developers.live-direct-marketing.online/sdr-playbook.md` — this page as raw markdown.
- `GET https://developers.live-direct-marketing.online/llms.txt` — the whole portal for LLM consumption.
- `GET https://api.live-direct-marketing.online/.well-known/agent-card.json` — every capability with its scope.
- `https://www.npmjs.com/package/ldm-crm-mcp` — the MCP server package for Claude / Cursor.
