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.

Runs DailyZero API Key3-Axis AI ScoringLive Dashboard

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.

What It Scores
Three axes, weighted composite

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

Skeptical AI Scoring

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.

Trend Memory

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.

No API Key, No Server

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.

Ranked Slack Digest

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.

Public Trend Dashboard

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.

Cooldown & Dedupe

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

text
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 dashboard

How It Works

One Morning Run, End to End
Three periods run on staggered schedules: daily, weekly, and monthly
  1. 1

    Scrape Trending

    Parses the public trending HTML for the period, pulling roughly 25 repos with their period star gain

  2. 2

    Record History

    Logs total stars for the full list before filtering, so streaks stay accurate even for suppressed repos

  3. 3

    Enrich

    Fetches license, topics, README excerpt, and the top 8 open issues by reactions — where pay-readiness signals actually live

  4. 4

    Filter & Hand Off

    Drops repos still in cooldown, then commits a period-specific candidates file so daily, weekly, and monthly never collide

  5. 5

    Score

    Claude reads each candidate with its trend context and returns three axis scores, reasoning, and a wrapper angle

  6. 6

    Rank & Publish

    Python computes the weighted composite, drops anything below the threshold, and posts the top shortlist to Slack

  7. 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

Everything Worth Changing Lives in One File
No code changes needed elsewhere
python
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
Knobs
  • 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 dashboard

Freshness

  • 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

AI Automation
Reddit Comment Engagement Agent
Compliance-first Reddit engagement with AI quality scoring and human approval
Production SaaS
Social Media Auto-Poster
AI-powered platform with automated posting and multi-platform support
AI Integration
Jenkins MCP Server
Enable AI agents to interact with Jenkins through Model Context Protocol

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.