Guide·SignalPipe v1

Getting Started with SignalPipe

Everything you need to go from install to your first approved lead. Covers setup, scoring, the temperature model, all 10 tools, and self-hosting.

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 environment variables

Before starting the gateway, set your backend URL and operator key:

export SIGNALPIPE_API_URL=https://your-backend-url
export SIGNALPIPE_OPERATOR_KEY=your-operator-key

Using the managed backend? You'll get both values after signing up at signalpipe.io/pricing.

3

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
Semantic embedding~0.0001¢ per post

Cosine similarity between the post and your anchor sentences using OpenAI text-embedding-3-small. Catches buyer intent even when exact keywords aren't used.

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
LLM swarm judgment~0.03¢ per post

Three AI judges evaluate independently: Skeptic (40% weight), Analyst (35%), Optimist (25%). Weighted fusion gives the final score. Hard rule: if the Skeptic score < 0.3, the signal is suppressed regardless of the others.

Competitor-switch floor

Posts that match any of your configured competitor_keywords are automatically floored at a score of 60 — 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 a per-product RL weight that scales future scores for similar signals:

Approve

Weight +0.05 (max 2.0)

Reject

Weight −0.02 (floor 0.5)

The asymmetry is intentional — conservative about boosting, aggressive about penalizing. A 100%-rejected product reaches the floor in ~25 rejections. A 100%-approved product reaches the ceiling in ~20 approvals.

Temperature Model

Every prospect has a 0–100 temperature. Temperature determines which AI persona generates their next message — and when to reach out.

0–29
Recovery
Re-engager

Re-spark cold leads. No hard sell. Focus on re-establishing relevance.

Follow up: 168 hrs (weekly)
30–74
Sales
Educator / Consultant

Qualify, show fit, build trust. Educator for lower range, Consultant for upper.

Follow up: 24–72 hrs
75–100
Closing
Closer

Urgency, social proof, clear CTA. Do not waste time on education at this stage.

Follow up: 4 hrs

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. Once in Recovery, they only re-enter Sales 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.

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
  • Use signalpipe_reload_products after editing — anchors are re-embedded immediately

Tool Reference

SignalPipe gives your agent 10 tools — 8 for lead acquisition and 2 for prospect nurturing + 1 for pipeline visibility. All tools are called conversationally inside your OpenClaw agent.

Lead Acquisition (Mantidae)
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. Adjusts the RL weight down for similar signals on this product.

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.

Prospect Nurturing (Nurture Engine)
signalpipe_track_prospect

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

signalpipe_get_message

Generate the next context-aware outreach message for a prospect. Uses their full signal history.

signalpipe_get_pipeline

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

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. X direct monitoring coming soon.

Self-Hosting

The backend is a FastAPI app. You can run it anywhere that supports persistent processes.

Requirements

  • Python 3.11+
  • PostgreSQL with pg_cron and pg_net extensions (Supabase free tier works)
  • A persistent process host — Railway recommended (~$5/mo)
  • OpenAI API key (embeddings)
  • Anthropic, OpenAI, or Gemini API key (message generation) — or a local model via any OpenAI-compatible endpoint

Environment variables

SUPABASE_URLYour Supabase project URL
SUPABASE_KEYSupabase service role key
OPENAI_API_KEYUsed for text-embedding-3-small
OPERATOR_KEYSecret key — set in both Railway and sidecar
ANTHROPIC_API_KEYDefault message generation (Claude Haiku)
COMPANION_LLM_PROVIDERopenai | anthropic | openai_compatible
COMPANION_LLM_MODELe.g. claude-haiku-4-5, gpt-4o-mini, nemotron-mini
COMPANION_LLM_BASE_URLNeMoClaw / Ollama / vLLM endpoint (if openai_compatible)
X_API_KEYTwitter/X reply outreach (optional)
X_API_SECRET
X_ACCESS_TOKEN
X_ACCESS_SECRET
REDDIT_CLIENT_IDReddit DM outreach (optional)
REDDIT_CLIENT_SECRET
MAX_TWITTER_ACTIONS_PER_DAYDefault: 10
MAX_REDDIT_DMS_PER_DAYDefault: 5

NeMoClaw / on-premises

To run message generation locally with Nemotron or any other model:

COMPANION_LLM_PROVIDER=openai_compatible
COMPANION_LLM_BASE_URL=http://localhost:11434/v1
COMPANION_LLM_MODEL=nemotron-mini

Works with Ollama, LM Studio, vLLM, or any OpenAI-compatible local endpoint. Full instructions in the backend repo: /api/README.md

Ready to find your first lead?

Join the waitlist for managed backend access — or install the plugin now if you're self-hosting.