251
All workflows

How Brew books 20 demos per week with outbound

Runs cold email and LinkedIn as one system, opens with finished work for each prospect, and steers every warm reply to one next step.

Outcome

  • An answer, or a note on why it was skipped, for every reply on either channel by the end of the day it arrived.

  • Every no suppressed on both channels, not only the one it came from.

  • A weekly table of people contacted, replies, warm replies and demos booked.

How it works

  1. C

    Build the week's list, by Search people by Crustdata

    Find up to weekly_volume people matching ideal_customer, one per company. Keep each person's name, title, company, company domain and LinkedIn profile URL.

  2. C

    Get their work emails, by Get a person's emails and phone numbers by Crustdata

    Look up business emails by LinkedIn profile URL, in batches. Keep each person's work email; people with no email stay in the list for the LinkedIn channel.

  3. I

    Verify the emails, by Verify an email address by Instantly

    Check each work email and keep only the verified ones for the email channel. Bounces burn the sending domains that everything else depends on.

  4. B

    Build the deliverable before they ask, by Generate an email by Brew

    Produce free_deliverable for the best-fit prospects. When your product is email, this tool is the whole step: use a ready Brew brand configured with the prospect's approved brand assets and access you are authorized to use. The tool generates within its selected brand; it does not create a brand from a website URL. Generate a sample design, such as a welcome email, and keep it as a demonstration. Do not send cold outreach through Brew. Selling something else, skip this tool and make the equivalent with your own product: an audit it ran, a report it wrote, a page it rebuilt, anything finished and specific to this prospect with a link they can open. Keep each deliverable's link. This is the step that makes the reply rate: the first message shows finished work instead of describing it.

  5. I

    Enroll the email channel, by Add leads to a campaign by Instantly

    Add the verified people to email_campaign_id. The copy leads with what is wrong or missing that your product fixes for this prospect and offers the finished deliverable from the previous step, not a pitch about the product.

  6. H

    Enroll the LinkedIn channel, by Add leads to a campaign by HeyReach

    Add the rest to linkedin_campaign_id, which spreads sends across several LinkedIn sender accounts so no single profile exceeds its daily limits. Keep the two channels' lists apart so nobody is cold-contacted twice in the same week.

  7. H

    Sweep the LinkedIn inbox, by Get inbox conversations by HeyReach

    At least daily, pull recent conversations and judge each one by its newest message, not by thread-level metadata. Sort replies into warm, question, not-now and no.

  8. H

    Reply on LinkedIn, by Send a message by HeyReach

    Answer the actual question first, in the sender's own voice, short and specific. Every warm reply steers to exactly one of three outcomes: try the product self-serve, book a call at booking_link, or take the done-for-you offer. Show the user each reply before it sends.

  9. I

    Reply on email, by Reply to an email by Instantly

    Same playbook as LinkedIn, and when a prospect bites on the offer, the reply carries the deliverable link built in step 4. A not-now gets a date to reconnect, not a push.

  10. Suppress every no, on both channels, by Your agent

    Keep one suppression list. A no, an unsubscribe or a wrong-person reply on either channel stops the sequence and blocks the person on the other channel too, since the campaigns do not share their no's on their own.

You'll be asked for

  • The companies and roles to target

    e.g. B2B software, 20 to 500 employees, the person who owns marketing or growth

  • New prospects to contact each week

    e.g. 2,000

  • The Instantly campaign that sends the cold emails

  • The HeyReach campaign that sends the connection requests and messages

  • The calendar link a warm reply gets

  • The finished thing your product makes for one prospect without their input

    e.g. their welcome email rebuilt from their site

outbound-demo-engine.mdView markdown

How Brew books 20 demos per week with outbound

Runs cold email and LinkedIn as one system, opens with finished work for each prospect, and steers every warm reply to one next step.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

Outcome

  • An answer, or a note on why it was skipped, for every reply on either channel by the end of the day it arrived.
  • Every no suppressed on both channels, not only the one it came from.
  • A weekly table of people contacted, replies, warm replies and demos booked.

Inputs

Ask the user for these before you start.

  • ideal_customer: the companies and roles to target, e.g. B2B software, 20 to 500 employees, the person who owns marketing or growth
  • weekly_volume: new prospects to contact each week, e.g. 2,000
  • email_campaign_id: the Instantly campaign that sends the cold emails
  • linkedin_campaign_id: the HeyReach campaign that sends the connection requests and messages
  • booking_link: the calendar link a warm reply gets
  • free_deliverable: the finished thing your product makes for one prospect without their input, e.g. their welcome email rebuilt from their site

Set up

Crustdata (tool:crustdata/search-people, tool:crustdata/enrich-person-contact)

Use the first option your agent supports.

Notes:

  • Get a person's emails and phone numbers: Pass one identifier type per request.
CLI (official)

Install the command, then confirm it runs.

curl -fsSL https://static-assets.crustdata.com/cli/install.sh | sh
crustdata --version
  • Search people: run crustdata person search
  • Get a person's emails and phone numbers: run crustdata person contacts

