{"adoption": {"forks": 111, "observed_at": "2026-08-28T04:03:51.028553+00:00", "stars": 1169}, "canonical_url": "https://ross.abutalabs.com/products/online-judge-tools-oj", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Tools for various online judges. Downloading sample cases, generating additional test cases, testing your code, and submitting it.", "domain": ["developer-tools", "crawlers"], "enriched": true, "function": ["cli", "web-scraping", "testing", "workflow-automation", "developer-tools"], "health_score": 26, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["online-judge-tools/oj"], "name": "online-judge-tools/oj", "platform": ["cli", "python", "cross-platform"], "pushed_at": "2024-05-03T09:59:05+00:00", "repo": "online-judge-tools/oj", "stars": 1169, "tags": ["competitive-programming", "online-judge", "atcoder", "codeforces", "sample-cases", "test-generation", "code-submission", "command-line", "automation"], "topics": ["competitive-programming", "automation", "scraping", "atcoder", "codeforces", "programming-contests", "testing"], "urls": [], "use_cases": ["download sample test cases from atcoder or codeforces", "test my competitive programming solution against sample cases", "automatically submit code to an online judge from the terminal", "generate additional test inputs for stress testing", "scrape problem statements and test data from online judges", "run reactive problem testing locally"], "what_it_is": "A command-line tool that automates solving problems on online judges like AtCoder, Codeforces, and HackerRank. It downloads sample and system test cases, logs in, tests your code, generates test inputs/outputs, and submits solutions.", "when_to_avoid": ["you need a GUI or IDE-integrated judge client", "you want to bypass judge rate limits or terms of service with heavy scraping", "you need a general-purpose web scraping framework"], "when_to_choose": ["you solve competitive programming problems and want to automate the download-test-submit loop", "you need stress testing with generated inputs against a reference implementation", "you work across multiple judges (AtCoder, Codeforces, HackerRank) from one CLI"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/online-judge-tools-oj", "repo": "online-judge-tools/oj", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.028553+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:28:42.949916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e045fc88bf19b500cf3720053b9e150524e8ce0db98d1ffa31e210039c3e6b15", "fetched_at": "2026-08-28T04:03:51.028553+00:00", "kind": "readme", "missing": false, "url": "https://github.com/online-judge-tools/oj"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3527, "days_push": 852, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}