Scan online communities (Reddit, +) for maker pain points; cluster into a weekly digest.
Project description
customer-discovery-agent
English | 中文
Scan online communities for maker pain points. Cluster into themes. Get a weekly digest of what your future users are actually frustrated about.
Built by Alex Ji — solo founder shipping VibeXForge, Orallexa, and marketing-agent. Born from this thought:
I keep guessing what indie makers actually need. Reddit knows.
What it does
customer-discovery-agent scan \
--subreddits SaaS IndieHackers SideProject Entrepreneur \
--hours 168 \
--out digest.md
For each enabled subreddit, the agent:
- Pulls top + new posts in the last
--hourswindow - Filters by pain-pattern keywords (default: 17 phrases like "i wish", "frustrated", "is there a tool", "struggle with")
- Sends matches to Claude Haiku for theme clustering (3-7 clusters)
- Renders a markdown digest with representative quotes + sample URLs
Without ANTHROPIC_API_KEY, falls back to deterministic keyword-based clustering — still useful, just less coherent.
Sample output
# Customer Discovery Digest
*Window: last 168h · Sources: reddit*
*Pain points scanned: 47 · Clusters: 5*
## Top themes
### Founders frustrated with Vercel build minutes
**8 posts · avg score 42.5**
> $130 in build minutes this month, half from failed type-check pushes
Sample posts:
- https://reddit.com/r/SaaS/comments/...
- https://reddit.com/r/IndieHackers/comments/...
Install
git clone https://github.com/alex-jb/customer-discovery-agent.git
cd customer-discovery-agent
pip install -e .
Set Reddit credentials (PRAW script app at https://reddit.com/prefs/apps):
export REDDIT_CLIENT_ID=...
export REDDIT_CLIENT_SECRET=...
export REDDIT_USERNAME=...
export REDDIT_PASSWORD=...
export REDDIT_USER_AGENT="customer-discovery-agent/0.1 by yourname"
Optional: ANTHROPIC_API_KEY for LLM clustering.
CLI
customer-discovery-agent scan
--subreddits SaaS IndieHackers SideProject ... (required)
--hours 168 (lookback window)
--keywords "i wish" "frustrated" ... (override default list)
--min-score 5 (skip posts below this)
--limit 100 (max posts per subreddit per stream)
--max-clusters 7
--out digest.md (default: stdout)
Roadmap
- v0.1 — Reddit scraper + keyword filter + Claude clustering + markdown digest
- v0.2 — IndieHackers RSS, X timeline, 即刻 search, 知乎 question scraper
- v0.3 — Email shipping (Resend / Mailgun), GitHub Actions weekly cron
- v0.4 — Embedding-based semantic clustering (replaces LLM cluster call for cost)
- v0.5 — Cross-week diffing — "this theme grew 3x this week"
Why this exists
Solo founders make two systematic mistakes about user research:
- Building from gut: skipping discovery → product-without-buyers
- Doing it manually: scrolling Reddit for hours → either burns weeks or stops happening
This agent runs as a Sunday night cron, drops a digest in your inbox Monday morning, and your guesses become literal quotes from your future users. ~$0.001 / scan in template mode, ~$0.05 / scan with LLM clustering on a busy week.
MCP server (Claude Desktop / Cursor / Zed)
Ask "scan IndieHackers for pain points this week" inline from your AI assistant.
pip install 'customer-discovery-agent[mcp]'
{
"mcpServers": {
"customer-discovery": {
"command": "customer-discovery-mcp",
"env": { "ANTHROPIC_API_KEY": "..." }
}
}
}
Tools: scan(subreddits, hours, …) · latest_digest(directory) · keyword_list()
License
MIT — use it, fork it, add IndieHackers and 即刻 to it.
🧩 Part of the Solo Founder OS stack
A growing collection of MIT-licensed agents that share solo-founder-os as their base — Source/MetricSample contracts, HITL queue, AnthropicClient, notifiers, scheduler. Each agent is independently useful; together they cover the full solo-founder workflow.
| Agent | What it does |
|---|---|
| solo-founder-os | The shared base lib (Source/MetricSample, AnthropicClient, HITL queue, notifiers, sfos-doctor / sfos-evolver / sfos-eval / sfos-retro / sfos-bus / sfos-inbox) |
| build-quality-agent | Pre-push diff reviewer + local build runner — catches CI-killing changes before they ship |
| funnel-analytics-agent | Daily brief + real-time alerts across 9 sources (Vercel, GitHub, Supabase, etc.) |
| vc-outreach-agent | Investor cold email drafter with HITL queue + SMTP sender |
| cost-audit-agent | Monthly bill audit across 6 providers with dollar-tagged waste findings |
| bilingual-content-sync-agent | EN ⇄ ZH i18n diff + Claude translate + HITL apply |
| orallexa-marketing-agent | AI marketing agent for OSS founders — auto-generate platform-specific marketing posts |
Each agent's own row is omitted from its README. Install whichever solve real problems for you.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file customer_discovery_agent-0.5.0.tar.gz.
File metadata
- Download URL: customer_discovery_agent-0.5.0.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d7f32e32a0db9bee9c6655a51214e542e4f8c4bf9f21ae8c6dbfc115189509c
|
|
| MD5 |
7a585c490b86b0c6d3a39a8cb5b6c6eb
|
|
| BLAKE2b-256 |
c1dc6c1db68af519acb340c422b2744b5bc5761c5ee9384f24b77887815face8
|
Provenance
The following attestation bundles were made for customer_discovery_agent-0.5.0.tar.gz:
Publisher:
release.yml on alex-jb/customer-discovery-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
customer_discovery_agent-0.5.0.tar.gz -
Subject digest:
4d7f32e32a0db9bee9c6655a51214e542e4f8c4bf9f21ae8c6dbfc115189509c - Sigstore transparency entry: 1478060605
- Sigstore integration time:
-
Permalink:
alex-jb/customer-discovery-agent@440eb8daf6c7d41fb86710503798146d6dc54a17 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/alex-jb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@440eb8daf6c7d41fb86710503798146d6dc54a17 -
Trigger Event:
push
-
Statement type:
File details
Details for the file customer_discovery_agent-0.5.0-py3-none-any.whl.
File metadata
- Download URL: customer_discovery_agent-0.5.0-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf29dba0ec882127d861997240b95b1d275be905f66b9668e6e097320954534e
|
|
| MD5 |
61bb2b099ea5cf5e10f5823591adbcb1
|
|
| BLAKE2b-256 |
3c9f226a8a99e8c119fe92b93aff90c3b8c46b6f7a9c3cffec61de5f52bd88ef
|
Provenance
The following attestation bundles were made for customer_discovery_agent-0.5.0-py3-none-any.whl:
Publisher:
release.yml on alex-jb/customer-discovery-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
customer_discovery_agent-0.5.0-py3-none-any.whl -
Subject digest:
bf29dba0ec882127d861997240b95b1d275be905f66b9668e6e097320954534e - Sigstore transparency entry: 1478060982
- Sigstore integration time:
-
Permalink:
alex-jb/customer-discovery-agent@440eb8daf6c7d41fb86710503798146d6dc54a17 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/alex-jb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@440eb8daf6c7d41fb86710503798146d6dc54a17 -
Trigger Event:
push
-
Statement type: