Stack & Ops

The Outbound Stack We Use and Why

Every tool in our outbound stack, what it does, and why we chose it over the alternative. No fluff, just what is actually running client campaigns today.

Sheyda Rezaei

Sheyda Rezaei

Founder

Building AI-native GTM systems for B2B teams.

The first question most founders ask when evaluating an outbound agency is: what are you actually running? What does the data flow look like? Which tools are worth it?

Here is the complete answer: every tool in the stack, what it does, and why it is there instead of the alternative. This is what is actually running for clients today, not a theoretical architecture.

The Stack at a Glance

Tool
Role in the System
Apollo
Contact search and job change monitoring
Clay
Enrichment, waterfall data, first-line personalization
Apify
LinkedIn scraping and post signal detection
SearXNG (self-hosted)
Google-based signal detection, job posting searches
Prospeo
Email finding and verification
HeyReach
LinkedIn outreach sequencing
Instantly
Email sequencing (most clients)
Smartlead
Email sequencing (some clients, deliverability audit)
Zapmail
Inbox provisioning and DNS management
Airtable
Reply queue, CRM tracking, campaign config
OpenClaw
The agent layer that runs everything on a schedule
Claude (Haiku/Sonnet)
Classification, draft writing, lead qualification

Data and Signal Layer

Apollo

Apollo is used for two things: contact search and job change monitoring.

For contact search, Apollo's database is the starting point for most email-focused campaigns. It is not perfect, data freshness varies, but it gives enough coverage for initial list building before enrichment. We use the people search API to build filtered lists by title, company size, and location.

The more valuable use is job change monitoring. Apollo's feed tracks when people in our saved lists change jobs. When a contact we have been watching moves to a new role at a company in our ICP, that is an automatic outreach trigger. New decision-maker, new budget, no existing vendor relationship.

Apollo credit budget is 2,500 per month across all clients, we treat it as a shared, scarce resource and run free alternatives first before pulling from the Apollo pool.

Clay

Clay is the enrichment layer. It is where raw contacts get turned into outreach-ready records.

We use Clay for waterfall enrichment, running a contact through multiple data providers in sequence until a verified email is found. If Prospeo finds it on the first pass, great. If not, Clay tries the next provider automatically, then the next, until it hits or exhausts the cascade.

Clay also handles the first-line personalization column. For accounts that have a meaningful LinkedIn presence, Clay can generate a specific, research-backed opening line based on recent posts, role transitions, or company news. This is the difference between "I saw you work at Acme" and a line that actually demonstrates you paid attention. For how this feeds into signal-first list building, see that post.

Clay does not have an autonomous API trigger, enrichment workflows are launched by hand. The agent flags when a batch is ready; running the enrichment is a manual step before the contacts go into HeyReach.

Apify

Apify handles two types of scraping: LinkedIn post signals and LinkedIn profile enrichment.

