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

Five steps from zero to a working account. Only the first two are required — scoring works from any agent, bot or plain HTTP call once a product exists.

1

Open your dashboard and create your key

After checkout you land on the sign-in page. Enter the email you paid with and we send you a sign-in link; it opens your dashboard, where you create your OPERATOR_KEY — one key, it identifies your account on every call. It is shown once: we store only a one-way hash, so copy it somewhere safe. Lost it? Replace it from the dashboard.

skp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Nothing else to install to get started. The plugin and daemon further down are only for sending replies from your own accounts.

2

Describe what you sell — in your buyer’s words

Everything is scored against a product profile. Go to signalpipe.io/setup and write three to five anchor sentences: the way a customer says the problem out loud, before they know your product exists.

"I spend every Friday chasing unpaid invoices"
"clients keep paying late and I hate the follow-up emails"
"is there something that just nudges people who owe me money"

This decides more of your results than anything else on this page. Write what they would type into a forum at 11pm, not what you would put on a landing page.

3

Add the stations where your buyers already complain

A station is any feed you want read: a community or forum’s RSS feed, a news or search alert, a Hacker News search. There is no allowlist and no approved list: name the ones your customers actually use. Start with three.

"Read the Hacker News search for help desk, and my Google Alert feed for our category."

Read the next section before you pick. Choosing stations is the single decision that most determines whether this works for you, and the obvious choices are often the wrong ones.

4

Let it run, then work the queue

Scouting starts on its own and runs every 30 minutes. Leads that clear the gate arrive with a verdict from the three-judge panel and a drafted reply. If a day passes with nothing, look at your stations before your anchors: that is usually where the buyers are missing. Approve the ones worth answering, reject the rest.

"Show me today’s missions."
"Approve the second one."
"Reject the third — wrong audience."

Nothing sends without you: every public reply and DM waits for your approval. Approving marks a draft ready; sending happens from your own accounts, either by hand or through the plugin below.

5

Reject with a reason — that is the training signal

Rejections are not discarded. Each one carries a reason, and the reason feeds back into how that station is weighted the next time it is scouted. A station that keeps producing the wrong people gets quietly demoted.

"Reject that one — they are building a competitor, not buying."

A silent skip teaches it nothing. Ten rejections with reasons in week one are worth more than a hundred silent ones.

Your first week

Four things decide whether this works for you. They are in order of how much difference they make, and the first one matters more than the other three put together.

Pick stations where your buyers complain — not where your peers hang out

The most common way this goes wrong is choosing a community that talks about your category constantly. Those places are usually full of people who build what you sell rather than buy it. We learned this on our own data: one product’s leads matched its profile more closely than ours did, and not one of fifty-seven cleared the gate, because its best-matching posts were competitors comparing notes. Being on-topic is not the same as being in-market.

Before you add a station, ask: do people here publicly ask for what I sell, or do they build it themselves and swap tips? If it is the second, the scoring will be fine and the results will still be useless.

Write anchors the way a customer says the problem out loud

Anchor sentences are how your product is matched against a post. Marketing language matches marketing language — which is mostly written by other vendors. The sentences that find buyers are the ungrammatical ones: what somebody types at 11pm when they are annoyed.

Read your anchors back. If any of them could appear on your own landing page, it is probably the wrong sentence.

Reject with a reason — that is the training signal

Every rejection carries a reason, and the reason changes how that station is weighted next time it is scouted. A station that keeps producing the wrong people gets demoted on its own. A silent skip teaches it nothing at all.

Ten rejections with reasons in your first week are worth more than a hundred silent ones.

Expect some content to get through, and reject it when it does

The panel is built to tell somebody describing their own problem apart from somebody writing about the category. It is good at that and it is not perfect — a well-written thought-leadership post that happens to describe your buyer’s pain can still survive all three judges. That is the failure mode to watch for, and it is the one worth rejecting loudly.

A post that teaches, brags about results, or asks a rhetorical question to an audience is not a buyer, however well it matches your topic.

What a judgement is, and what it costs you

One judgement is one run of the three-judge panel. Text that is clearly noise, or clearly a buyer, is decided on content alone without convening the panel — so a month of judgements covers considerably more than that number of posts. Your remaining balance comes back on every scoring call, and a verdict reached without the panel is labelled as such rather than presented as a full one.

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 gate — optional, off by default

If (and only if) you configure buy_signal_keywords, a post must contain one of them to be scored at all. It costs nothing and cuts scoring spend — but a list you guessed will silently drop buyers who worded it differently, so it ships empty and we recommend leaving it empty.

02
Multilingual semantic scoring

How closely the post matches your anchor sentences in meaning, not wording. 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

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
Three-judge panel

Borderline posts go to a panel of three judges (Skeptic, Analyst, Optimist), who read them independently. When they agree, the verdict stands; when they split, you see the split. Clear-cut posts are decided without convening the panel and cost nothing. The draft is written to fit how strong the signal turned out to be.

Competitor floors

