This document describes how projects are discovered, reviewed, compared, and kept current. Back to the comparison.
Every comparison cell uses a public evidence set declared before evaluation; private sources and maintainer-only knowledge are excluded.
Maturity is calculated mechanically, in this order:
- archived repositories are
Legacy; - repositories with no releases or less than three months of history are
Experimental; - repositories older than twelve months, with at least one release and a
commit in the last six months, are
Mature; and - all others are
Active.
Preview is intentionally not used because it has no objective equivalent in
the stored GitHub data.
A weekly workflow refreshes project metrics and checks source links. Metric dates change only when a stored value or its source changes. CI rejects generated files that do not match their data sources.
Each column is one discovery corpus. Starting another run adds a column instead of rewriting the earlier funnel. Candidate membership is recorded per run, and each human decision identifies the run against which it was made.
| Metric | 2026-07-30 (active) |
|---|---|
| Filters evaluated | 2026-07-30 |
| GitHub topics | 3 |
| Full-text queries | 6 |
| Repositories discovered | 1,073 |
| Passed mechanical filters | 154 |
| Passed content filters | 124 |
| Pending review | 70 |
| Human decisions | 54 |
| Pending verification | 0 |
| Included | 20 |
| Table-ready | 4 |
| Excluded | 34 |
| Legacy | 0 |
| Known-positive search recall | 7 / 8 |
| Known-positive filter recall | 8 / 8 |
Human review proceeds by stars descending. The configured stop rule activates after 50 consecutive resolved decisions without an inclusion; pending verification neither advances nor resets that counter.
Archived repositories are removed from the automatic review queue. A legacy classification therefore requires an explicit manual review or seed.
Counts overlap because one repository may match several discovery sources.
| Metric | 2026-07-30 (active) |
|---|---|
topic:rank-tracking |
39 |
topic:keyword-tracker |
9 |
topic:rank-tracker |
49 |
query:rank-tracking-phrases |
877 |
query:search-position-phrases |
73 |
query:seo-tools-rank-tracker-readme |
58 |
query:seo-tools-rank-tracking-readme |
58 |
query:self-hosted-seo-rank-tracker-readme |
23 |
query:keyword-position-checker-readme |
28 |
seed:seopanel/Seo-Panel |
1 |
Explicit seeds are stored with their reason in each discovery-run snapshot and are excluded from search recall.
| Metric | 2026-07-30 (active) |
|---|---|
| Automatically filtered | 949 |
| Stopped at mechanical stage | 919 |
| No OSI license detected | 871 |
gsc-only |
3 |
legacy-unmaintained |
202 |
no-osi-license-detected |
717 |
no-rank-tracking-signal |
27 |
Mechanical filters use GitHub's archived status, detected license, and last
push date. A repository is stale after 24 months without a push. No OSI license detected means GitHub did not identify an OSI-approved license; it
does not prove that no license exists.
Content filters use explicit, versioned patterns over repository descriptions and READMEs. Repository searches are date-partitioned when GitHub reports more than 1,000 results.