The gap: Bluesky users are asking for notifications they can actually trust — a ping only when something really involves them, that opens on the thing itself — and the roadmap leaves it scattered across
x:discussingthreads and unlabeled bug reports (GAP-1, 92.2% confidence, UNDER-PRIORITIZED).
AI system that reads Bluesky's Play Store reviews AND its GitHub roadmap (bluesky-social/social-app), and surfaces the top 3–5 latent unmet needs the roadmap misses — each with a verdict (IGNORED / UNDER-PRIORITIZED / MISUNDERSTOOD), a deterministic confidence breakdown, and an evidence trace of review/issue IDs you can verify with grep.
7-stage pipeline, each stage a small script writing a file the next reads:
s1_ingest_reviews— Kaggle/HF review dataset →data/reviews.jsonl(IDsR-00001…)s1b_scrape_reviews— Playwright browser scrape of recent Play Store reviews, appended todata/reviews.jsonlwith fresh IDs (source: scraper). Needspip install playwright && python3 -m playwright install chromium. Standalone / refresh only — not part of the deterministic default chain.
s2_ingest_roadmap— GitHub issues + labels →data/roadmap.jsonl(IDsGH-<n>)s3_extract— LLM signal extraction per review →data/signals.jsonls4_cluster— deterministic topic clustering + co-occurrence →data/clusters.jsons5_infer_needs— LLM infers 8–12 candidate latent needs →data/candidates.jsons6_match_roadmap— prefilter + LLM judge vs roadmap →data/matched.jsons7a_skeptic— adversarial verification pass →data/verified.jsons7b_score_report— deterministic confidence formula →output/gaps.json+output/report.md
Full design: docs/superpowers/specs/2026-07-31-silent-stakeholder-design.md.
pip3 install -r requirements.txt
cp .env.example .env # fill in ANTHROPIC_API_KEY (required) and GITHUB_TOKEN (recommended)
python3 run_all.pyOutputs: output/gaps.json (ranked gaps, confidence breakdowns, evidence IDs)
and output/report.md. Every stage is resumable — rerun run_all.py after any
crash and it continues where it left off; from this repo (committed data/)
it re-spends nothing.
Verify any evidence ID in 5 seconds: grep R-00412 data/reviews.jsonl.
A zero-dependency evidence console over the committed artifacts — ranked gaps,
confidence component breakdowns, the skeptic's confirmed/refuted trail, and a
resolver that turns any R- / GH- / S- / C- / CAND- ID (or free-text
search) into the raw record:
python3 -m http.server 8010Then open http://localhost:8010/frontend/. Single static file
(frontend/index.html), no build step — it reads output/gaps.json and
data/*.jsonl directly, so it always shows exactly what the pipeline shipped.
python3 run_all.py --refresh browser-scrapes the newest Play Store reviews
(s1b, needs python3 -m playwright install chromium), refreshes GitHub issues,
extracts only the new reviews, and regenerates the report. Full re-inference
(s5–s7a) triggers only when ≥200 new signals arrive. Old IDs are never
renumbered — evidence traces stay valid forever.