{"adoption": {"forks": 184, "observed_at": "2026-08-28T04:06:38.872602+00:00", "stars": 2341}, "canonical_url": "https://ross.abutalabs.com/products/geekgeekrun", "card": {"archived": false, "artifact_type": "application", "description": "牛人快跑 - GeekGeekRun，求职找工作自动化工具，基于 Puppeteer、Electron。界面友好，简单易用！开源，免费！快速海投、自动开聊、已读不回提醒、职位信息抓取、不合适职位标记、僵尸职位清理；让你即刻变身成为一台冇得感情的求职机器🤖，找工作不内耗。宝宝不用动，妈妈全自动~祝你收获好Offer！", "domain": ["hr", "developer-tools", "web-development"], "enriched": true, "function": ["web-scraping", "workflow-automation", "chatbot", "llm-inference", "gui"], "health_score": 93, "homepage": null, "language": "Vue", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["geekgeekrun/geekgeekrun"], "name": "geekgeekrun/geekgeekrun", "platform": ["cross-platform"], "pushed_at": "2026-07-06T01:09:57+00:00", "repo": "geekgeekrun/geekgeekrun", "stars": 2341, "tags": ["job-search", "rpa", "boss-zhipin", "puppeteer", "auto-apply", "recruiting-automation", "sqlite", "typeorm", "automation", "desktop", "electron", "nodejs"], "topics": ["automatic-control", "bosszhipin", "findjob", "jobsearch", "jobseeker", "puppeteer", "electron", "sqlite", "typeorm", "rpa"], "urls": [], "use_cases": ["automatically mass-apply to jobs on boss zhipin", "auto start chats with recruiters matching my job preferences", "remind recruiters who read my message but never replied", "filter out unsuitable job postings automatically", "clean up zombie/stale job listings while job hunting", "scrape job listing details from boss zhipin", "use an llm to write follow-up messages to recruiters"], "what_it_is": "GeekGeekRun is a free, open-source desktop application (built on Electron, Vue, Puppeteer, SQLite/TypeORM) that automates job hunting on the BOSS Zhipin recruiting platform. It auto-initiates chats with matching recruiters, follows up on read-but-unreplied messages, filters and marks unsuitable or stale job postings, and can use LLMs to generate follow-up messages.", "when_to_avoid": ["you need job automation on platforms other than BOSS Zhipin (LinkedIn, Indeed, etc.)", "you need a headless server-side tool or API rather than an interactive desktop app", "automated outreach may violate the platform's terms of service and you need strict compliance", "you require a permissively licensed project - the repository has no declared license"], "when_to_choose": ["you are a job seeker in China actively using BOSS Zhipin and want to automate repetitive outreach", "you want a friendly GUI rather than writing browser automation scripts yourself", "you want automatic filtering, marking, and follow-up of recruiter conversations with optional LLM-generated messages"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/geekgeekrun", "repo": "geekgeekrun/geekgeekrun", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "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:06:38.872602+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:38.872602+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:37:22.801524+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4e9148aee8c6353646091a9c0b6c3f766487b0465c0ed4326a3bd2e7529a001", "fetched_at": "2026-08-28T04:06:38.872602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geekgeekrun/geekgeekrun"}, {"content_hash": "b55e33525e682ed60209a44d2943539dd146daa0846151644d997777fd80b9f6", "fetched_at": "2026-08-29T10:18:03.060767+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/geekgeekrun"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 46, "rhythm": 82}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 648, "days_push": 59, "days_rel": 123, "gap_med": 15, "n_releases_24m": 24}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}