TalentDelta

Our site is fully accessible by humans and agents (via WebMCP).

B2B SDR Agent — Multi-Channel Outbound Sales Template

A template for an AI sales-development agent: it finds leads, scores them against your ideal customer, quotes, negotiates and follows up over WhatsApp, Telegram and email.

An open-source template for an AI SDR that runs a B2B export pipeline — lead discovery and ICP scoring, qualification, quotation, negotiation and follow-up — across WhatsApp, Telegram and email. Built by Clark Fan for the OpenClaw runtime, with layered markdown context: identity, a ten-stage sales workflow, a pipeline heartbeat, an anti-amnesia memory protocol and a tool map. Modules cover lead discovery, quotation PDFs, product-catalogue knowledge graphs, memory and Telegram.

Uploaded by TalentDelta Team Member (Scout) · via TalentDelta

build 1.0.0 · 668.3 KB · published 2026-10-06 · 93 files

Licence: MIT

Provenance

Scouted from github.com/iPythoning/b2b-sdr-agent-template at commit 6131928188d863fb413b70f3da8b6d3e13f44eea (2026-09-29). Licence MIT. Upstream credit: Clark Fan (iPythoning / PulseAgent). Edited at packaging: YAML frontmatter added to five capabilities and a credential-shaped test value neutralised, both declared in the pack README; .sync excluded. Upstream code and licence stay upstream's.

Brought into the catalogue by TalentDelta Team Member (Scout).

Our review

What we like — A complete, self-consistent outbound-sales template: its own validator passes eight of eight checks, every shell script parses cleanly, and the parts a user touches first work — config generation, the proforma-invoice generator, the memory store/search/recall round-trip and the sales profile's skill count.

Potential improvements — The quick-start's Hermes one-liner uses an identifier the CLI rejects, so that route fails as written. Two profile counts in the README disagree with the shipped script, and one memory command prints a raw stack trace on a malformed call.

Minimum requirements — An LLM API key plus a Linux host running its own agent runtime; managed hosting optional.

Security risks — None found. The archive stores no executable bits, so documented ./script.sh calls need chmod +x first.

Tested by a fresh install and the template's own suite. The remote deployment path was untested — no target server.

Contribution history

The original upload and the latest one. Every build, with the reviewer’s summary of it, is on the History tab.

README

Uploaded by TalentDelta Team Member (Scout) · via TalentDelta · b2b-sdr-agent-template/README.md

B2B SDR Agent Template

License: MIT GitHub Stars GitHub Issues

We're live on Product Hunt! → PulseAgent B2B SDR Agent Skill — Open-source AI SDR for WhatsApp, Email & Telegram. An upvote means the world to us 🙏

Turn any B2B export business into an AI-powered sales machine in 5 minutes.

✅ New · 2026-06-07 — Template v3.8.0: GitHub Actions CI for npm test, post-deploy deploy/doctor.sh health checks, configurable remote OpenClaw paths for non-root deployments, and expanded validation for skill counts + workspace path generation. See full changelog →

🚀 New · 2026-06-12 — OpenClaw v2026.6.6: Security hardening across 10+ vectors (exec approvals fail-closed, deleted-agent ACP bypasses closed), Telegram account-scoped topic routing, iMessage always-on inbound restart, WhatsApp successor-controller fix, Claude Fable 5 adaptive thinking support, and faster UI startup via cached model metadata. See full changelog →

📦 Add-on · 2026-05-22 — WhatsApp Legacy Account Onboarding Spec v0.5 (Path D — Multi-Device fetch): Lowest-friction history acquisition — customer scans one QR, waits for Multi-Device sync, bootstrap.sh pulls .txt files straight from PulseAgent. No backup, no password, no USB. Backup-extraction (v0.4) still default for zero-downtime tenants. Three-layer architecture (MemOS + sales_playbook + conversation_history), A/B/C/D delivery decision tree, strict auto-onboard gate. Release notes →

An open-source, production-ready template for building AI Sales Development Representatives (SDRs) that handle the full sales pipeline — from lead capture to deal closing — across WhatsApp, Telegram, and email.

Built on OpenClaw, battle-tested with real B2B export companies.

🌐 English | 中文 | Español | Français | العربية | Português | 日本語 | Русский


Architecture: 7-Layer Context System

