How it works
The pipeline runs every 15 minutes (configurable per project):- No auto-posting. The pipeline ONLY produces drafts. You manually paste-and-post on Reddit, then
mark-repliedthe URL back to us. - Hard dedupe. Every post is processed exactly once per project —
growth_seen_postsis the truth source, Redis is the fast cache. - Per-project daily LLM budget. If
daily_llm_budget_centsis hit, the project auto-pauses for the day; you see the warning on the dashboard and raise the cap. - Reply linter runs after every draft. Issues (
missing_disclosure,generic_opener,too_many_emojis, …) are surfaced as warnings — drafts are never silently dropped.
Intent scoring
Each post gets three sub-scores from the LLM. The final intent score is a weighted sum:
Plus a
buyer_stage classification:
- awareness → user describes a problem without naming a category. Reply with empathy + question. NO product mention.
- consideration → user is comparing options. Mention with disclosure if natural.
- decision → user has narrowed down. Direct mention with disclosure is fine.
buyer_stage and the subreddit’s promo_tolerance profile (strict, moderate, open). Strict subs (e.g. r/Anxiety, r/Depression, r/meditation) never get product-mention drafts — only helpful advice.
Onboarding (one input)
Paste anappId you’ve already connected to App Co-founder:
GrowthProjectInput draft with:
productDescription+targetAudience+antiPersona(generated from App Store metadata)- 5-10 suggested subreddits (LLM picks based on your audience)
competitorKeywords(from your tracked competitors)intentPatterns(e.g. “looking for”, “alternative to”) — used as a cheap pre-filter- Reasonable defaults for
minIntentScore(60),scanIntervalMin(60),dailyLlmBudgetCents(500)
POST /v1/growth/projects. Project is created with enabled: false by default — flip to true when you’re ready.
State machine
replied triggers an automatic write to growth_tracked_citations. From that point on, the AI Visibility scan worker checks every LLM answer it fetches for your reply URL and increments ai_citations_count on a hit. You see those citations in your weekly briefing.
API endpoints
Projects
Opportunities
Channel registry
Configuration
Per-project (editable on the dashboard):productDescription(required, 10+ chars)targetAudience(required)antiPersona(required) — “NOT for: enterprise teams; users specifically asking for free open-source alternatives.” Drives down false positives more than any other field.minIntentScore(default 60)scanIntervalMin(default 60, range 15-1440)analysisDepth(quick/standard/deep— controls model selection)dailyLlmBudgetCents(default 500)allowProductMentionGlobal(master switch)channelConfig— Reddit shape:{ subreddits: string[], competitorKeywords: string[], intentPatterns: string[] }
.env.example):
REDDIT_CLIENT_ID,REDDIT_CLIENT_SECRET,REDDIT_USER_AGENT- Model overrides:
GROWTH_MODEL_STD_SCORER,GROWTH_MODEL_STD_DRAFTER, …
More channels are coming
Reddit is the first channel. The system is built so new sources (e.g. Hacker News) can be added over time — when they land, the same opportunities view simply starts showing them, filterable by channel.Safety guards (all on by default in V1)
- Pre-filter — posts shorter than 50 chars without a question mark are skipped before the LLM.
- Cascade — drafter only runs on posts that beat the project’s intent threshold.
- Hard rules in prompt — competitor requests, wrong platform, jokes, developers-building-it all cap scores.
- Author throttle — V1.5: if an author has been replied to twice in the last 30 days, score cap = 50.
- Subreddit profile — strict subs (r/Anxiety, r/Depression, r/meditation, …) never produce product-mention drafts.
- Daily cap per grouping —
GROWTH_GROUPING_DAILY_CAP(default 2) — V1.5 enforcement. - Stale post filter — posts older than
GROWTH_MAX_POST_AGE_DAYS(default 7) are skipped. - Reply linter — disclosure, length, link, generic opener, emoji count, marketing language.
- Daily budget — per project, in cents. Auto-pauses the project for the day when exceeded.
- No auto-post — nothing ever goes to Reddit from the server. You always click and paste.
Co-founder chat (read-only)
In Ask (web chat, Slack, Telegram), Co-founder can read Growth data but cannot post replies or create projects:
Writes (
growth_opportunities_post_reply, growth_projects_create, growth_scheduled_posts_create, …) stay in the Growth dashboard or MCP — not in Co-founder chat. See My Apps workspace.
