Autopilot Jobhunt

io.github.tarunlnmiit由 GitHub 账号 tarunlnmiit 发布v0.4.3更新于 Oct 24, 2026

Agentic job hunt: scan careers pages, score against your resume, draft applications. Never applies.

概览

AI 生成的概览

本地 MCP 服务器,用于自动化求职:扫描公司招聘页、按简历给职位打分,并起草申请材料。

可以做什么
  • 扫描已配置公司的招聘页面,发现新职位
  • 按简历为每个职位打 0-100 分并说明匹配理由
  • 为选定职位起草定制简历要点和求职信
  • 按日期或分数筛选并导出职位为 CSV
  • 把最匹配的职位通过 Telegram 推送通知
适用场景
适合需要同时关注大量公司招聘页的求职者,让助手发现并排序新职位、对照简历评估匹配度,再生成由你本人提交的申请草稿。它只起草,不会代为投递。
运行要求
以 Python 包在本地运行(pip 安装,MCP 模式需安装 mcp 附加组件),通过 python -m job_hunt.mcp_server 启动。工作目录中需有 config.json、companies.json 和简历文件。API 密钥通过环境变量传入:TINYFISH_API_KEY 用于职位发现,OPENROUTER_API_KEY 用于评分(改用 Claude CLI 或 Anthropic 密钥时不需要),以及可选的 TELEGRAM_TOKEN 和 TELEGRAM_CHAT_ID。
安装前请注意
简历、个人资料和职位数据会发送给第三方服务:TinyFish 用于职位发现,LLM 提供方(OpenRouter、Anthropic 或本地 Claude CLI 会话)用于评分和起草。TINYFISH_API_KEY、OPENROUTER_API_KEY、TELEGRAM_TOKEN、TELEGRAM_CHAT_ID 等密钥会保存在配置或环境变量中。使用 Claude CLI 作为后端会消耗订阅的速率额度。草稿为生成文本,提交前请逐份审阅。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Autopilot Jobhunt,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

autopilot-jobhunt

Your AI job agent. Finds, scores, and drafts applications — while you sleep.

Scans 130+ company careers pages nightly → scores every role against your resume with an LLM → sends you the top matches on Telegram → drafts a tailored resume + cover letter on demand.

🔒 Drafts only — never applies. You review every draft and submit applications yourself. See PRIVACY.md for exactly what data leaves your machine.

[autopilot-jobhunt demo — nightly scan, LLM scoring, Telegram alert, drafted application]

[CI] [codecov] [PyPI version] [PyPI downloads] [Python 3.11+] [License: MIT] [GitHub Stars] [autopilot-jobhunt MCP server] [Listed on CodeGuilds] [MCPVault: claimed]

Seen by 90K+ people — the Instagram reel that launched it.

Published on PyPI and listed on the Official MCP Registry (io.github.tarunlnmiit/autopilot-jobhunt), Glama (Quality A), and Smithery (MCPB bundle).

📖 Full setup guide with Claude Code MCP integration → SETUP.md

⭐ Star this repo if it helps you land a job

This tool is free, open source, and runs entirely on your machine — no subscription, no credit card. The only "payment" I ask: if it surfaces a role you apply to (or land), drop a star. It takes one click, costs you nothing, and it's the single thing that pushes the project in front of the next person grinding through 130 careers pages by hand. ⭐ Star it here →


How it works

mermaid
flowchart LR    A["🌐 130+ Careers Pages"] -->|TinyFish API| B["Job Discovery"]    B --> C["LLM Batch Scorer\n(0–100 fit score)"]    C -->|score ≥ min| D["📱 Telegram Alert\nTop N matches"]    C -->|on demand| E["✉️ Cover Letter\n+ Resume Bullets"]    C --> F["📊 CSV Export"]

The scoring prompt uses your actual resume — not keywords. The LLM reads your full work history and the job description, then explains in one sentence why you fit or don't. No more guessing.

What a scan result looks like

Scanning Mistral AI...  3 new job URLs. Fetching details...  Scoring jobs...  Saved 2 jobs from Mistral AI
Scanning HuggingFace...  5 new job URLs. Fetching details...  Scoring jobs...  Saved 3 jobs from HuggingFace
Scanning Stripe...  No new jobs found...Scan complete.Top 5 sent to Telegram.