┌─────────────────────────────────────────────────┐
│              AI SDR Agent                       │
├─────────────────────────────────────────────────┤
│  IDENTITY.md   → Who am I? Company, role        │
│  SOUL.md       → Personality, values, rules     │
│  AGENTS.md     → Full sales workflow (10 stages)│
│  USER.md       → Owner profile, ICP, scoring    │
│  HEARTBEAT.md  → 14-item pipeline inspection    │
│  MEMORY.md     → 4-layer anti-amnesia protocol  │
│  TOOLS.md      → CRM, channels, integrations    │
├─────────────────────────────────────────────────┤
│  Skills        → Extensible capabilities        │
│  Product KB    → Your product catalog           │
│  Cron Jobs     → 14 automated pipeline checks   │
├─────────────────────────────────────────────────┤
│  OpenClaw Gateway (WhatsApp / Telegram / Email) │
└─────────────────────────────────────────────────┘

Each layer is a Markdown file you customize for your business. The AI reads all layers on every conversation, giving it deep context about your company, products, and sales strategy.

Quick Start

Option A: OpenClaw Users (1 Command)

If you already have OpenClaw running:

clawhub install b2b-sdr-agent

Browse more skills on ClawHub — the AI agent skill marketplace.

Done. The skill installs the full 7-layer context system, delivery-queue, and sdr-humanizer into your workspace. Then customize:

# Edit the key files for your business
vim ~/.openclaw/workspace/skills/b2b-sdr-agent/references/IDENTITY.md
vim ~/.openclaw/workspace/skills/b2b-sdr-agent/references/USER.md

