AI OPPORTUNITY SCOUT
Trending Repo Scout
Reads GitHub trending every morning, scores each repo with Claude on virality, buildability, and pay-readiness, and posts a ranked shortlist to Slack. No server, no API key, no database.
Overview
GitHub's trending page tells you what is popular. It does not tell you what is worth building on. Trending Repo Scout closes that gap: it pulls the trending list, enriches every candidate with its README and top open issues, and asks Claude the question a star count cannot answer — is anyone here asking to pay for a hosted version of this?
The result lands in Slack each morning as a ranked shortlist with the model's reasoning attached, and every observation feeds a public dashboard that tracks each repo's star trajectory over time. The whole thing runs on scheduled jobs and committed JSON files — there is no server to maintain and no database to pay for.
Virality — 30%
Genuine momentum, or a one-day spike?
Buildability — 30%
Could a small team realistically wrap this?
Pay-readiness — 40%
Are people asking for hosting, auth, support — the money signal?
Key Features
Claude reads each repo's README and top 8 open issues, then scores virality, buildability, and pay-readiness 0-10 with cited reasoning and a concrete wrapper angle. The rubric explicitly tells it not to be impressed by star counts.
Every fetch records total stars to a committed history file, deriving trending streaks and 7-day and 30-day growth. A snapshot cannot tell a flash from a climb; 14 days of observations can.
Scoring runs inside a Claude cloud routine under a subscription rather than the metered Messages API. The scheduled path holds no LLM credentials at all — the handoff between halves is a JSON file in git.
The composite score is computed in Python from fixed weights, not by the model, so ranking stays deterministic. Only repos above the threshold reach the digest — the rest are scored and silently dropped.
A static page rendered from the history file: every tracked repo as a glowing light curve, sortable by AI score, with the axis breakdown and reasoning behind a click. Served from a Cloudflare Worker.
A repo that makes the digest is suppressed for 14 days, so a long-running trend does not spam the same shortlist daily. The cooldown log is committed back each run — state without a database.
Architecture
The interesting constraint here was not the AI — it was that the two halves of the pipeline need opposite things. Fetching needs open internet; the Claude cloud routine's sandbox does not have it, because its network egress is scoped to the repository. Scoring needs a language model; doing that with an API key means paying per token. Splitting the pipeline at the LLM boundary gives each half exactly what it already has, and the handoff is just a file in git.
GitHub Actions (open internet)
- Scrapes the trending page for the daily, weekly, or monthly window
- Enriches each repo via the GitHub API: metadata, README, top issues
- Updates trend history and applies the cooldown filter
- Commits the handoff file, then deploys the rebuilt dashboard
Claude Cloud Routine (subscription)
- Reads the committed candidates file — no network fetch required
- Scores every candidate natively against the rubric — no API key
- Ranks by weighted composite and posts the digest to Slack via MCP
- Pushes the cooldown log back, which triggers a dashboard redeploy
Module Layout
scout/fetch_trending.py scrape github.com/trending (daily/weekly/monthly)
scout/enrich.py GitHub API: repo metadata, README, top issues
scout/history.py trend memory: streaks, 7d/30d growth, acceleration
scout/score.py Claude API scoring (optional API-key path)
scout/notify_slack.py format + post the ranked shortlist
prepare.py fetch + enrich + cooldown filter -> candidates.<period>.json
publish.py composite score + rank + Slack + cooldown log
build_dashboard.py render the public star-trajectory dashboardHow It Works
- 1
Scrape Trending
Parses the public trending HTML for the period, pulling roughly 25 repos with their period star gain
- 2
Record History
Logs total stars for the full list before filtering, so streaks stay accurate even for suppressed repos
- 3
Enrich
Fetches license, topics, README excerpt, and the top 8 open issues by reactions — where pay-readiness signals actually live
- 4
Filter & Hand Off
Drops repos still in cooldown, then commits a period-specific candidates file so daily, weekly, and monthly never collide
- 5
Score
Claude reads each candidate with its trend context and returns three axis scores, reasoning, and a wrapper angle
- 6
Rank & Publish
Python computes the weighted composite, drops anything below the threshold, and posts the top shortlist to Slack
- 7
Persist & Deploy
Scores and cooldown log are committed back; that push triggers a Cloudflare deploy, so the live dashboard is fresh within a minute
Tuning
WEIGHTS = {
"viral": 0.3,
"buildability": 0.3,
"pay_readiness": 0.4, # the actual money signal
}
MAX_REPOS_PER_FETCH = 25
TOP_ISSUES_PER_REPO = 8
MIN_SCORE_THRESHOLD = 4.0
DIGEST_SIZE = 8
COOLDOWN_DAYS = 14- Digest too noisy?MIN_SCORE_THRESHOLD
- Same repos repeating?COOLDOWN_DAYS
- Care less about hype?WEIGHTS
- Only want Python repos?LANGUAGES
- Sharper reasoning?CLAUDE_MODEL
Retention is capped at 60 days and the trend window at 14, which keeps the committed history file small enough to live in git indefinitely.
The Live Dashboard
The dashboard is designed as a sky-survey log: each repo is a tracked celestial object, and its star history is a glowing light curve colored by momentum. It renders as a static page from the committed history file, so there is no backend and nothing to secure — only the built page is exposed.
Rows sort by AI score by default. Click a scored row to expand the axis breakdown, the model's reasoning, and the suggested wrapper angle.
Open the dashboardFreshness
Stars and streaks: same-day
Rebuilt and deployed by the fetch job every run
Scores: within about a minute
The scoring routine's push triggers a deploy workflow — event-driven, not a cron guessing when scoring finished
Deploys are explicit
A wrangler step in the workflow, because the platform's own Git integration proved unreliable
Frequently Asked Questions
Related Projects
Notes & Credits
Source
The source repository is private — this is a personal research tool rather than a distributable package. The dashboard it produces is public, and the architecture is documented above in full.
Author: Avinash Sangle
Website: avinashsangle.com
Year: 2026
Built With
- • Python — pipeline and scoring orchestration
- • BeautifulSoup — trending page parsing
- • GitHub Actions — scheduled fetch, enrich, and deploy
- • Claude — three-axis repo scoring
- • Slack — ranked digest delivery via MCP
- • Cloudflare Workers — static dashboard hosting
- • Built with Claude Code — AI-assisted development
See What's Trending Right Now
The dashboard updates every morning with fresh star trajectories and AI scores for the repos worth watching.