What the Telegram notification looks like

Job Hunt — 06 Jun 20265 matches found
#1 | Mistral AI | Applied AI Engineer, ML Infrastructure📍 Paris/London/Marseille, On-site🔧 Python, LLMs, RAG, AWS, MLOps, DevOps✅ Role combines applied AI + ML infrastructure in EU, aligns with MLOps/RAG expertise and relocation goalScore: 85/100  →  https://jobs.lever.co/mistral/...
#2 | HuggingFace | Staff ML Engineer📍 Remote (EU)🔧 Python, PyTorch, Transformers, CUDA, MLOps✅ Open-source ML role matches deep learning and distributed training backgroundScore: 80/100  →  https://apply.workable.com/huggingface/...
...
Reply "apply to #N" to draft a tailored application.

What it does

Every night at 2:30 AM:  ┌─────────────────────────────────────────────────────────┐  │  Scans careers pages  →  Scores with LLM  →  Notifies  │  │       (130+ cos)           (0–100 fit)       (Telegram) │  └─────────────────────────────────────────────────────────┘
On demand:  autopilot draft 1  →  tailored resume + cover letter in 60s

Usage modes

Mode 1: Standalone CLI (no Claude Code required)  pip install autopilot-jobhunt  autopilot scan / autopilot draft 1 / autopilot export
Mode 2: Claude Code MCP (control via natural language)  pip install 'autopilot-jobhunt[mcp]'  claude mcp add autopilot-jobhunt ...  → "Scan for ML jobs" / "Draft application for job #2"

Both modes use the same config and produce the same output.

Quick start

Option A — pip install

bash
pip install autopilot-jobhunt        # or: pip install 'autopilot-jobhunt[mcp]' for Claude Codemkdir my-job-hunt && cd my-job-huntautopilot init                       # creates config.json, companies.json, resume/, .env# Fill in config.json (API keys + your profile) and resume/YOUR_RESUME.md, then:autopilot scan

Option B — clone (recommended if you want to customize companies or contribute)

bash
git clone https://github.com/tarunlnmiit/autopilot-jobhunt.gitcd autopilot-jobhuntpip install -e '.'               # standalone CLI# pip install -e '.[mcp]'       # + Claude Code MCP integrationcp config.example.json config.json && cp .env.example .env# Fill in your API keys and candidate profile, then:autopilot scan

For the full walkthrough — API key setup, Claude Code MCP registration, rate limit details, and troubleshooting — see SETUP.md.

📚 Documentation

Step-by-step guides live in docs/:

GuideCovers
Installpip / from source / autopilot init scaffolding
LLM providersOpenRouter fallback chain, Claude CLI (keyless), Anthropic API
API keysTinyFish + OpenRouter keys, where each goes
Companies & scanningcompanies.json, discovery + scoring, scan pacing
IntegrationsTelegram notifications
MCP server & SkillDrive the hunt from Claude Code
Config & scoringCandidate profile, min_score, top_n
TroubleshootingEvery error we've hit, and the fix
Testing checklistReproducible independent verification

API keys needed

ServiceCostRequiredWhere to get it
TinyFishFree — no credit cardAlwaysagent.tinyfish.ai
OpenRouterFree — 4-model fallback chainUnless using Claude CLI / Anthropicopenrouter.ai
TelegramFreeOptional@BotFather on Telegram

Claude Code / MCP integration

Use autopilot-jobhunt as an MCP server inside Claude Code (CLI) or Claude Desktop.

Step 1: Install with MCP support

bash
git clone https://github.com/tarunlnmiit/autopilot-jobhunt.gitcd autopilot-jobhuntpip install -e '.[mcp]'

Step 2: Register with Claude Code

Option A — one command:

bash
claude mcp add autopilot-jobhunt \  --env TINYFISH_API_KEY=your_key \  --env OPENROUTER_API_KEY=your_key \  --env TELEGRAM_TOKEN=your_token \  --env TELEGRAM_CHAT_ID=your_chat_id \  -- python -m job_hunt.mcp_server

Option B — edit ~/.claude.json manually:

json
{  "mcpServers": {    "autopilot-jobhunt": {      "command": "python",      "args": ["-m", "job_hunt.mcp_server"],      "cwd": "/absolute/path/to/autopilot-jobhunt",      "env": {        "TINYFISH_API_KEY": "your_key",        "OPENROUTER_API_KEY": "your_key",        "TELEGRAM_TOKEN": "your_token",        "TELEGRAM_CHAT_ID": "your_chat_id"      }    }  }}

Note: cwd must point to the cloned repo — the server reads config.json and companies.json from there.

Step 3: Use it

In any Claude Code session:

"Scan for ML jobs""Draft an application for job #2""Export jobs from the last 7 days with score above 70"

Claude Desktop

Same JSON block — add it under mcpServers in Claude Desktop → Settings → Developer.


Customize your target companies

Edit companies.json. Each entry needs:

json
{  "name": "Stripe",  "careers_url": "https://stripe.com/jobs",  "search_domain": "stripe.com",  "location": "Remote / San Francisco, CA",  "region": "Remote"}

The repo ships with 130+ pre-configured EU, NZ, and remote-friendly tech companies. Add or remove as you like.


How scoring works

The LLM reads your full resume + the full job description and assigns a score 0–100:

ScoreMeaning
80–100Near-perfect fit — apply immediately
60–79Good fit — worth applying
40–59Partial fit — apply if pipeline is thin
< 40Poor fit — skipped

Set min_score in config to filter. Default: 60.


Project structure

autopilot-jobhunt/├── job_hunt/│   ├── main.py          # CLI entry point│   ├── scanner.py       # Job discovery + LLM scoring│   ├── drafter.py       # Resume tailoring + cover letter│   ├── notifier.py      # Telegram notifications│   ├── llm_utils.py     # OpenRouter wrapper with fallback│   ├── tools.py         # Protocol-agnostic tool layer│   └── mcp_server.py    # MCP server (Claude/AI assistant integration)├── demo/                # Demo scripts for recording GIF├── resume/              # Put your resume here (gitignored)├── state/               # Scan state (gitignored)├── output/              # Generated applications (gitignored)├── companies.json       # 130+ target companies├── config.example.json  # Config template (copy to config.json — gitignored)└── config.json          # Your config (gitignored — never committed)

LLM options

Default: OpenRouter (free)

Uses a 4-model fallback chain — all free, no credit card needed:

ModelRole
meta-llama/llama-3.3-70b-instruct:freePrimary — best quality
nvidia/nemotron-3-super-120b-a12b:freeFallback 1 — 120B
google/gemma-4-31b-it:freeFallback 2
qwen/qwen3-coder:freeFallback 3

If one model hits its daily free-tier quota, the tool automatically tries the next. Zero LLM cost by default.

Alternative A: Claude Code CLI (no API key needed)

If you have Claude Code installed and authenticated, you can use it as the LLM backend — no separate API key required:

In config.json:

json
"llm_provider": "claude_cli"

Or via environment variable: LLM_PROVIDER=claude_cli autopilot scan

Optionally set a model: "claude_cli_model": "sonnet" (or "opus", "haiku", empty = Claude's default).

Note: Requires the claude binary in your PATH. Verify with claude --print "hi" first. The MCP server and cron jobs must run in an environment where your claude auth session is active.

Rate-limit note: Each call loads your global Claude Code context (~25–30k tokens). A nightly scan (5–15 LLM calls) burns significantly against your subscription's 7-day rate limit. Prefer OpenRouter for nightly automation; use Claude CLI for occasional on-demand drafts.

Alternative B: Anthropic API

If you have an Anthropic API key:

bash
pip install 'autopilot-jobhunt[claude]'

In config.json:

json
"llm_provider": "anthropic","anthropic_api_key": "sk-ant-...","anthropic_model": "claude-haiku-4-5-20251001"

claude-haiku-4-5-20251001 is fast and cheap; claude-sonnet-4-6 gives higher quality scores. A nightly scan uses ~5–15 LLM calls total (jobs scored in batches of 10).


Contributing

See CONTRIBUTING.md. PRs welcome for:

  • Adding companies to companies.json
  • New ATS platform support (Rippling, Lever variants, Workday)
  • OpenAI / Gemini MCP adapters
  • Better scoring prompts

License

MIT — see LICENSE.


Built by @tarunlnmiit. If this saved you hours of job searching, a ⭐ means a lot.

来源:README.md,提交 3b59877

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.4.3最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分