job-radar:用自建 AI 给职位打分并推送到 Telegram 的开源求职工具
Joevonlong/job-radar
开源项目 job-radar 聚合招聘网站、公司招聘页和职位提醒邮件中的新岗位,去重后按城市、薪资下限、合同类型等自定义规则过滤,并用你自己的 AI(claude / codex 订阅或 API key)为每个职位打 0–100 分,附评分理由、能力差距和招聘广告中的薪资。
Tell it what you want. It reads every job, scores it for you, and sends the good ones to your phone.
Website · Docs · Quick start · FAQ · 中文
![]() Every source, one feed |
![]() Your rules, not ours |
![]() It reads every job for you |
![]() The good ones come to you |
What it does
- Collects new postings from the job boards, company career pages and job-alert emails you pick, and merges duplicates.
- Filters by your cities, salary floor, contract types and dealbreakers, written in your own words.
- Scores every job 0–100 with your own AI (a
claude/codexsubscription or an API key), with reasons, gaps and the salary quoted from the ad. - Pushes the good ones to your own Telegram bot, with buttons that move them on your application board.
- Stays yours: self-hosted, open source, no accounts, no telemetry. It does not apply for you.
More: features and screenshots.
Quick start
You need Docker with Compose 2.24 or newer, Node 22 with pnpm 11 and git, on macOS or Linux (Windows: inside WSL2, see platform notes).
git clone https://github.com/Joevonlong/job-radar.git cd job-radar git checkout v2.0.1 # the latest release; main is the development branch cp .env.example .env # every value has a working default; secrets go here later
On Linux, let the containers run as your user before the first start (macOS skips this):
sed -i.bak -e "s/^PUID=.*/PUID=$(id -u)/" -e "s/^PGID=.*/PGID=$(id -g)/" .env && rm .env.bak mkdir -p data/config data/profile data/backups data/exports data/logs .auth
Sign in to your AI on this machine (claude then /login, or codex login). Then start the stack and the AI worker
(leave it running):
docker compose up -d --build # db, web, runner, jobspy; the first build takes a few minutes pnpm install pnpm ai-worker # or scripts/ops/install-ai-worker.sh to run it as a background service
Open http://127.0.0.1:3000. The setup wizard asks eight short questions; nothing is collected until you finish it. No browser on this machine? Run the same wizard in the terminal:
pnpm run setup # all eight steps pnpm run setup --step telegram # Telegram pushes, once you have created your bot pnpm run doctor # checks everything and says what to fix
The full walkthrough, with updating, backups, phone access and troubleshooting: docs/installation.md.
Documentation
- Features and screenshots: what it does, how it works
- Installation and first-run setup
- Configuration: where your settings live
- AI options: subscription CLI or API key, and what it costs
- Privacy: what is stored and what leaves your machine
- FAQ · Roadmap · All guides
Contributing
Issues and pull requests are welcome: see CONTRIBUTING.md and docs/development.md.
Every commit needs a DCO sign-off (git commit -s). Questions go to
Discussions; the Code of Conduct applies.
Security
Report vulnerabilities privately as described in SECURITY.md. The dashboard listens on 127.0.0.1
only; before anyone else can reach it, set a password with pnpm web:password
(web access).
Scraping and terms of service
Sources that scrape a site are off in a new install and ask for your confirmation; you are responsible for respecting each site's terms. Not affiliated with any job board; trademarks belong to their owners. Details and disclaimer: docs/sources.md, NOTICE.
License
AGPL-3.0-only. Running a modified version as a service for others means offering them your source; for companies and teams see docs/commercial-use.md. Built on Next.js, PostgreSQL, Drizzle ORM and python-jobspy.
来源:GitHub · github.com