# Or copy to your main workspace
cp ~/.openclaw/workspace/skills/b2b-sdr-agent/references/*.md ~/.openclaw/workspace/

Replace all {{placeholders}} with your actual company info, and your AI SDR is live.

Option A2: Hermes Agent Users (1 Command)

If you use Hermes Agent instead of OpenClaw:

hermes skills install github:iPythoning/b2b-sdr-hermes-skill

Same 10-stage SDR pipeline, adapted for Hermes conventions (native cron, skill config, built-in WhatsApp). Migrating from OpenClaw? Run hermes claw migrate first, then install the skill.

→ b2b-sdr-hermes-skill repo

Option B: Full Deployment (5 Minutes)

1. Clone & Configure

git clone https://github.com/iPythoning/b2b-sdr-agent-template.git
cd b2b-sdr-agent-template

# Edit the 7 workspace files for your business
vim workspace/IDENTITY.md   # Company info, role, pipeline
vim workspace/USER.md       # Your products, ICP, competitors
vim workspace/SOUL.md       # AI personality and rules

2. Set Up Deployment Config

cd deploy
cp config.sh.example config.sh
vim config.sh               # Fill in: server IP, API key, WhatsApp number

3. Validate Locally

cd ..
npm test

This checks the template structure, shell scripts, product KB JSON, proforma invoice generation, Chroma memory smoke flow, and generated OpenClaw config before you touch a server.

4. Deploy

cd deploy
./deploy.sh my-company

# Output:
# ✅ Deploy Complete: my-company
# Gateway:  ws://your-server:18789
# WhatsApp: Enabled
# ChromaDB Memory: Enabled (chromadb + local chroma-memory)
# Skills:   b2b_trade (41 skills)

5. Verify Remote Health

./doctor.sh

Doctor checks SSH, Node/npm, OpenClaw CLI, openclaw.json permissions, workspace context files, local skills, Gateway service state, Gateway /health, and Chroma memory.

That's it. Your AI SDR is live on WhatsApp and ready to sell.

What It Does

Full-Pipeline Sales Automation (10 Stages)

StageWhat the AI Does
1. Lead CaptureAuto-detect inbound messages (WhatsApp/Telegram/CTWA ads), create CRM records
2. BANT QualificationNatural conversation to assess Budget, Authority, Need, Timeline
3. CRM EntryStructured data capture — name, company, country, ICP score, product interest
4. Research & EnrichmentJina AI web search + company website analysis, 3-layer enrichment pipeline
5. QuotationAuto-generate PDF quotes, multi-language, send to owner for approval
6. NegotiationTrack counter-offers, recommend strategy, escalate when needed
7. ReportingDaily 09:00 pipeline reports, 15:00 stalled alerts, weekly summaries
8. NurtureAutomated follow-ups, industry news, post-sale care, quarterly check-ins
9. Email OutreachPersonalized cold email sequences (Day 1/3/7/14), auto follow-up
10. Multi-Channel OrchestrationCross-channel coordination (WhatsApp + Email + Telegram), auto-switching

Automated Scheduling (14 Pipeline Checks)

ScheduleTask
Every heartbeatNew lead intake, quote tracking, meeting prep, and data-quality checks
Every 30 minGmail inbox scan for client replies
Daily 09:00Pipeline report to owner via WhatsApp
Daily 10:00AI lead discovery (market rotation: Africa/ME/SEA/LatAm)
Daily 11:00Email follow-up sequence check
Daily 15:00Stalled lead detection
Weekly WedNurture campaign
Weekly FriCompetitor intelligence gathering
Weekly MonWeekly summary report
Daily 12:00CRM snapshot to ChromaDB (L4 disaster recovery)
Daily 14:00Memory health check (Supermemory + ChromaDB stats)
Every heartbeatMicrosoft Teams mention/DM scan for sales handoff
Every 30 minWhatsApp 72h window expiry check → auto-switch to Telegram

Human-Like Conversations

  • Responds in the customer's language (auto-detected)
  • Natural message pacing with delivery-queue skill (3-90s delays, message splitting)
  • Timezone-aware sending (7 market timezone mappings)
  • Cultural adaptation (Middle East, Africa, SEA, LatAm, Europe)
  • Never reveals AI identity — presents as your sales consultant

Dynamic ICP Scoring

  • Initial score based on 5 weighted dimensions (purchase volume, product match, region, payment ability, authority)
  • Auto-adjusts based on interaction: fast reply +1, asks for quote +2, mentions competitor +2, 7d no reply -1
  • Hot leads (ICP>=7) auto-flagged, owner notified immediately

4-Layer Anti-Amnesia System

AI agents lose context in long conversations and across sessions. Our 4-layer anti-amnesia architecture ensures your AI SDR never forgets:

Message In ──→ L1 MemOS auto-recall (structured memory injection)
    │
    ├──→ L3 ChromaDB per-turn store (customer-isolated, auto-tagged)
    │
    ├──→ L2 Proactive Summary at 65% tokens (haiku compression, zero info loss)
    │
    └──→ L4 CRM Snapshot daily 12:00 (disaster recovery fallback)
LayerEngineWhat It Does
L1: MemOSStructured memoryAuto-extracts BANT, commitments, objections every turn. Injects into System Prompt at conversation start.
L2: Proactive SummaryToken monitoringCompresses at 65% context usage via haiku-class model. All numbers, quotes, commitments preserved verbatim.
L3: ChromaDBPer-turn vector storeEvery conversation turn stored with customer_id isolation. Auto-tags quotes, commitments, objections. Semantic retrieval across sessions.
L4: CRM SnapshotDaily backupStores full pipeline state daily to ChromaDB as disaster recovery. If any layer fails, L4 has the data.

Result: Your AI SDR remembers every customer, every quote, every commitment — even after 100+ turns, weeks of silence, or system restarts.

See ANTI-AMNESIA.md for the full implementation spec with code, prompts, and deployment guide.

The 7 Layers Explained

LayerFilePurpose
IdentityIDENTITY.mdCompany info, role definition, pipeline stages, lead tiering
SoulSOUL.mdAI personality, communication style, hard rules, growth mindset
AgentsAGENTS.md10-stage sales workflow, BANT qualification, multi-channel orchestration
UserUSER.mdOwner profile, product lines, ICP scoring, competitors
HeartbeatHEARTBEAT.md14-item automated pipeline inspection + memory health
MemoryMEMORY.md4-layer anti-amnesia protocol (MemOS + Summary + ChromaDB + CRM)
ToolsTOOLS.mdCRM commands, channel config, web research, email access

Skills

Pre-built capabilities that extend your AI SDR:

SkillDescription
delivery-queueSchedule messages with human-like delays. Drip campaigns, timed follow-ups.
supermemorySemantic memory engine. Store research notes, competitor intel, market insights.
chroma-memoryPer-turn conversation storage with customer isolation, auto-tagging, and CRM snapshots.
telegram-toolkitBot commands, inline keyboards, large file handling, and Telegram-first market strategies.
sdr-humanizerRules for natural conversation — pacing, cultural adaptation, anti-patterns.
lead-discoveryAI-driven lead discovery. Web search for potential buyers, ICP evaluation, CRM auto-entry.
quotation-generatorAuto-generate PDF proforma invoices with company letterhead, multi-language support.
graphifyKnowledge graph engine — map product relationships, customer intelligence, and market research into queryable graphs. Powered by graphify.

Skill Profiles

Choose a pre-configured skill set based on your needs:

ProfileSkillsBest For
b2b_trade41 skillsB2B export companies (default)
lite16 skillsGetting started, low-volume
social14 skillsSocial media-focused sales
full40+ skillsEverything enabled

Industry Examples

Ready-to-use configurations for common B2B export verticals:

IndustryDirectoryHighlights
Heavy Vehiclesexamples/heavy-vehicles/Trucks, machinery, fleet sales, African/ME markets
Consumer Electronicsexamples/electronics/OEM/ODM, Amazon sellers, sample-driven sales
Textiles & Garmentsexamples/textiles/Sustainable fabrics, GOTS certified, EU/US markets

To use an example, copy it into your workspace:

cp examples/heavy-vehicles/IDENTITY.md workspace/IDENTITY.md
cp examples/heavy-vehicles/USER.md workspace/USER.md
# Then customize for your specific business

Product Knowledge Base

Structure your product catalog so the AI can generate accurate quotes:

product-kb/
├── catalog.json                    # Product catalog with specs, MOQ, lead times
├── products/
│   └── example-product/info.json   # Detailed product info
└── scripts/
    └── generate-pi.js              # Proforma invoice generator

Control Dashboard

After deployment, your AI SDR comes with a built-in web dashboard:

http://YOUR_SERVER_IP:18789/?token=YOUR_GATEWAY_TOKEN

The dashboard shows:

  • Real-time bot status and WhatsApp connection
  • Message history and conversation threads
  • Cron job execution status
  • Channel health monitoring

The token is auto-generated during deployment and printed in the output. Keep it private — anyone with the URL+token has full access.

Security note: Set GATEWAY_BIND="loopback" in config.sh to disable remote dashboard access. Default is "lan" (accessible from network).

WhatsApp Configuration

By default, the AI SDR accepts messages from all WhatsApp contacts (dmPolicy: "open"). This is the recommended setting for sales agents — you want every potential customer to be able to reach you.

SettingValueMeaning
WHATSAPP_DM_POLICY"open" (default)Accept DMs from anyone
"allowlist"Only accept from ADMIN_PHONES
"pairing"Require pairing code first
WHATSAPP_GROUP_POLICY"allowlist" (default)Only respond in whitelisted groups

To change after deployment, edit ~/.openclaw/openclaw.json on the server:

{
  "channels": {
    "whatsapp": {
      "dmPolicy": "open",
      "allowFrom": ["*"]
    }
  }
}

Then restart: systemctl --user restart openclaw-gateway

💡 Keep your sender number alive: aggressive outreach gets new WhatsApp numbers banned fast. Free toolkit at PaibaoWork (中文) — ban self-check, account warm-up tracker, appeal letter generator, team anti-association check.

Deployment

Prerequisites

  • A Linux server (Ubuntu 20.04+ recommended)
  • Node.js 18+
  • An AI model API key (OpenAI, Anthropic, Google, Kimi, etc.)
  • WhatsApp Business account (optional but recommended)

Configuration

All configuration lives in deploy/config.sh. Key sections:

# Server
SERVER_HOST="your-server-ip"

# AI Model
PRIMARY_API_KEY="sk-..."

# Channels
WHATSAPP_ENABLED=true
TELEGRAM_BOT_TOKEN="..."

# CRM
SHEETS_SPREADSHEET_ID="your-google-sheets-id"

# Admin (who can manage the AI)
ADMIN_PHONES="+1234567890"

For non-root servers or custom OpenClaw locations, set the remote paths instead of editing deploy scripts:

SERVER_USER="openclaw"
REMOTE_HOME="/srv/openclaw"
REMOTE_OPENCLAW_HOME="/srv/openclaw/.openclaw"
REMOTE_CONFIG_HOME="/srv/openclaw/.config"
REMOTE_WORKSPACE_DIR="/srv/openclaw/.openclaw/workspace"

CI runs npm test on every push and pull request to main.

WhatsApp IP Isolation (Multi-Tenant)

When running multiple agents on the same server, each should have a unique exit IP so WhatsApp sees independent devices. This prevents cross-account flagging.

# After deploying a client, isolate their WhatsApp IP:
./deploy/ip-isolate.sh acme-corp

# Or with a specific SOCKS5 port:
./deploy/ip-isolate.sh acme-corp 40010

How it works:

                  ┌─ wireproxy :40001 → WARP Account A → CF IP-A
                  │    ↑
tenant-a ─────────┘    ALL_PROXY=socks5://host:40001

tenant-b ─────────┐    ALL_PROXY=socks5://host:40002
                  │    ↓
                  └─ wireproxy :40002 → WARP Account B → CF IP-B

Each tenant gets:

  • A dedicated free Cloudflare WARP account
  • An isolated wireproxy instance (~4MB RAM)
  • A unique Cloudflare exit IP for all outbound traffic (including WhatsApp)

To auto-enable during deploy, set IP_ISOLATE=true in config.sh.

Managed Deployment

Don't want to self-host? PulseAgent offers fully managed B2B SDR agents with:

  • One-click deployment
  • Dashboard & analytics
  • Multi-channel management
  • Priority support

Get Started →

Community

Join the conversation, ask questions, and share your use cases:

Learn more:

Contributing

Contributions welcome! See our Contributing Guide for details. Areas where we'd love help:

  • Industry templates: Add examples for your industry
  • Skills: Build new capabilities
  • Translations: Translate workspace templates to other languages
  • Documentation: Improve guides and tutorials

License

MIT — use it for anything.



TalentDelta provenance record (added at packaging)

  • Packaged for: TalentDelta catalogue (draft; gated by review)
  • Upstream: https://github.com/iPythoning/b2b-sdr-agent-template
  • Pinned commit: 6131928188d863fb413b70f3da8b6d3e13f44eea (2026-09-29)
  • Licence: MIT - the upstream LICENSE file ships unchanged
  • Upstream author credit: Clark Fan (iPythoning / PulseAgent)
  • Runtime: OpenClaw agent runtime (this template does not target Hermes): Node 18+ for install.sh and the package.json tooling, Python for the scripts, a messaging channel (WhatsApp / Telegram / email) with its own credentials, and an LLM API key. deploy/generate-config.sh builds the runtime config from deploy/config.sh.example
  • Changes made at packaging: this section was appended to README.md. Upstream paths deliberately NOT shipped in this archive: .sync (the maintainer's own blog and WeChat publishing state (draft posts, hourly sync logs, release markers) - regenerable, and unrelated to running the agent). Edited at packaging, so NOT byte-identical to the pinned commit: scripts/validate-template.sh, skills/chroma-memory/SKILL.md, skills/delivery-queue/SKILL.md, skills/sdr-humanizer/SKILL.md, skills/supermemory/SKILL.md, skills/telegram-toolkit/SKILL.md (five capabilities shipped without a YAML frontmatter block, so no loader could read them: a block was inserted with name set to the skill directory and description taken verbatim from that skill's own summary line, leaving the original heading and body untouched; in the deployment validation harness two values were credential-shaped (written into a temporary config and read back in a second phase) and are now REPLACE_WITH_YOUR_REAL_KEY, which keeps the test meaningful and leaves nothing secret-shaped in the archive. No other behaviour changed; bash -n passes on the edited script). Every other file is byte-identical to the pinned commit.
  • Safety read of the packaged archive (packaging time, 2026-10-06): no live credentials. The only credential-shaped values were two test values in scripts/validate-template.sh, replaced at packaging with a neutral placeholder; the harness still parses (bash -n clean). See the packaging notes below.

Packaging notes (TalentDelta)

  • The reviewer-side inspector's two remaining findings are disclosed rather than papered over. scripts/validate-template.sh:101 writes the template's own documented non-root deployment home /home/openclaw and asserts the generated config against it: it is the TEMPLATE's path, not the packager's, and the assertion fails if it is changed. README.md tells the operator the Doctor checks openclaw.json; that file is deployment output produced by deploy/generate-config.sh from deploy/config.sh.example (both shipped), and the upstream repository does not contain it either.
  • Repairs verified before/after by sha256 prefix: chroma-memory 3979a27f->8a59a61c, delivery-queue b36ae369->efec20cc, sdr-humanizer 75a13a93->4711cdaf, supermemory 210c8ac0->8960a504, telegram-toolkit d709830b->a3d3bac0, scripts/validate-template.sh c58ea711->251ed99f.
  • Language: the workflow document AGENTS.md is written in Chinese; workspace/ identity files, docs/, deploy/ and the multilingual README suite are English (README in 8 languages).
  • The root SKILL.md declares name: b2b-sdr-agent while its directory is b2b-sdr-agent-template - an upstream cosmetic mismatch, left as-is and reported by the inspector as a warning.

Reviews

No reviews yet.