cd /news/artificial-intelligence/i-built-a-cli-that-finds-me-clients-… Β· home β€Ί topics β€Ί artificial-intelligence β€Ί article
[ARTICLE Β· art-70948] src=dev.to β†— pub= topic=artificial-intelligence verified=true sentiment=↑ positive

I Built a CLI That Finds Me Clients on Reddit Using AI

A developer built Cypher, an open-source Rust CLI that scans Reddit subreddits and uses AI to score buying intent, ranking leads for freelancers. The tool supports local Ollama models and cloud fallback to providers like OpenAI and Groq, storing leads in a local SQLite database.

read4 min views1 publishedJul 23, 2026

tl;dr β€” I got tired of manually scrolling Reddit for people asking "who can build me a landing page?" so I built a Rust CLI that scans subreddits, uses AI to score buying intent, and hands me a ranked list of leads. Open source, runs locally, works with Ollama or any cloud AI provider.

I'm a freelancer. Half my clients come from Reddit β€” someone posts in r/SaaS or r/startups asking for help, and I reply. Simple.

Except it's not simple. The workflow looks like this:

It's a full-time job just to find leads. And the signal-to-noise ratio is terrible β€” most posts are people venting, sharing links, or asking questions they don't need help with.

I wanted a tool that does the scrolling for me and only shows me posts where someone is ready to spend money.

Cypher is a terminal tool that:

You tell it what you do in one sentence. It suggests subreddits to watch and keywords to filter by. Then you just run cypher scan

when you're ready to find leads.

Language: Rust β€” because I wanted it fast and I wanted a single binary I could cargo install

and forget about.

Reddit data: Sylvia API β€” a Reddit data proxy that handles rate limits, parsing, and anti-bot measures. I didn't want to build a scraper. I just wanted an API key and clean JSON. Sylvia does that.

AI layer: Hybrid β€” local Ollama for speed, cloud fallback (OpenAI, Groq, Gemini, OpenRouter) for when the local model isn't confident enough. You set a cloud_threshold

score and anything above it gets re-analyzed by a stronger model.

Database: SQLite β€” stores leads locally at ~/.local/share/cypher/leads.db

. No cloud, no accounts, no tracking.

You run cypher init

and describe what you do:

I build landing pages for SaaS startups

Cypher takes that sentence, sends it to your configured AI provider, and gets back:

For "landing pages for SaaS startups," it might suggest:

cypher scan

This is the core loop:

Fetch recent posts from watched subreddits (Sylvia API)
    ↓
Keyword filter (cheap, fast β€” throws out 80% of posts)
    ↓
AI analysis on remaining posts
    ↓
Extract signals: intent, budget, urgency, service needed
    ↓
Score 0-100 based on signal strength
    ↓
Store in local SQLite
    ↓
Display ranked table

The keyword filter is important β€” it saves API calls and AI tokens. If a post doesn't contain any of your keywords, it never touches the AI layer.

Each lead gets a score based on:

Signal Weight What it measures
Intent 30% How clearly they're looking to hire (vs. just asking a question)
Budget 25% Whether they mention money, or it's implied
Urgency 25% Time pressure ("need this done by Friday" vs. "someday")
Fit 20% How well the post matches your profile description

A post like "Need a landing page done, budget $3k, launching next week" scores high. "Anyone know a good landing page builder?" scores low β€” they're probably looking for a tool, not a person.

This is where it gets interesting. Cypher supports two modes:

Local (Ollama): Runs qwen3:4b

locally. Fast, free, private. Good enough for most lead scoring.

Cloud fallback: When the local model's confidence is below cloud_threshold

, Cypher sends the post to your first configured cloud provider (OpenAI, Groq, Gemini, or OpenRouter). If that fails, it tries the next one.

The config looks like this:

[ai]
local_model = "qwen3:4b"
ollama_url = "http://127.0.0.1:11434"
cloud_threshold = 70
openai_api_key = "sk-..."
openai_model = "gpt-4o-mini"
groq_api_key = "gsk_..."
groq_model = "llama-3.3-70b-versatile"

You don't need all of them. Just one cloud provider works. Ollama is optional β€” if you don't have it, everything goes through cloud.

If you want continuous monitoring:

cypher daemon --interval 60

Scans every 60 seconds. Good for leaving running while you work β€” new leads pop up in your terminal as they appear.

cypher init          # Setup profile, API keys, subreddits
cypher scan          # One-shot scan
cypher leads         # List all leads
cypher leads --min-score 80 --status new
cypher lead <id>     # Detailed view of one lead
cypher watch r/SaaS  # Add subreddit to watchlist
cypher unwatch r/SaaS
cypher watchlist     # List all watched subreddits
cypher daemon        # Background scan loop
cypher export csv    # Export to CSV
cypher export json   # Export to JSON
cypher status        # Config and status check
cargo install --path .

cypher init

cypher scan

You'll need:

A few things I'd change if I rebuilt this:

I built this because I needed it. I'm not trying to turn it into a SaaS β€” it runs locally, on my machine, with my API keys. If you find it useful, use it. If you want to add features, open a PR.

GitHub: hidekiryuuga/cypher

Cypher is built with Sylvia API β€” a Reddit data proxy that handles rate limits, parsing, and anti-bot measures. If you're building anything that needs Reddit data, check it out.

── more in #artificial-intelligence 4 stories Β· sorted by recency
── more on @cypher 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/i-built-a-cli-that-f…] indexed:0 read:4min 2026-07-23 Β· β€”