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.
Metadata
Release files for customer-discovery-agent 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| customer_discovery_agent-0.5.0.tar.gz | 23.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| customer_discovery_agent-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.1 kB
Release files / customer_discovery_agent-0.5.0.tar.gz
| Download URL | customer_discovery_agent-0.5.0.tar.gz |
|---|---|
| Size | 23.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4d7f32e32a0db9bee9c6655a51214e542e4f8c4bf9f21ae8c6dbfc115189509c
|
|
BLAKE2b-256 checksum How to use checksums |
c1dc6c1db68af519acb340c422b2744b5bc5761c5ee9384f24b77887815face8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 8, 2026.
Transparency logRelease files / customer_discovery_agent-0.5.0-py3-none-any.whl
| Download URL | customer_discovery_agent-0.5.0-py3-none-any.whl |
|---|---|
| Size | 18.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf29dba0ec882127d861997240b95b1d275be905f66b9668e6e097320954534e
|
|
BLAKE2b-256 checksum How to use checksums |
3c9f226a8a99e8c119fe92b93aff90c3b8c46b6f7a9c3cffec61de5f52bd88ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 8, 2026.
Transparency log