Automated lead signals
from Reddit, HN & RSS.

Define your keywords, pick your sources, run it on a schedule. New buying signals show up in Slack or your inbox with relevance scores. No browser extensions, no SaaS subscriptions — just a script and a cron job.

Get Started Setup Guide
config.json Reddit + HN + RSS keyword matching scoring Slack / Email / Console

Keyword scoring

Split your keywords into two intent levels. High-intent keywords score 3 points each — these are direct buying signals like "looking for a tool" or "competitor alternative". Medium-intent keywords score 1 point — topic and pain signals.

Posts matching multiple keywords accumulate points. A post matching one high-intent and two medium-intent keywords scores 5. You see the highest-scoring signals first.

Incremental dedup

State is stored in a local JSON file. Each source tracks its cursor: Reddit stores the newest post ID per subreddit, HN stores a timestamp, RSS stores the newest GUID per feed.

On each run, only truly new posts are checked. First run establishes a baseline without notifying. Delete .state.json to reset and re-scan everything.

Reddit

Subreddit monitoring

Fetches new posts from each configured subreddit via the public JSON API. No OAuth, no API key. Rate limited at 1.5s between requests. Configurable number of posts per subreddit.

Hacker News

Algolia search

Searches HN via Algolia with configurable queries and a minimum points filter. Posts with 10+ points get a bonus score. Timestamp-based dedup means zero duplicates across runs.

RSS

Industry feeds

Parses any RSS feed via rss-parser. Strips HTML from content before keyword matching. GUID-based dedup. Add as many feeds as you want — industry blogs, competitor blogs, news sites.

01

Clone and install

Clone the repo and install dependencies. Node 18+ required.

git clone https://github.com/pengasuzie/lead-monitor.git cd lead-monitor npm install
02

Configure your keywords

Copy the example config and edit it. Add your high-intent buying signals, medium-intent topic keywords, subreddits, RSS feeds, and HN search queries.

cp config.example.json config.json # Edit config.json: { "keywords": { "high": ["your product alternative"], "medium": ["pain point"] }, "reddit": { "subreddits": ["SaaS", "startups"] } }
03

Run it

First run scans recent posts and saves a baseline. Second run onwards notifies you about new signals only. Results always print to console.

npm run monitor === Lead Monitor === 2026-02-26T10:00:00Z === [sources] Checking Reddit... [sources] Checking RSS feeds... [sources] Checking Hacker News... [results] reddit: 3 | rss: 1 | hn: 2 | total: 6 [reddit] score:6 | r/SaaS | Need a CRM alternative Keywords: crm alternative, looking for [done] State saved.
04

Add notifications

Optionally add Slack or email notifications. Set environment variables and signals arrive automatically.

# Slack — set incoming webhook URL export LEAD_MONITOR_SLACK_WEBHOOK="https://hooks.slack.com/..." # Email — requires Resend API key export RESEND_API_KEY="re_..." export EMAIL_FROM="Leads <leads@yourdomain.com>" # Schedule with cron (every 30 min) */30 * * * * cd /path/to/lead-monitor && npm run monitor

Historical scan

Run a one-time 30-day backfill to find signals you missed. Uses Reddit's search API (broader than the /new endpoint) and a 30-day HN lookback. RSS feeds return whatever history they retain, typically 2-4 weeks.

The backfill does not touch .state.json, so it's safe to run alongside the regular monitor. Optionally sends an email digest with all results.

npm run backfill === Lead Monitor — 30-Day Backfill === [sources] Searching Reddit (takes a few min)... Found 12 Reddit signals [sources] Searching Hacker News... Found 5 HN signals [sources] Scanning RSS feeds... Found 3 RSS signals [total] 18 unique signals [6] r/SaaS | 14 Feb | Need a CRM alternative [4] HN | 8 Feb | Show HN: Tool for... [3] TechCrunch | 2 Feb | Startup raises...

Slack

Sends Block Kit messages via incoming webhook. Each signal shows source, linked title, relevance score, matched keywords, and a body preview. Up to 10 signals per message.

  • Source icons: [Reddit], [HN], [News]
  • Clickable titles link to original post
  • Score and keyword summary per signal
  • Body preview (200 chars)

Email

HTML digest via Resend with color-coded score badges. Red for high relevance (3+), amber for medium (2), grey for low (1). Timestamps in AEST.

  • Color-coded score badges
  • Source labels and matched keywords
  • Body preview (300 chars)
  • Sorted by relevance score