Zum Inhalt springen
MCP ThesaurusMCP Thesaurus

autopilot jobhunt

CommunityIncomplete39/100Beanspruchen

pypi autopilot-jobhuntstdioMITupdated 1mo ago

Your AI job agent. Finds, scores, and drafts applications β€” while you sleep.

QuellcodeWebsite206

Was kannst du mit autopilot jobhunt machen?

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.

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

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

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 2026
5 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 goal
Score: 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 background
Score: 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

pip install autopilot-jobhunt        # or: pip install 'autopilot-jobhunt[mcp]' for Claude Code
mkdir my-job-hunt && cd my-job-hunt
autopilot init                       # creates config.json, companies.json, resume/, .env
# Fill in config.json (API keys + your profile) and resume/YOUR_RESUME.md, then:
autopilot scan
git clone https://github.com/tarunlnmiit/autopilot-jobhunt.git
cd autopilot-jobhunt
pip install -e '.'               # standalone CLI
# pip install -e '.[mcp]'       # + Claude Code MCP integration
cp 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/:

Guide Covers
Install pip / from source / autopilot init scaffolding
LLM providers OpenRouter fallback chain, Claude CLI (keyless), Anthropic API
API keys TinyFish + OpenRouter keys, where each goes
Companies & scanning companies.json, discovery + scoring, scan pacing
Integrations Telegram notifications
MCP server & Skill Drive the hunt from Claude Code
Config & scoring Candidate profile, min_score, top_n
Troubleshooting Every error we've hit, and the fix
Testing checklist Reproducible independent verification

API keys needed

Service Cost Required Where to get it
TinyFish Free β€” no credit card Always agent.tinyfish.ai
OpenRouter Free β€” 4-model fallback chain Unless using Claude CLI / Anthropic openrouter.ai
Telegram Free Optional @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

git clone https://github.com/tarunlnmiit/autopilot-jobhunt.git
cd autopilot-jobhunt
pip install -e '.[mcp]'

Step 2: Register with Claude Code

Option A β€” one command:

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:

{
  "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:

{
  "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:

Score Meaning
80–100 Near-perfect fit β€” apply immediately
60–79 Good fit β€” worth applying
40–59 Partial fit β€” apply if pipeline is thin
< 40 Poor 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:

Model Role
meta-llama/llama-3.3-70b-instruct:free Primary β€” best quality
nvidia/nemotron-3-super-120b-a12b:free Fallback 1 β€” 120B
google/gemma-4-31b-it:free Fallback 2
qwen/qwen3-coder:free Fallback 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:

"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:

pip install 'autopilot-jobhunt[claude]'

In config.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.