Workflow

Reddit Intent Outreach Pipeline

Daily Reddit monitoring pipeline that finds buying intent signals and surfaces warm outreach opportunities from active discussions.

Overview

This workflow monitors Reddit daily for discussions showing buying intent: people asking for recommendations, comparing tools, or expressing frustration with current solutions. It scores each discussion by intent strength and engagement, producing a prioritized list of warm outreach opportunities where prospects are actively seeking what you offer.

Trigger

Cron schedule (daily at 7:00 AM UTC)

Schedule

Runs daily at 7:00 AM UTC

Workflow Steps

1

Load intent keyword patterns

Read buying-intent patterns (e.g., 'looking for', 'anyone recommend', 'switching from') combined with product keywords from config.

2

Search Reddit for intent signals

Query Scavio Reddit search for each intent + product keyword combination to find active discussions.

3

Score intent strength

Score each post by combining upvotes, comment count, recency, and intent keyword match quality.

4

Deduplicate and rank

Remove duplicate posts across keyword combinations and rank by composite intent score.

5

Output outreach opportunities

Save the top 20 opportunities with post links, context snippets, and suggested outreach angles.

Python Implementation

Python
import requests
import json
from pathlib import Path
from datetime import datetime

API_KEY = "your_scavio_api_key"

INTENT_PATTERNS = ["looking for", "anyone recommend", "need a tool for", "switching from", "frustrated with"]
PRODUCT_KEYWORDS = ["search API", "SERP data", "web scraping"]

def search_reddit(query: str) -> list[dict]:
    res = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "reddit", "query": query},
        timeout=15,
    )
    res.raise_for_status()
    return res.json().get("organic", [])

def score_intent(post: dict, intent_pattern: str) -> float:
    base_score = post.get("score", 0) + (post.get("comments", 0) * 3)
    # Boost for stronger intent signals
    if "need" in intent_pattern or "frustrated" in intent_pattern:
        base_score *= 1.5
    return base_score

def run():
    all_opportunities = []
    seen_titles = set()

    for intent in INTENT_PATTERNS:
        for product_kw in PRODUCT_KEYWORDS:
            query = f"{intent} {product_kw}"
            posts = search_reddit(query)
            for post in posts:
                title = post.get("title", "")
                if title in seen_titles:
                    continue
                seen_titles.add(title)
                intent_score = score_intent(post, intent)
                if intent_score > 10:
                    all_opportunities.append({
                        "title": title,
                        "subreddit": post.get("subreddit", ""),
                        "link": post.get("link", ""),
                        "score": post.get("score", 0),
                        "comments": post.get("comments", 0),
                        "intent_score": round(intent_score, 1),
                        "intent_pattern": intent,
                        "snippet": post.get("snippet", "")[:200],
                    })

    all_opportunities.sort(key=lambda x: x["intent_score"], reverse=True)
    top = all_opportunities[:20]

    date = datetime.utcnow().strftime("%Y-%m-%d")
    Path(f"intent_outreach_{date}.json").write_text(json.dumps(top, indent=2))
    print(f"Found {len(all_opportunities)} intent signals, top {len(top)} saved")
    for opp in top[:5]:
        print(f"  [{opp['subreddit']}] {opp['title'][:60]} (intent: {opp['intent_score']})")

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";

const INTENT_PATTERNS = ["looking for", "anyone recommend", "need a tool for", "switching from"];
const PRODUCT_KEYWORDS = ["search API", "SERP data", "web scraping"];

async function searchReddit(query) {
  const res = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST",
    headers: { "x-api-key": API_KEY, "content-type": "application/json" },
    body: JSON.stringify({ platform: "reddit", query }),
  });
  if (!res.ok) throw new Error(`scavio ${res.status}`);
  return (await res.json()).organic ?? [];
}

async function run() {
  const fs = await import("fs/promises");
  const opps = [];
  const seen = new Set();
  for (const intent of INTENT_PATTERNS) {
    for (const kw of PRODUCT_KEYWORDS) {
      const posts = await searchReddit(`${intent} ${kw}`);
      for (const post of posts) {
        const title = post.title ?? "";
        if (seen.has(title)) continue;
        seen.add(title);
        const intentScore = (post.score ?? 0) + (post.comments ?? 0) * 3;
        if (intentScore > 10) opps.push({ title, subreddit: post.subreddit ?? "", link: post.link ?? "", intentScore, snippet: (post.snippet ?? "").slice(0, 200) });
      }
    }
  }
  opps.sort((a, b) => b.intentScore - a.intentScore);
  const date = new Date().toISOString().slice(0, 10);
  await fs.writeFile(`intent_outreach_${date}.json`, JSON.stringify(opps.slice(0, 20), null, 2));
  console.log(`Found ${opps.length} signals, top 20 saved`);
  for (const o of opps.slice(0, 5)) console.log(`  [${o.subreddit}] ${o.title.slice(0, 60)} (${o.intentScore})`);
}

run();

Platforms Used

Reddit

Community, posts & threaded comments from any subreddit

Frequently Asked Questions

This workflow monitors Reddit daily for discussions showing buying intent: people asking for recommendations, comparing tools, or expressing frustration with current solutions. It scores each discussion by intent strength and engagement, producing a prioritized list of warm outreach opportunities where prospects are actively seeking what you offer.

This workflow uses a cron schedule (daily at 7:00 am utc). Runs daily at 7:00 AM UTC.

This workflow uses the following Scavio platforms: reddit. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

Reddit Intent Outreach Pipeline

Daily Reddit monitoring pipeline that finds buying intent signals and surfaces warm outreach opportunities from active discussions.