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.
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.
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.
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.
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.
Any of your configured buy_signal_keywords must appear in the post. Eliminates ~85% of posts before any API call is made. Zero cost.
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.
LLM check that distinguishes genuine buyers from irony, hypotheticals, and casual venting. Fails open — if uncertain, the lead passes through rather than being suppressed.
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.
First-touch or no engagement yet. Value-first messaging — answer their question, mention the product only if it fits.
Prospect engaged (replied / clicked / asked / viewed). Qualify, show fit, build trust.
Sustained engagement. Urgency, social proof, clear CTA — no time wasted on education.
Was engaged and went silent, OR explicit cooling signal (ghosted, not_interested, bad_timing). Re-spark with low pressure, no hard sell.
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.
booked_demo+20Prospect agreed to or attended a demoasked_pricing+15Prospect asked about pricing or plansviewed_content+8Visited a page, watched a video, read a docreplied+5Responded to your outreach messageclicked_link+3Clicked a link in your messagenot_decision_maker0Not the right person — flag only, no temp changeghosted_3_days−6No response after 3 dayscompetitor−8Mentioned they're evaluating a competitorno_time−5Said "not now" or "too busy"too_expensive−10Price objection raisedbad_timing−15Timing issue — contract, budget cycle, etc.ghosted_7_days−15No response after 7 daysnot_interested−25Explicit rejection — moves to RecoveryWriting 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.
signalpipe_get_missionsFetch pending leads awaiting your review. Returns scored leads with AI-drafted replies.
signalpipe_approve_missionApprove a lead and queue it for outreach. Optionally edit the draft before approving.
signalpipe_reject_missionReject a lead with an optional reason (not_relevant, sarcasm, spam, wrong_product, too_vague, already_customer). Penalty adapts to the reason.
signalpipe_scout_nowTrigger an immediate scouting run outside the 10-minute cycle.
signalpipe_get_productsList all active products and their current monitoring config.
signalpipe_add_productRegister a new product. Provide name, description, target audience, and anchor sentences.
signalpipe_add_stationAdd a Reddit subreddit, HN keyword feed, or RSS URL to monitor for a product.
signalpipe_reload_productsHot-reload the product cache after adding or editing products. No restart needed.
signalpipe_draft_missionGenerate or regenerate the draft reply for a mission on demand.
signalpipe_upload_draftHand a client-side-written draft back to a mission — your agent drafts, then uploads it.
signalpipe_mark_sentMark a mission sent after your plugin/daemon posts it — records the outbound interaction.
signalpipe_delete_missionRemove a mission from the queue (e.g. a low-confidence draft you don't want to review).
signalpipe_score_signalUniversal classifier — score arbitrary text your agent reads (Gmail, Slack, Discord, LinkedIn…) for buying intent.
signalpipe_track_prospectLog a prospect interaction signal. Creates the prospect if new, updates temperature if existing.
signalpipe_get_message_promptGet a context-aware drafting prompt for a prospect (full signal history + objection memory) so your agent can draft the next message.
signalpipe_get_pipelineView your full prospect pipeline sorted by temperature. See who needs attention first.
signalpipe_record_messageRecord 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 subreddithnhttps://hnrss.org/newest?q=YOUR+KEYWORDSHacker News by keywordrsshttps://any-rss-feed-url.com/feed.xmlAny RSS-compatible feedtwitter_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.ioREDDIT_CLIENT_IDReddit script app on your sending accountREDDIT_CLIENT_SECRETREDDIT_USERNAMEREDDIT_PASSWORDEnables reddit_comment + reddit_dmX_API_KEYX / Twitter app creds — enables twitter_reply (optional)X_API_SECRETX_ACCESS_TOKENX_ACCESS_SECRETMAX_REDDIT_COMMENTS_PER_DAYDefault: 15MAX_REDDIT_DMS_PER_DAYDefault: 5MAX_TWITTER_ACTIONS_PER_DAYDefault: 10Install & 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.