Set $CRUSTDATA_API_KEY in your environment first (get a key: https://app.crustdata.com/api-keys).

API (official)

Instantly (tool:instantly/verify-email, tool:instantly/add-leads-to-campaign, tool:instantly/reply-to-email)

Use the API.

Notes:

  • Verify an email address: A check over 10 seconds returns pending: poll GET /api/v2/email-verification/{email} or pass a webhook_url. Read verification_status, not status. Needs an active paid plan and the email_verifications:create scope.
  • Add leads to a campaign: Leads added to an active campaign can start receiving its emails: confirm the campaign first. Pass campaign_id or list_id, not both; the key needs the leads:create scope.
  • Reply to an email: Sends a real email: confirm the text first. It only replies to an existing email, whose id goes in reply_to_uuid; it can't start a new thread.

Generate an email (Brew, tool:brew/generate-email)

Use the first option your agent supports.

Note: Costs credits and requires a ready brand. If generating, poll get_email. Keep emailId and emailVersionId; pass both to a send or automation to pin the design.

MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

{ "mcpServers": { "brew": { "url": "https://brew.new/api/mcp" } } }

Call the MCP tool create_email.

CLI (official)

Install the command, then confirm it runs.

brew install getbrew/tap/brew-cli
brew-cli --version

Run brew-cli emails generate.

Set $BREW_API_KEY in your environment first (get a key: https://brew.new/settings/api).

HeyReach (tool:heyreach/add-leads-to-campaign, tool:heyreach/get-conversations, tool:heyreach/send-message)

Use the API.

  • Base URL: https://api.heyreach.io
  • Add leads to a campaign: POST /api/public/campaign/AddLeadsToCampaignV2
  • Get inbox conversations: POST /api/public/inbox/GetConversationsV2
  • Send a message: POST /api/public/inbox/SendMessage
  • Auth: send the header X-API-KEY: $HEYREACH_API_KEY

Note: Create the key in the HeyReach app under Settings, API keys. Every request counts toward one workspace limit of 300 requests per minute, and read endpoints use POST with a JSON body of filters.

Notes:

  • Add leads to a campaign: The campaign must exist and have LinkedIn sender accounts assigned before leads go in. Each lead needs a LinkedIn profile URL; the response counts added, updated and failed leads.
  • Get inbox conversations: A read that uses POST, with the filters in the JSON body, paginated by offset and limit. Only conversations from HeyReach campaigns sync into the inbox.
  • Send a message: Sends a real LinkedIn message: confirm the text first. It takes a conversation id and the sender account id that owns the conversation; it replies to existing conversations rather than starting new ones.

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

Steps

  1. Build the week's list with Search people (Crustdata). Find up to weekly_volume people matching ideal_customer, one per company. Keep each person's name, title, company, company domain and LinkedIn profile URL.
  2. Get their work emails with Get a person's emails and phone numbers (Crustdata). Look up business emails by LinkedIn profile URL, in batches. Keep each person's work email; people with no email stay in the list for the LinkedIn channel.
  3. Verify the emails with Verify an email address (Instantly). Check each work email and keep only the verified ones for the email channel. Bounces burn the sending domains that everything else depends on.
  4. Build the deliverable before they ask with Generate an email (Brew). Produce free_deliverable for the best-fit prospects. When your product is email, this tool is the whole step: use a ready Brew brand configured with the prospect's approved brand assets and access you are authorized to use. The tool generates within its selected brand; it does not create a brand from a website URL. Generate a sample design, such as a welcome email, and keep it as a demonstration. Do not send cold outreach through Brew. Selling something else, skip this tool and make the equivalent with your own product: an audit it ran, a report it wrote, a page it rebuilt, anything finished and specific to this prospect with a link they can open. Keep each deliverable's link. This is the step that makes the reply rate: the first message shows finished work instead of describing it.
  5. Enroll the email channel with Add leads to a campaign (Instantly). Add the verified people to email_campaign_id. The copy leads with what is wrong or missing that your product fixes for this prospect and offers the finished deliverable from the previous step, not a pitch about the product.
  6. Enroll the LinkedIn channel with Add leads to a campaign (HeyReach). Add the rest to linkedin_campaign_id, which spreads sends across several LinkedIn sender accounts so no single profile exceeds its daily limits. Keep the two channels' lists apart so nobody is cold-contacted twice in the same week.
  7. Sweep the LinkedIn inbox with Get inbox conversations (HeyReach). At least daily, pull recent conversations and judge each one by its newest message, not by thread-level metadata. Sort replies into warm, question, not-now and no.
  8. Reply on LinkedIn with Send a message (HeyReach). Answer the actual question first, in the sender's own voice, short and specific. Every warm reply steers to exactly one of three outcomes: try the product self-serve, book a call at booking_link, or take the done-for-you offer. Show the user each reply before it sends.
  9. Reply on email with Reply to an email (Instantly). Same playbook as LinkedIn, and when a prospect bites on the offer, the reply carries the deliverable link built in step 4. A not-now gets a date to reconnect, not a push.
  10. Suppress every no, on both channels yourself. Keep one suppression list. A no, an unsubscribe or a wrong-person reply on either channel stops the sequence and blocks the person on the other channel too, since the campaigns do not share their no's on their own.

Notes

The bait generalizes past email. It works because it is finished work for this specific prospect, free, before any commitment; email is just what Brew happens to make. Swap in whatever your own product can produce for one named company in minutes without their input, and keep every other step unchanged. If producing it takes hours per prospect, reserve step 4 for the best-fit slice and let the rest of the list run on the two channels without it.

Three outcomes, never zero and never four: a warm reply that is not steered anywhere is a compliment, not a demo, and a reply that pitches all three options at once reads like a script. Pick the one that fits what the person actually said.

The channels behave differently. Email carries the built-artifact offer well because a preview link renders in the thread; LinkedIn works best two or three sentences at a time, casual, answering questions honestly, including questions about price. If the honest answer is that the product does not do something, say so and suggest what does; the goodwill outlasts the thread.

The weekly numbers only mean something if the sweep runs every day. Replies decay fast: a warm reply answered the same day books; the same reply answered on Thursday usually does not.

Rules

  • Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
  • Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
  • Never print API keys.