Guide·SignalPipe v4.0 — brain-on-us, sender-on-you

Getting Started with SignalPipe

Everything you need to go from install to your first approved lead. Covers setup, scoring, the temperature model, the full toolset, and running the sender yourself.

Quick Start

Three steps from zero to live scouting.

1

Install the plugin

Install SignalPipe on your OpenClaw gateway with a single command:

claw install signalpipe

Or add "signalpipe" to your openclaw.config.json plugins array.

2

Set your connection keys

Before starting the gateway, set your two SignalPipe keys — you get both from your SignalPipe dashboard once you have access:

# Required — both provided at signup
export SIGNALPIPE_API_URL=https://api.signalpipe.io
export SIGNALPIPE_OPERATOR_KEY=your-operator-key

That's it. Scoring and drafting run on the managed brain; outreach runs on your side — the plugin (or daemon) posts approved replies from your own accounts. We never see your platform or LLM credentials.

3

Start OpenClaw — plugin loads automatically

When OpenClaw starts with the plugin installed, SignalPipe registers its 17 tools and connects to the backend. You'll see this in your logs:

🦐 SignalPipe ONLINE
   Backend : https://api.signalpipe.io
   Tools   : 17 registered
   Status  : connected

No scoring sidecar — the brain handles scoring, drafting, and lead management. Sending happens on your side: the plugin posts approved replies from your own account, or run the standalone daemon as your sender.

4

Add your first product and start scouting

Ask your agent:

"Add my product [name]. It helps [audience] who need [use case]. Buyers say things like '[anchor sentence 1]' and '[anchor sentence 2]'."

Then: "Add r/SaaS as a monitoring station." Then: "Scout now."

How Scoring Works

Every post runs a 4-stage filter. Each stage is more expensive but more accurate than the last — designed to eliminate noise cheaply before using expensive AI calls.

01
Keyword gateFree per post

Any of your configured buy_signal_keywords must appear in the post. Eliminates ~85% of posts before any API call is made. Zero cost.

02
Multilingual semantic scoring~0.0001¢ per post

Cosine similarity between the post and your anchor sentences using OpenAI text-embedding-3-small. Urgency and specificity sub-scores are detected in English, Spanish ("urgente", "migrando de"), French ("dès que possible", "on change de"), German ("dringend", "wir wechseln"), Portuguese ("agora mesmo", "trocando de"), and Finnish ("kiireellinen", "mahdollisimman pian") — no configuration needed.

03
Sarcasm detection~0.01¢ per post

LLM check that distinguishes genuine buyers from irony, hypotheticals, and casual venting. Fails open — if uncertain, the lead passes through rather than being suppressed.

04
AI drafting swarm~0.03¢ per post

Once a post passes scoring, three AI judges (Skeptic, Analyst, Optimist) draft a reply independently via ensemble weighting. Low-intent leads are suppressed by ensemble veto before a reply is written. The Analyst draft is used by default, with the Optimist as fallback.

Competitor-switch floor

Posts that match any of your configured competitor_keywords are automatically floored so they always reach your review queue regardless of their general intent score. These are the highest-converting leads you'll ever find.

Self-improving RL loop

Every approve/reject adjusts the source station's RL weight, which multiplies the raw signal score on every future post from that feed:

Approve

Station weight rises

Reject

Station weight falls (reason-specific)

Weights are per-station, not per-product — so a single noisy feed (a SEO content sub, a brand-promo account) is demoted without penalising the rest of the product's sources. Rejection penalties are reason-aware: spam hits hardest, sarcasm and wrong-product are gentle, and "already a customer" carries zero penalty. The system learns which feeds work and which failure modes matter.

Temperature Model

Every prospect has a 0–100 temperature and a lifecycle mode. Mode is intent-based, not pure temperature — a brand-new contact starts in Nurture regardless of starting score, and only moves out once a real signal lands. Mode + temperature together determine which AI persona writes the next message and when.

Default
Nurture
Educator

First-touch or no engagement yet. Value-first messaging — answer their question, mention the product only if it fits.

Follow up: 72 hrs
Engaged
Sales
Consultant

Prospect engaged (replied / clicked / asked / viewed). Qualify, show fit, build trust.

Follow up: 24–48 hrs
Hot
Closing
Closer

Sustained engagement. Urgency, social proof, clear CTA — no time wasted on education.

