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 分