Posts that match any of your configured competitor_keywords get a higher floor when the author is replacing, complaining about or comparing that competitor, so a weak general match cannot bury them. A passing mention gets no floor, and the panel still judges every one.

It learns from you

Every approve and reject changes how much the system trusts the feed that lead came from, which shapes what it surfaces from that feed in future:

Approve

That feed earns more of your attention

Reject

That feed earns less — and the reason matters

Learning is per-feed, not per-product, so one noisy source — an SEO content sub, a brand-promo account — gets demoted without penalising your good sources alongside it. Pick your reject reason accurately. Different failures mean different things: a lead that was outright spam is not the same problem as one that was a perfectly good post from someone who is already your customer, and the system treats them differently. Clicking through with whatever reason is first in the list teaches it the wrong lesson.

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 then went quiet, or told you the timing was wrong. Re-open 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_demostrong ↑Prospect agreed to or attended a demo
asked_pricingstrong ↑Prospect asked about pricing or plans
viewed_contentmoderate ↑Visited a page, watched a video, read a doc
repliedslight ↑Responded to your outreach message
clicked_linkslight ↑Clicked a link in your message
not_decision_makerno changeNot the right person — flag only
no_timeslight ↓Said "not now" or "too busy"
ghosted_3_daysslight ↓No response after 3 days
competitormoderate ↓Mentioned they're evaluating a competitor
too_expensivemoderate ↓Price objection raised — never pitched on price again
bad_timingstrong ↓Timing issue — contract, budget cycle, etc.
ghosted_7_daysstrong ↓No response after 7 days
not_interestedstrong ↓Explicit 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 24 tools — for lead acquisition and drafting, feed preview and upkeep, prospect nurturing and replies, pipeline visibility, and universal signal scoring. All tools are called conversationally from your agent: OpenClaw, Claude Code, Cursor, or any MCP client.

Over remote MCP (Claude.ai, Claude Code, Cursor, Windsurf) the names appear without the signalpipe_ prefix. The OpenClaw plugin uses the prefixed names and adds signalpipe_get_message, three sender controls (start, stop, status) and signalpipe_read_feeds, which reads the feeds marked for your machine.

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 scheduled 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_update_product

Edit a product’s anchors or description, or pause and resume it. The previous anchors are kept so an edit can be undone.

signalpipe_suggest_anchors

Draft candidate anchor sentences from a product description. Suggestions to edit into buyer voice, not to accept as written.

signalpipe_preview_station

Check a feed for buyers before adding it. The judges read its best-matching posts and answer VIABLE, MARGINAL, ON-TOPIC NOT IN-MARKET, NO BUYERS or NO DATA. Nothing is saved.

signalpipe_add_station

Add any RSS or Atom feed, or a Hacker News search, for the scout to read for a product.

signalpipe_list_stations

Your feeds with a health readout: posts captured, posts that reached your queue, and what to change.

signalpipe_update_station

Pause, resume, rename or re-point a feed.

signalpipe_remove_station

Remove a feed. One that already produced leads is switched off instead, to keep its history.

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 you reply by hand — records the outreach so follow-ups know what was said.

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. For a reply, pass the post it answers as context; panel_verdict says what the judges decided.

Prospect Nurturing (Nurture Engine)
signalpipe_track_prospect

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

signalpipe_record_reply

Hand the brain a prospect’s reply. It reads the intent, objections and any opt-out, updates temperature and mode, and says whether they invited a private message.

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 a message you sent to a prospect, so the next draft knows what was already said.

Station platform types

When calling signalpipe_add_station, use these platform values:

redditthe community’s RSS feed URLMarks the feed as a Reddit community, so drafts are written as in-thread comments
hnhttps://hnrss.org/newest?q=YOUR+KEYWORDSHacker News by keyword
rsshttps://any-rss-feed-url.com/feed.xmlAny RSS or Atom feed: forums, communities, blogs, news, a Google Alert delivered as RSS
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

Describe your product the way an unhappy customer would want it — someone who fixes the billing problem, matches a competitor's price or arranges a downgrade — and the same engine reads your support messages for the ones about to leave. It catches customers who say it: comparing prices, asking what the notice period is, or on their third complaint. It will not catch silent disengagement, where someone quietly stops using a feature and never writes in. Conversations, not usage dashboards. 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

No Reddit app? You do not need one. Since November 2025 Reddit only issues new API apps after a manual approval, so an existing app is the exception rather than the rule. Without one, work the queue in your agent, post the approved reply yourself from your own account, then mark the mission sent (mark_sent over MCP) so the lead is recorded and never surfaced again. Scoring, drafting and the queue are identical either way. X sending needs a paid X API account (pay-per-use since February 2026).

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.
  • You approve every reply. Reddit and X require a person behind each public reply and DM, so none is sent without your approval. The drafts are written by AI: edit them in your own words, and disclose AI help where a community asks for it.
  • 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?

Managed brain access starts at $29 a month — the open-source plugin and daemon run on your side for free.