Follow up: 4–8 hrs
On cool-down
Recovery
Re-engager

Was engaged and went silent, OR explicit cooling signal (ghosted, not_interested, bad_timing). Re-spark with low pressure, no hard sell.

Follow up: 168 hrs (weekly)

One-directional mode transitions

Mode transitions only move forward — never backward. Once a prospect reaches Closing, they don't regress to Sales even if their temperature dips. A Nurture prospect only enters Recovery if they actually ghost or explicitly cool — not just because their starting temperature is low. Once in Recovery, they re-enter Sales only when they genuinely warm again.

This prevents the classic spam loop: a prospect who briefly responds doesn't suddenly receive closing messages, then nurture messages, then closing messages again as the score oscillates. It also prevents the opposite failure — a fresh contact getting Re-engager voice ("I know it's been a while…") on day 2.

13 Signal Types

Use signalpipe_track_prospect with any of these signals to update a prospect's temperature.

Objection signals (too_expensive, competitor, bad_timing, no_time, not_decision_maker) are permanently recorded and injected into all future message generation calls — the AI never re-pitches what already failed.

SignalTemp deltaWhen to use
booked_demo+20Prospect agreed to or attended a demo
asked_pricing+15Prospect asked about pricing or plans
viewed_content+8Visited a page, watched a video, read a doc
replied+5Responded to your outreach message
clicked_link+3Clicked a link in your message
not_decision_maker0Not the right person — flag only, no temp change
ghosted_3_days−6No response after 3 days
competitor−8Mentioned they're evaluating a competitor
no_time−5Said "not now" or "too busy"
too_expensive−10Price objection raised
bad_timing−15Timing issue — contract, budget cycle, etc.
ghosted_7_days−15No response after 7 days
not_interested−25Explicit rejection — moves to Recovery

Writing Anchor Sentences

Anchor sentences are the most important thing you configure. They define what a buyer looks like. The embedding model measures every incoming post against these sentences — write them in first-person buyer voice.

Good anchors

  • "I need a tool that automatically finds leads on Reddit"
  • "We're switching from [Competitor] and need something better"
  • "Looking for an alternative to [Competitor] — pricing got too high"
  • "How do I find buyers who are actively asking for my product?"
  • "We need outreach automation that doesn't get us banned"

Weak anchors

  • "SignalPipe lead generation" (your product name, not buyer voice)
  • "buy leads" (too generic)
  • "sales automation" (too broad — catches tool comparisons, not buyers)
  • "Reddit marketing" (describes a topic, not a buying need)
  • "outreach" (single word — too much noise)

Rules of thumb

  • 3–7 anchor sentences per product is the sweet spot
  • Write from the buyer's perspective, not yours ("I need X" not "we offer X")
  • Include competitor frustration angles if you have known competitors
  • Include the specific outcome the buyer wants, not just the category
  • Multilingual posts are scored automatically — no need to write anchors in every language
  • Use signalpipe_reload_products after editing — anchors are re-embedded immediately

Tool Reference

SignalPipe gives your agent 17 tools — for lead acquisition and drafting, prospect nurturing, pipeline visibility, and universal signal scoring. All tools are called conversationally inside your OpenClaw agent.

Lead Acquisition (Signal Scout)
signalpipe_get_missions

Fetch pending leads awaiting your review. Returns scored leads with AI-drafted replies.

signalpipe_approve_mission

Approve a lead and queue it for outreach. Optionally edit the draft before approving.

signalpipe_reject_mission

Reject a lead with an optional reason (not_relevant, sarcasm, spam, wrong_product, too_vague, already_customer). Penalty adapts to the reason.

signalpipe_scout_now

Trigger an immediate scouting run outside the 10-minute cycle.

signalpipe_get_products

List all active products and their current monitoring config.

signalpipe_add_product

Register a new product. Provide name, description, target audience, and anchor sentences.

signalpipe_add_station

Add a Reddit subreddit, HN keyword feed, or RSS URL to monitor for a product.

signalpipe_reload_products

Hot-reload the product cache after adding or editing products. No restart needed.

signalpipe_draft_mission

Generate or regenerate the draft reply for a mission on demand.

signalpipe_upload_draft

Hand a client-side-written draft back to a mission — your agent drafts, then uploads it.

signalpipe_mark_sent

Mark a mission sent after your plugin/daemon posts it — records the outbound interaction.

