streamable-httpMITupdated 15d ago
Agentic sales pipeline โ buying-intent detection, swarm-scored lead qualification, and prospect nurturing for OpenClaw agents.
What can you do with signalpipe?
SignalPipe
Agentic sales pipeline โ buying-intent detection, swarm-scored lead qualification, and prospect nurturing for OpenClaw agents.
SignalPipe watches Reddit, Hacker News, X/Twitter, and any RSS feed you configure for people publicly expressing buying intent. A 3-judge AI swarm evaluates every signal, calibrates the reply to the signal strength, and surfaces only real leads for your approval. Works with any OpenClaw-compatible agent โ or connect directly via MCP from Claude Code, Cursor, or Windsurf.
What It Does
Top of funnel โ Signal Acquisition (Mantidae): Scouts Reddit, Hacker News, X/Twitter, and custom RSS feeds every cycle. Every post passes through a 3-stage scoring filter โ keyword gate, multi-factor semantic scoring, sarcasm detection โ then reaches a 3-judge AI drafting swarm: Skeptic, Analyst, Optimist. Each judge scores the lead independently. The swarm fuses their scores and suppresses low-intent posts automatically. Only leads that clear the swarm reach your queue โ with a draft already calibrated to how hot the signal is:
- Closer (highest-intent): Direct, action-oriented reply โ proposes a concrete next step
- Advisor (mid-intent): Consultative โ acknowledges the problem, introduces the product naturally
- Educator (early-stage): Value-first โ leads with a genuine insight, mentions the product only if it fits
Competitor-switch posts are hard-floored and always reach your queue regardless of score.
Mid/bottom of funnel โ Nurture Engine: Tracks every prospect's temperature (0โ100) across 13 signal types. Automatically selects the right persona (Educator โ Consultant โ Closer โ Re-engager). Remembers objections permanently โ if someone said the price is too high, that angle is never repeated. Never spams. One-directional mode transitions.
Execution โ Sender (v2.0):
The brain scores, drafts, and approves; the plugin can now also send. An optional background sender holds a live stream open to the brain, receives the missions you've already approved, and posts reddit_comment / reddit_dm on Reddit with your own credentials. The math runs on us, the sending runs on you โ your Reddit credentials and LLM keys never reach SignalPipe. twitter_reply is handled by the standalone signalpipe-daemon. The sender is opt-in: set the REDDIT_* env vars to enable it, or ignore it entirely and stay MCP-only.
Tools (20 total)
Signal Acquisition
| Tool | What it does |
|---|---|
signalpipe_get_missions |
List pending leads awaiting review โ score, role, channel, snippet, draft. Lean by default; opt into include_context=true only when drafting. |
signalpipe_draft_mission |
Get the drafting payload for a single mission so the host LLM can write the reply itself (BYOK path) |
signalpipe_upload_draft |
Upload a host-LLM-written draft to a mission |
signalpipe_approve_mission |
Approve a lead and queue it for outreach |
signalpipe_reject_mission |
Reject a lead with a reason โ teaches the per-station RL loop (penalty size adapts to the reason; demotes one noisy feed without dragging the rest of the product down). Don't use this when the post is just gone โ use signalpipe_delete_mission instead. |
signalpipe_delete_mission |
Hard-delete a mission row โ silent cleanup, no learning signal. Companion to reject. Canonical case: the post was deleted / 404'd / removed before you could reply. |
signalpipe_scout_now |
Trigger an on-demand scouting run across all active products |
signalpipe_get_products |
List all configured products |
signalpipe_add_product |
Register a new product to monitor โ describe it in buyer language |
signalpipe_add_station |
Add an RSS feed, subreddit, or HN keyword feed for a product |
signalpipe_reload_products |
Hot-reload product cache after changes โ no redeploy needed |
Nurture Engine
| Tool | What it does |
|---|---|
signalpipe_track_prospect |
Log a signal from a prospect, update their temperature |
signalpipe_get_message |
Generate the next outreach message via the backend LLM |
signalpipe_get_message_prompt |
Get the full prompt + context so the host LLM writes the message (BYOK path) |
signalpipe_record_message |
Record a host-LLM-written message as sent |
signalpipe_get_pipeline |
View the full prospect pipeline sorted by temperature |
signalpipe_score_signal |
Universal scorer โ paste any text (Gmail, Slack, Discord, Telegram, LinkedIn, transcripts) and get back the same score + classification + drafting context the scout produces for Reddit/HN posts. SignalPipe never touches the source channel; your host agent does. |
Sender
Reddit-only; requires the optional REDDIT_* env vars. Contains no scoring or drafting โ it only posts pre-approved missions with your credentials.
| Tool | What it does |
|---|---|
signalpipe_start_sender |
Start the background sender โ streams approved missions and posts reddit_comment / reddit_dm with your own Reddit creds. Supports dry_run. |
signalpipe_stop_sender |
Stop the background sender; unsent approved missions stay queued on the brain |
signalpipe_sender_status |
Report sender state โ running / connected, sent / failed / skipped counts this session, plus brain-side queue depth |
MCP Support
SignalPipe exposes all tools as an MCP server โ no OpenClaw plugin install needed.
Connect from Claude Code, Cursor, or Windsurf โ add this URL to your MCP config:
https://api.signalpipe.io/mcp
Auth: Authorization: Bearer YOUR_OPERATOR_KEY
Once connected, ask your agent:
- "Show me my leads"
- "Reject the first one โ it's a founder promoting their own tool"
- "Who should I follow up with today?"
Live Session Example
A typical morning lead review inside your OpenClaw agent or Claude.ai via MCP.
You: Show me today's leads.
โ signalpipe_get_missions
3 missions pending review
MISSION 1 ยท score: 91 ยท role: CLOSER ยท competitor_flag: true
Product : AcmeTool
Channel : reddit_dm
Handle : u/frustrated_dev99
Snippet : "Their pricing just doubled again. Done. Need a replacement ASAP."
Draft : "Saw your post โ we built AcmeTool for exactly the gap you're
describing. Teams typically switch in under a week. Worth a
quick look? Happy to show you how it compares."
MISSION 2 ยท score: 68 ยท role: ADVISOR ยท competitor_flag: false
Product : AcmeTool
Channel : reddit_dm
Handle : u/ops_lead_rachel
Snippet : "Looking for a tool to automate repetitive ops workflows.
Budget is flexible, need something the team actually uses."
Draft : "The part about 'something the team actually uses' is the real
problem to solve โ most tools fail there, not on features.
AcmeTool is built around that constraint. Happy to walk through
a real team setup if useful."
MISSION 3 ยท score: 24 ยท role: EDUCATOR ยท competitor_flag: false
Product : AcmeTool
Channel : reddit_dm
Handle : u/just_browsing_thx
Snippet : "Saw an ad for workflow tools. Not really something I need right now"
Draft : [Swarm low-confidence โ auto-rejected]
Agent: 2 leads ready. Lead 1 is a competitor-switch signal, score 91 โ Closer draft, proposes a direct next step. Lead 2 is a genuine need with flexible budget, score 68 โ Advisor draft, leads with their real problem. Lead 3 was auto-rejected by the swarm. Approve 1 and 2, or edit first?
You: Lead 1 is good, approve it. For lead 2 change the draft to: "Hey Rachel โ we solve exactly this. Most ops teams are running automations within a day. Want me to show you how a team like yours uses it?"
โ signalpipe_approve_mission (msn_8f3a โ swarm draft unchanged)
โ signalpipe_approve_mission (msn_2b91 โ user-edited draft)
โ msn_8f3a queued for outreach
โ msn_2b91 queued for outreach (your version)
You: Rachel just replied โ she's interested. Log it.
โ signalpipe_track_prospect
handle : u/ops_lead_rachel
channel : reddit_dm
signal : replied
mission_id: msn_2b91
{
"prospect_id": "pro_7f2c",
"handle": "u/ops_lead_rachel",
"temperature": 45,
"mode": "sales",
"persona": "Consultant",
"follow_up_in": "2โ3 days"
}
Agent: Rachel is in Sales mode, temperature 45. Consultant persona active โ qualify and show fit, no hard sell yet.
You: Who's hottest? Generate a message for them.
โ signalpipe_get_pipeline
โ signalpipe_get_message (prospect_id: pro_sarah_cto)
{
"message": "Sarah โ you've seen how it works. Happy to answer any last
questions before your team makes a call. What's the main
thing you're still weighing?",
"tactic": "remove_friction",
"mode": "closing",
"temperature": 88,
"note": "Previous objection (too_expensive) on record โ pricing angle avoided"
}
Agent: Closing mode, friction-removal tactic. Her previous pricing objection is permanently on record โ the AI avoided that angle automatically.
Quick Start
1. Get a backend + operator key
Managed (recommended): Join the waitlist at signalpipe.io โ you get a SIGNALPIPE_OPERATOR_KEY and backend URL. No infrastructure to manage.
Self-hosted: See Self-Hosting below.
2. Install
Via OpenClaw:
claw install signalpipe
Via MCP (no plugin install): Add the MCP server URL to Claude.ai, Cursor, or Windsurf โ see MCP Support above.
3. Set environment variables
export SIGNALPIPE_API_URL=https://api.signalpipe.io
export SIGNALPIPE_OPERATOR_KEY=your-operator-key
Optional โ to run the in-plugin Reddit sender (v2.0): add a Reddit "script" app's credentials (create one at https://www.reddit.com/prefs/apps on the sending account). These stay on your machine and are never sent to SignalPipe.
export REDDIT_CLIENT_ID=your-client-id
export REDDIT_CLIENT_SECRET=your-client-secret
export REDDIT_USERNAME=your-sending-account
export REDDIT_PASSWORD=your-password
# optional caps (defaults shown)
# export MAX_REDDIT_COMMENTS_PER_DAY=15
# export MAX_REDDIT_DMS_PER_DAY=5
4. Configure a product
Ask your agent:
"Add my product โ it's called AcmeTool, it helps ops teams automate repetitive workflows, target audience is ops leads and founders, anchor phrases: 'automate repetitive tasks', 'workflow automation', 'ops without headcount'"
The signal engine activates on the next scout cycle.
How Scoring Works
Every incoming post passes through two sequential pipelines.
Pipeline 1 โ Scoring (backend):
- Keyword gate โ pre-filter: any
buy_signal_keywordsmust appear before the post is scored. Eliminates ~85% of posts with zero API cost. - Multi-factor semantic scoring โ embedding similarity, urgency, specificity, and keyword density. Multilingual: English, Spanish, French, German, Portuguese.
- Sarcasm detection โ distinguishes genuine buyers from venting or irony. Fails open โ real leads are never suppressed by the sarcasm check.
Pipeline 2 โ Swarm Drafting (managed backend):
Posts that survive scoring reach a 3-judge AI swarm:
| Judge | Role |
|---|---|
| Skeptic | Vetoes non-buyers, sellers promoting their own tools, surveys |
| Analyst | Assesses fit depth, writes the preferred draft |
| Optimist | Finds the strongest read of the lead, fallback draft |
The judges run concurrently, and their scores are fused via a weighted ensemble. Low-confidence leads are auto-rejected โ they never reach your queue. High-confidence leads get a draft calibrated to signal strength:
- Closer (highest-intent): Proposes a concrete next step โ demo link, trial, or direct ask
- Advisor (mid-intent): Consultative โ acknowledges situation, introduces product naturally
- Educator (early-stage): Value-first โ answers their question, mentions product only if it fits
Reinforcement learning: Every approve/reject adjusts the source station's RL weight โ each listening feed (subreddit, HN search, RSS source) carries its own multiplier. Approvals reward the feed; rejections are reason-aware, with the penalty sized to how bad the signal was โ spam is penalised hardest, then wrong-audience, then weak or no-reason rejections, while sarcasm and wrong-product are lighter and "already a customer" carries no penalty. Per-station scoping means one noisy feed gets demoted without penalising the rest of the product's sources.
Temperature Model
Mode is intent-based, not pure temperature. Brand-new prospects start in
nurture regardless of their starting temperature and only move out once a
real signal lands.
| Mode | When | Persona |
|---|---|---|
| Nurture | First-touch / no engagement yet (default for new prospects) | Educator โ value-first, lead with insight, mention the product only if it fits |
| Sales | Prospect engaged (replied / clicked / asked / viewed) and temperature 30โ74 | Consultant โ qualify, show fit, build trust |
| Closing | Sustained engagement and temperature โฅ 75 | Closer โ urgency, social proof, clear CTA |
| Recovery | Previously engaged and cooled, or explicit cooling signal (ghosted_3_days, ghosted_7_days, not_interested, bad_timing) | Re-engager โ re-spark cold leads, no hard sell |
13 signal types map to calibrated heat deltas: booked_demo, asked_pricing, viewed_content, replied, clicked_link, not_decision_maker, ghosted_3_days, no_time, competitor, too_expensive, not_interested, bad_timing, ghosted_7_days.
One-directional mode transitions โ no oscillation, no spam. Objection memory โ permanently recorded and injected into every future message so the AI never repeats a failed angle.
Managed Backend Tiers
| Tier | Price | Products | Leads/day | Prospects |
|---|---|---|---|---|
| BYOK | $19/mo | 3 | 50 | 1,000 |
| Starter | $49/mo | 2 | 25 | 500 |
| Growth | $149/mo | 10 | 250 | 5,000 |
| Scale | $499/mo | Unlimited | Unlimited | Unlimited |
Annual billing available โ 2 months free (17% off). First 100 waitlist signups: 50% off for 3 months.
Self-Hosting
The backend is a FastAPI app. Requirements:
- Python 3.11+
- PostgreSQL with
pg_cronandpg_net(Supabase recommended) - A host that supports long-running processes (Railway recommended)
- OpenAI API key (embeddings)
Full setup guide: signalpipe.io/guide#self-hosting
License
Plugin: MIT
Backend: Business Source License 1.1 (converts to Apache 2.0 after 4 years)
Install
Add signalpipe to your client. Pick the one you use.
claude mcp add --transport http signalpipe https://api.signalpipe.io/mcpcodex mcp add signalpipe --url https://api.signalpipe.io/mcp{
"mcpServers": {
"signalpipe": {
"url": "https://api.signalpipe.io/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"signalpipe": {
"type": "http",
"url": "https://api.signalpipe.io/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"signalpipe": {
"url": "https://api.signalpipe.io/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"signalpipe": {
"serverUrl": "https://api.signalpipe.io/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 7 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint โ no local install
Version history
| Versions | Published |
|---|---|
| 1.5.0Latest | May 10, 2026 |