agentlyleads docs
Playbooks

Wholesale outreach playbook

Wholesale outreach playbook

This is the repeatable motion for selling a product (an offering) into your existing book of contacts: let the AI read each contact's history, score who actually fits, write a personalized draft per good-fit contact, then you review and send. Nothing goes out without your approval.

It runs entirely through the MCP connector — no server-side AI key required, so it works from claude.ai, Claude Code, or ChatGPT. Connect the connector first (Settings → AI connector), then paste the prompts below into a chat.

The four stages

  1. Offering — make sure the product you're pitching exists in the catalog with a clear name, price, and description. The description is what the AI grounds its fit-scoring and copy on, so it's worth a sentence or two about who it's for.
  2. Match — the AI reads every emailable contact's timeline against the offering and ranks them STRONG / POSSIBLE / WEAK with a one-line reason and a personalization angle. Contacts above the threshold are INCLUDED by default.
  3. Draft — for every INCLUDED candidate, the AI writes a customized email grounded in that contact's history and saves it as a DRAFT under an Outreach: <offering> campaign. Nothing is sent.
  4. Review — you open the Emails page (or ask the AI to read the drafts back), edit anything, and approve the sends.

Each stage is metered under Settings → AI connector (drafts and connector calls show up in this month's AI activity), so you can see the motion's volume over time.

The prompts

Run these in order in a single chat. Replace the bracketed parts.

1. Confirm the offering

List my offerings and show me the one called "[Himalayan lick salt — bulk]".
If it's missing a clear description of who it's for, suggest one and update it.

This uses list_offerings / get_offering, and update_offering if you accept a description edit.

2. Match the offering to contacts

Match the offering "[Himalayan lick salt — bulk]" to my contacts.
Read each prospect's history, then show me the STRONG and POSSIBLE fits
with the reason and the angle you'd use for each.

This runs match_offering_to_contacts. The AI returns a ranked list. Review it with the AI in the chat.

3. Adjust who's included (optional)

Exclude [Jane Doe] and [Acme Feed] from this match — they're not a fit right now.
Keep everyone else.

This calls set_candidate_decision per contact. Only INCLUDED candidates get drafted.

4. Draft the outreach

Draft personalized outreach for every included contact on this match.
Keep each email short, warm, and specific to their history. One clear ask.

This runs draft_outreach. It writes one DRAFT per included contact under the offering's outreach campaign and reports how many it drafted. Nothing is sent.

5. Review and send

Read back the drafts you just created for this campaign so I can review them.

The AI uses list_emails (filtered to the campaign) and get_email to show you each draft verbatim. Edit any of them with update_email_draft, then approve:

The draft to [Sam Rancher] looks good — send it.

Sending is a separate, human-approved step (send_draft); the AI will not send a draft you haven't explicitly approved.

Handling replies

When prospects reply, keep the loop closed so your positive-reply rate stays accurate:

Show me the unclassified replies and classify each one for me.

This uses list_unclassified_replies and classify_reply. INTERESTED replies feed each campaign's positive-reply rate — the number that tells you which pitch is working, which offering to lead with next time.

Why draft-first

Every write in this playbook lands as a draft or a proposed change you approve. The AI does the reading, the fit judgement, and the first draft at scale; you keep the final call on what actually reaches a customer. That is the whole point of the connector: leverage without losing control of your voice or your send button.

On this page