signalpipe_delete_mission

Remove a mission from the queue (e.g. a low-confidence draft you don't want to review).

signalpipe_score_signal

Universal classifier — score arbitrary text your agent reads (Gmail, Slack, Discord, LinkedIn…) for buying intent.

Prospect Nurturing (Nurture Engine)
signalpipe_track_prospect

Log a prospect interaction signal. Creates the prospect if new, updates temperature if existing.

signalpipe_get_message_prompt

Get a context-aware drafting prompt for a prospect (full signal history + objection memory) so your agent can draft the next message.

signalpipe_get_pipeline

View your full prospect pipeline sorted by temperature. See who needs attention first.

signalpipe_record_message

Record an outbound or inbound message against a prospect to keep their history and temperature current.

Station platform types

When calling signalpipe_add_station, use these platform values:

reddithttps://www.reddit.com/r/SUBREDDIT/.rssAny public subreddit
hnhttps://hnrss.org/newest?q=YOUR+KEYWORDSHacker News by keyword
rsshttps://any-rss-feed-url.com/feed.xmlAny RSS-compatible feed
twitter_search(no rss_url required)Routes outreach to X reply channel. Lead monitoring on X — via your own X API keys — is on the roadmap.

Universal signal scoring & the churn radar

The scout watches public feeds — but the same scoring engine works on any text your agent can read. signalpipe_score_signal takes arbitrary text (a Gmail thread, a Slack message, a Discord post, a LinkedIn DM, a support ticket) and returns the same score, classification, and drafting context the scout produces. Your agent connects to the channel with its own plugins; SignalPipe never touches the source — we just score what you hand us.

Buying intent, anywhere

Point it at your inbox or community DMs and surface the messages that signal a ready-to-buy moment — the same precision-first filter, on private channels the scout can't reach.

Churn radar

Swap the anchor sentences from buying-intent to cancellation-risk and the same engine becomes a churn detector — scoring conversations (a leading indicator) instead of usage data (a lagging one). See the churn-detection use case.

Run the sender yourself

The scoring brain is a managed service. What runs on your side is the sender — the open-source daemon (or the OpenClaw plugin). It streams missions the brain has scored and drafted and that you've approved, then posts them from your own accounts. We never see your platform credentials or your LLM keys.

What you need

  • Python 3.11+ (the daemon installs via pip) — or just the OpenClaw plugin
  • Your operator key from the dashboard
  • A Reddit script app on your sending account (enables reddit_comment / reddit_dm)
  • X / Twitter app credentials (enables twitter_reply) — optional

Daemon environment variables

SIGNALPIPE_KEYRequired. Your operator key from the dashboard.
SIGNALPIPE_API_URLBrain URL. Defaults to https://api.signalpipe.io
REDDIT_CLIENT_IDReddit script app on your sending account
REDDIT_CLIENT_SECRET
REDDIT_USERNAME
REDDIT_PASSWORDEnables reddit_comment + reddit_dm
X_API_KEYX / Twitter app creds — enables twitter_reply (optional)
X_API_SECRET
X_ACCESS_TOKEN
X_ACCESS_SECRET
MAX_REDDIT_COMMENTS_PER_DAYDefault: 15
MAX_REDDIT_DMS_PER_DAYDefault: 5
MAX_TWITTER_ACTIONS_PER_DAYDefault: 10

Install & run

pip install "signalpipe-daemon[all]"
signalpipe-daemon status   # validate key, show queue depth
signalpipe-daemon run      # stream missions and send

The daemon holds an SSE stream to the brain, posts approved missions from your own accounts, and respects per-channel daily caps. Full details in the daemon repo.

How sending works

  • Your sender posts — never the brain. The plugin or daemon sends from your own Reddit / X accounts; the managed brain only scores and drafts, and never holds your credentials.
  • Public comment first, never a cold DM. A fresh buying-intent post gets a public reply (reddit_comment). DMs are reserved for prospects who have already engaged.
  • Manual by default, auto when you want it. Every draft waits for your approval unless you set an auto-approve threshold — then high-confidence signals clear on their own. You set the bar.
  • Per-channel daily caps. The sender respects the limits above (15 comments / 5 DMs / 10 X actions per day by default) so your accounts stay within platform norms.

Ready to find your first lead?

Join the waitlist for managed brain access — the open-source plugin and daemon run on your side today.