For signal research, the harvestapi/linkedin-post-search actor searches LinkedIn posts by keyword and author title. When a founder or sales leader posts about a problem we solve, Apify surfaces it. The actor runs daily for clients with LinkedIn signal campaigns (Career Upgrader's "open to work" campaign is one example, VPs and Directors posting about career transitions).

For profile enrichment, we use a LinkedIn profile scraper actor in the reply handler. When a lead replies on LinkedIn, Apify pulls their current headline, About section, and recent job history. This context feeds into the reply draft. The enrichment costs roughly a cent per profile.

Why Apify over other scrapers? Reliability and proxy management. Apify handles LinkedIn's anti-scraping measures transparently. We do not manage proxies or worry about rate limits.

SearXNG (Self-Hosted)

SearXNG is a self-hosted search engine running on the same Hostinger server as OpenClaw. It provides Google-quality search results at zero per-query cost.

We use SearXNG for job posting searches ("site:linkedin.com/jobs [title]"), for funding announcement monitoring, and for company news searches that feed into signal scoring. For clients where the signal is web-based, a company opening a new location, a product launch, a partnership announcement, SearXNG does the work that would otherwise require a paid search API.

Why not use a paid search API? Serper.dev is $50/month and makes more sense for lightweight use. SearXNG is free once it is running. We adopted Serper early, then built the self-hosted version for ongoing use.

Prospeo

Prospeo is the primary email finder and verifier. We run every contact through Prospeo before any email campaign launches.

The two things Prospeo tells us: is there a verified email for this person, and is the domain a catch-all? Catch-all domains accept any email sent to them, verification tools return "valid" even when the address does not exist. Those contacts get downgraded to LinkedIn-only outreach rather than email campaigns.

Outreach Layer

HeyReach

HeyReach is the LinkedIn sequencing tool. All LinkedIn outreach for Build to Scale campaigns and client campaigns runs through HeyReach.

We maintain multiple HeyReach accounts, each with its own API key and assigned LinkedIn account. The CLI (heyreach) is the primary interface, we do not use the UI for operations. The reply handler, the campaign status checker, and inbox management all run through the CLI.

The two active HeyReach accounts: one for BTS campaigns and one for a client's campaigns. Account isolation matters, each LinkedIn sender has their own account ID, and the system validates the correct ID before every send operation.

Why HeyReach over competitors? The API is clean and stable. The inbox list endpoint returns full conversation history. The send endpoint is reliable. When we needed to build a reply handler that works programmatically, HeyReach was the most straightforward integration.

Instantly

Instantly is the email sequencing tool for most clients. The inbox management, campaign creation, and analytics are all accessible via API.

The reply handler integrates with Instantly using its email list and reply endpoints. Unread replies are pulled by filtering for unread, reply-type emails. The read status is updated after the Airtable write succeeds, never before.

Instantly also handles deliverability monitoring. We track bounce rates, open rates, and reply rates per campaign and per inbox through the analytics API.

Smartlead

Smartlead runs email campaigns for some clients and handles the deliverability audit workflow for all clients.

The deliverability audit uses Smartlead's email accounts API to check inbox health, warmup status, reputation scores, and connection success rates. The Smart Delivery API runs the optional spam placement test, sending a test email through the inbox and checking whether it lands in the primary inbox or spam folder.

Smartlead also runs the warmup network. Every sending inbox, regardless of whether it runs campaigns through Smartlead or Instantly, is enrolled in Smartlead's warmup pool. The warmup runs continuously, even while campaigns are active.

Zapmail

Zapmail provisions email inboxes and manages DNS for sending domains. When a new client onboards, we purchase sending domains (Porkbun for BTS campaigns, Dynadot for most clients), point nameservers to Zapmail, and let Zapmail handle SPF, DKIM, and DMARC setup automatically.

The alternative to Zapmail is setting up Google Workspace or Microsoft 365 inboxes manually. Zapmail is faster to provision, cheaper at scale, and manages the DNS records in a way that keeps deliverability tooling integrated.

Operations Layer

Airtable

Airtable is the CRM, the reply queue, and the coordination layer between the agent and the human reviewer.

Three core tables:

  • Reply Queue: Every incoming reply across all platforms. Conversation threads, lead context, classification, draft, status.
  • Conversations: Running record of all active conversations, updated as threads progress.
  • Campaign Config: Per-client campaign settings, sender assignments, CTA references.

The Airtable CLI is the only way we access Airtable programmatically. MCP tools are too slow for bulk operations and status updates that happen in the middle of a cron run.

OpenClaw

OpenClaw is the custom agent system that runs everything. It is not a product you can buy. It is what we built because no existing tool could orchestrate this specific workflow across this specific set of platforms.

OpenClaw runs on a Hostinger VPS on a pull-based cron schedule:

  • 7am: Campaign health check, bounce rates, reply rates, step completion across all active campaigns
  • 8am + 2pm: Reply handler, full pull from all platforms, classify, enrich, draft, queue
  • Daily: Signal research, job posting searches, LinkedIn post signals, web searches for each client's configured signals

It is not a no-code workflow. See What Agentic Outbound Actually Looks Like Day to Day for how the cron schedule runs. It is a set of Python scripts and bash commands coordinated by a cron schedule, with Claude handling the intelligence layers (classification, draft writing, lead qualification).

Claude

Claude does three things in the system: classifies replies, writes drafts, and qualifies leads from signal searches.

We use Haiku for high-volume, low-complexity tasks, reply classification, lead filtering from large scraper outputs. Haiku is fast and cheap enough that it can process hundreds of records in a single run without meaningful cost.

We use Sonnet for draft writing and anything that requires nuance, multi-message thread summarization, objection handling, personalized responses where the context is complex.

The instruction layer is what matters more than the model choice. Drafts are written against detailed per-classification rules with specific tone constraints. The output is good because the rules are specific, not because the model is powerful.

12
tools in the active stack
4
platforms with API integration
$0
cost for SearXNG signal searches

What We Do Not Use (and Why)

Salesforce / HubSpot as a CRM: Not needed at our volume. Airtable handles what we need. Adding a full CRM layer would add overhead without adding capability.

Lemlist for primary campaigns: We use Lemlist for one specific client (Metaflow) whose existing account is there. For new clients, Instantly and HeyReach have better APIs and more reliable send operations.

n8n for orchestration: We used n8n in an earlier version of the system. It works for webhook-based workflows but is fragile for pull-based cron operations. The current Python + bash stack on OpenClaw is more reliable and easier to debug when something breaks.

Phantombuster: We tested it. Apify's actor library is more reliable for LinkedIn work and the pricing model scales better.

The right stack is the one you can debug at 8am when something breaks. Tools that look elegant in a diagram but require you to open three dashboards to understand a failure are the wrong tools. Build for visibility over elegance.


Frequently Asked Questions

Is this stack expensive to run? Monthly costs for a full client engagement: Apollo (shared plan), Clay (monthly subscription, with usage-based enrichment credits), Apify ($29/month for Starter), HeyReach (per seat), Instantly or Smartlead (per campaign), Zapmail (per inbox), Hostinger VPS (under $30/month for the server). Total infrastructure cost is well under $500/month for the full stack across all clients.

Can a smaller operation use a subset of this stack? Yes. If you are running LinkedIn only, you can get to a functional setup with HeyReach, Airtable, and Clay. If email only, Instantly + Smartlead for warmup + Prospeo for verification + Zapmail for inboxes covers most of it. The OpenClaw orchestration layer is what connects everything, that part you would need to build or replicate with n8n.

How much of this can a non-technical person manage? Most of the tools have UIs. What makes the stack work is the orchestration layer and the custom automation on top of the APIs. The tools themselves are accessible; the integration is not. That is by design, the integration is the value.

Why not use an all-in-one platform? All-in-one platforms optimize for setup speed, not performance depth. When you need granular control over signal detection, enrichment waterfalls, platform-specific reply handling, and deliverability auditing, you end up at the limits of what any single product can do. Purpose-built tools connected by a custom orchestration layer outperform at scale.


The right stack is not the most tools. It is the fewest tools that cover every critical workflow with clear failure modes when something breaks.

If you want to see how this stack would apply to your outbound program, book a call.

Get this in your inbox

Signal-based outbound, AI agents, and what actually moves pipeline. No fluff.