Open source resume builder that refuses to lie for you ResumeHQ, an open-source resume builder available as a Claude Code plugin, Codex plugin, or standalone web app, refuses to fabricate experience and declines to tailor resumes for genuine job mismatches, using deterministic scoring engines and a fail-closed pipeline with an independent auditor. It discovers matching jobs, scores fit with ATS and HR simulations, and generates DOCX files, with a candidate-fit gate that cannot be bypassed. The tool publishes its own scoring failures in a benchmarks file and works with Claude Code, Codex, and claude.ai. Every AI resume tool promises to "beat the ATS." This one has a harder rule: it never invents experience — and when a job is a genuine mismatch, it declines to tailor at all and tells you why. Finds jobs, scores your fit with deterministic engines not LLM vibes , tailors through a fail-closed pipeline where an independent auditor can veto the writer, and publishes its own scoring failures /jananthan30/Resume-Builder/blob/master/BENCHMARKS.md . Works as a Claude Code https://docs.anthropic.com/en/docs/claude-code plugin, Codex plugin, or standalone web app. Upload a resume → paste the job posting → ATS + recruiter scores with fixes, in under 30 seconds. Try it free. Most resume tools only score the resume you bring to them. ResumeHQ goes further: | Feature | Jobscan | Rezi | Teal | ResumeHQ | |---|---|---|---|---| | ATS keyword scoring | ✅ | ✅ | ✅ | ✅ | | HR / recruiter simulation | ❌ | ❌ | ❌ | ✅ | | Discover matching jobs | ❌ | ❌ | ❌ | ✅ | | Score jobs against your resume | ❌ | ❌ | ❌ | ✅ | | Auto-tailor resume to JD | ✅ | ✅ | ❌ | ✅ | | ATS-compliant DOCX output | ❌ | ✅ | ❌ | ✅ | | Application tracker | ❌ | ❌ | ✅ | ✅ | | Works in Claude Code / claude.ai / Codex | ❌ | ❌ | ❌ | ✅ | | Open source | ❌ | ❌ | ❌ | ✅ | | Refuses to fabricate — declines to tailor genuine mismatches, audits every claim against your real resumeYou paste a job description or search for jobs . The system: Discovers matching jobs from live job boards — scored and ranked by fit with your resume Gates candidate fit — your master resume must clear the fit bar default 50 against the exact JD with zero hard knockouts before resume work begins. If you don't fit, it says so and stops — no tool that invents experience to close the gap is working for you Analyzes passing JDs — extracts keywords, required skills, domain, seniority level Tailors your master resume — rewrites bullets, reorders sections, matches terminology Scores the result with two independent advisory engines ATS + HR simulation Iterates automatically until scores hit targets ATS 75-85%, HR 70%+ Generates production-ready DOCX files resume + cover letter Tracks every application in an Excel spreadsheet The candidate-fit gate always runs first and cannot be bypassed by ATS/HR scores. After it passes, safe read/scoring work may run concurrently while authorization, DOCX generation, and tracker mutation remain ordered. Works with Claude Code CLI/IDE , Codex CLI/app/IDE , and claude.ai web/Projects . Step 1: Install the plugin Claude Code: /plugin marketplace add jananthan30/Resume-Builder /plugin install resume-builder Codex from a local checkout: codex plugin marketplace add . Then restart Codex and install Resume Builder from the Resume Builder Local marketplace. Step 2: Configure the runtime Claude Code exposes the plugin setup command: /resume-builder:setup This walks you through everything: - Checks if Python is installed tells you where to download it if not - Installs all dependencies automatically pip install -r requirements.txt - Creates your config.json with your name, email, phone, LinkedIn - Optionally links a Pro account for unlimited cloud scoring - Optionally sets up the LLM scorer Claude API key For Codex, install Python 3.10+, run python -m pip install -r requirements.txt , and create config.json with a valid master resume path . The installed Codex surface exposes the Resume Team as $resume-team ; it does not expose the Claude-style /resume-builder: command namespace. Step 3: Start building resumes Claude Code: /resume-builder:resume paste a job description here Codex: $resume-team paste a job description here $resume-team publishes an authorized, digest-verified resume.md draft. It does not by itself create a DOCX or complete an application package. Or find jobs first: /resume-builder:find-jobs Senior Data Scientist in New York | Command | What It Does | |---|---| /resume-builder:setup | One-time setup wizard installs Python deps, creates config, links Pro account | /resume-builder:job-fit JD | Deterministic master-vs-JD gate fit bar, default 50, and zero hard knockouts before tailoring | /resume-builder:resume JD | Full application: tailored resume + cover letter + scoring + DOCX + tracking | /resume-builder:tailor-resume JD | Resume only no cover letter | /resume-builder:cover-letter JD | Cover letter only | /resume-builder:find-jobs title location | Discover and score matching jobs from live job boards | /resume-builder:batch-resume | Process multiple job descriptions in parallel | /resume-builder:writing-coach file | Audit and rewrite resume bullets using 10 writing rules | /resume-builder:resume-team JD | Publish an authorized resume.md draft through the native Researcher → Writer → Auditor → Editor workflow | If running Claude Code locally from the cloned repo, use short names: /resume , /tailor-resume , /find-jobs , etc. In Codex, invoke $resume-team . Some Claude Code commands can provide prompt-only previews before setup. Production resume generation through /resume-builder:resume , /resume-builder:resume-team , or Codex $resume-team requires Python, config.json , the deterministic candidate-fit preflight, and the evidence, human-voice, and canonical-integrity audit helpers; those gates are never skipped. | Command | Works immediately? | With setup? | |---|---|---| /resume-builder:job-fit | No — requires the configured master and deterministic preflight | Digest-bound score, threshold, and hard-knockout decision | /resume-builder:resume | No — the native team and deterministic audits require setup | Full audited resume + automated ATS/HR scoring and DOCX output | /resume-builder:resume-team / $resume-team | No — requires macOS/Linux, the configured master resume, and Python audit helpers | Authorized, digest-verified resume.md draft; DOCX/tracker finalization is still pending | /resume-builder:cover-letter | Yes — the assistant writes the letter | + DOCX output | /resume-builder:writing-coach | Yes — full writing audit | Same | /resume-builder:find-jobs | Yes — shows results no score | + ATS/HR fit scoring per job | /resume-builder:setup | Yes — runs the setup wizard | N/A | | MCP scoring tools | No — needs Python | score resume , score ats , score hr , score with llm , explain score , extract text , discover jobs | After running /resume-builder:setup , the MCP scorer auto-starts and provides these tools that Claude Code or Codex can call natively: | Tool | What It Does | |---|---| score resume | Full ATS + HR analysis in one call recommended | score ats | ATS keyword + semantic scoring 8 components | score hr | HR recruiter simulation 6 factors + F-pattern | score with llm | LLM-augmented rubric scoring requires ANTHROPIC API KEY | explain score | Actionable improvement suggestions with missing keywords | extract text | Extract text from DOCX/PDF/MD/TXT files | discover jobs | Search live job boards and score each job against your resume | All listed MCP tools support cloud-first scoring — they try the cloud API first and fall back to local scoring automatically. Legacy direct rewrite endpoints or functions are not production-authorized tailoring paths. The capability-isolated native Resume Team is the sole production rewrite and draft-publication path. The /find-jobs command and discover jobs MCP tool search live job boards and rank results by how well each job matches your resume — answering "which jobs should I actually apply to?" with data. /resume-builder:find-jobs Senior Product Manager in San Francisco /resume-builder:find-jobs Data Scientist remote How it works: - Searches Adzuna 16 countries, salary data + Remotive remote jobs + JSearch aggregated boards incl. niche career centers; optional RapidAPI key - Pre-filters top 20 results by title relevance - Lightweight scores all 20 candidates keyword + phrase + BM25 — fast - Full ATS + HR scores top 10 finalists - Returns ranked list with scores, salary range, and apply links Sample output: Rank Title Company ATS HR Salary ──── ─────────────────────────── ───────────── ──── ──── ────────────── 1 Senior Data Scientist Pfizer 82% 74% $120k–$150k 2 Data Scientist II Goldman Sachs 79% 71% $110k–$140k 3 ML Engineer – NLP Microsoft 74% 68% $130k–$160k API keys required for job search: Adzuna free : Register at developer.adzuna.com https://developer.adzuna.com/ — add ADZUNA APP ID and ADZUNA APP KEY to your .env Remotive : No key needed remote jobs only, included automatically Simulates how Applicant Tracking Systems filter resumes before a human ever sees them. | Component | Weight | What It Measures | |---|---|---| | Phrase Match | 25% | Multi-word industry phrases 10.6x callback increase for exact matches | | Keyword Match | 20% | Lemmatized keywords with synonym expansion | | Weighted Industry Terms | 15% | Domain-specific terminology with recency decay | | Semantic Similarity | 10% | SBERT vector cosine similarity between resume and JD | | BM25 Score | 10% | Probabilistic relevance ranking BM25Plus | | Job Title Match | 10% | Exact JD title in resume header/summary | | Graph Centrality | 5% | Infers missing skills from related skills via NetworkX | | Skill Recency | 5% | Exponential decay — recent experience weighted higher | Additional checks: Hidden text detection, readability analysis Flesch-Kincaid Grade 10-12 optimal , format risk assessment. Simulates how a human recruiter evaluates a resume in their typical 7-second scan. | Factor | Weight | What It Measures | |---|---|---| | Experience Fit | 30% | Years of experience vs. JD requirements, Goldilocks zone | | Skills Match | 20% | Demonstrated skills action verbs vs. listed skills | | Career Trajectory | 20% | Title progression via linear regression slope | | Impact Signals | 20% | Metrics density + Bloom's Taxonomy verb power levels | | Competitive Edge | 10% | Company/university prestige signals | | F-Pattern Visual | +/-5pts | Eye-tracking compliance golden triangle, left-rail alignment | Risk penalties: Job hopping -8 to -15 pts , unexplained gaps -5 to -15 pts , recent instability. Claude-powered rubric evaluation that catches nuances the algorithmic scorers miss — tone, coherence, storytelling quality. | Tier | Price | What You Get | |---|---|---| Free | $0 | 5 cloud scores then automatic local scoring fallback for CLI/MCP users | Pro | $12/mo | Unlimited checks, full keyword gap + deep AI analysis, 10 AI rewrites/mo, 30 cover letters/mo | Ultra | $29/mo | Everything in Pro + 100 AI rewrites/mo, 1,000 cover letters/mo | Note for Claude Code / claude.ai users: Your Anthropic subscription already handles resume writing via Claude. The scorer server only does ATS + HR scoring, so Pro is all you need — you do not need Ultra. Sign up at getresumehq.com https://getresumehq.com . After signing up, run /resume-builder:setup to link your Pro account in one step. ┌─────────────────────────────────────────────────────────────┐ │ Claude Code / claude.ai │ │ /resume /tailor-resume /cover-letter /find-jobs /setup │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │ │ ATS │ │ HR │ │ LLM │ │ Writing │ │ │ │ Scorer │ │ Scorer │ │ Scorer │ │ Coach │ │ │ │ 8-comp │ │ 6-fact │ │ Claude │ │ 10 rules │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬─────┘ │ │ └──────────────┴─────────────┘ │ │ │ │ │ │ │ ┌───────┴───────┐ ┌──────┴─────┐ │ │ │ MCP Server │ │ DOCX │ │ │ │ FastMCP 3 │ │ Generator │ │ │ │ Cloud-first │ │ Workday │ │ │ └───────┬───────┘ └────────────┘ │ │ │ │ │ ┌─────────┴──────────┐ │ │ │ Cloud API │ │ │ │ resume-scorer │ │ │ │ .fly.dev │ │ │ │ JWT + API key │ │ │ └────────────────────┘ │ │ │ ├─────────────────────────────────────────────────────────────┤ │ Job Discovery: Adzuna + Remotive + JSearch → light score → │ │ full ATS+HR score → ranked results │ ├─────────────────────────────────────────────────────────────┤ │ Orchestration State state.json — Multi-Agent DAG │ │ Application Tracker Excel — Auto-updated per run │ └─────────────────────────────────────────────────────────────┘ The MCP server operates in thin client mode: it tries the cloud API first for scoring, and falls back to local scoring if the cloud is unavailable or not configured. LLM scoring always runs locally using your own API key BYOK . 1. /resume-builder:setup One-time setup install deps, create config, link Pro 2. Create your master resume YOUR MASTER RESUME.md with full work history 3. /resume-builder:find-jobs JD Optional — discover matching jobs scored by fit 4. /resume-builder:resume JD Paste a job description — get a full application 5. /resume-builder:writing-coach Optional — audit and improve writing quality Each resume command follows a gated workflow: Phase 0: Deterministic candidate-fit preflight against the configured master and exact JD fit bar, default 50; zero hard knockouts . Rejected JDs create no output. Phase 1: Read-only master/JD planning; prior tailored resumes are not inputs. Phase 2: Native Researcher → Writer → Auditor → bounded Editor workflow. Phase 3: Advisory ATS/HR scoring and cover-letter generation where requested. Phase 4: Evidence, human-voice, and canonical-integrity authorization votes. Phase 5: Ordered resume DOCX → cover-letter DOCX → tracker finalization. Phase 6: Artifact verification, cleanup, and report. The scoring engine and MCP server are on PyPI: pip install resumehq Serve the scorer to Claude/any MCP client over stdio: resumehq-mcp If you prefer not to use the plugin system: git clone https://github.com/jananthan30/Resume-Builder.git cd Resume-Builder pip install -r requirements.txt Download NLTK data one-time python -c "import nltk; nltk.download 'wordnet' ; nltk.download 'punkt tab' " cp .env.example .env cp config.example.json config.json Then edit .env API keys and config.json your info , and use commands without the resume-builder: prefix e.g., /resume instead of /resume-builder:resume . The scoring API is hosted at https://resume-scorer.fly.dev . Free users get 5 scored resumes , then local scoring activates automatically. Sign up or upgrade at getresumehq.com https://getresumehq.com . The easiest way to link your account is via the setup wizard: /resume-builder:setup Or manually add to your .env : SCORER CLOUD URL=https://resume-scorer.fly.dev SCORER CLOUD API KEY=rb your api key here The .mcp.json file configures the MCP server to auto-start with Claude Code: { "mcpServers": { "ai-resume-tuner": { "command": "python", "args": "mcp scorer.py" , "cwd": "/path/to/Resume-Builder", "env": { "SCORER CLOUD URL": "https://resume-scorer.fly.dev" } } } } Environment variables: | Variable | Required | Default | Description | |---|---|---|---| SCORER CLOUD URL | No | https://resume-scorer.fly.dev | Cloud scoring API URL | SCORER CLOUD API KEY | No | — | Your cloud API key rb ... . Anonymous scoring 5 free works without this. | ANTHROPIC API KEY | No | — | For LLM scoring always runs locally with your key | ANTHROPIC MODEL | No | claude-sonnet-4-6 | Claude model for LLM scoring | ADZUNA APP ID | No | — | For job discovery free at | ADZUNA APP KEY RAPIDAPI KEY Create a file with your complete work history. Supported formats: .docx , .pdf , .md , or .txt . This is the single source of truth — all tailored resumes are generated from it. DOCX is recommended since most people already have their resume in that format. FULL NAME, CREDENTIALS City, State ZIP | Phone | Email | LinkedIn PROFESSIONAL SUMMARY Your comprehensive summary with all skills and experience PROFESSIONAL EXPERIENCE JOB TITLE | COMPANY NAME | City, State Month Year – Month Year • Achievement with quantified impact • Another achievement with metrics EDUCATION Degree Name University Name, City, State | Year – Year CERTIFICATIONS • Certification Name – Issuing Body Set the path to this file in your config.json as master resume path . | Score | Rating | Meaning | |---|---|---| | 80-100% | Excellent | Top candidate — likely to pass all ATS filters | | 65-79% | Good | Strong match — will pass most filters | | 50-64% | Fair | Competitive — may need optimization | | 35-49% | Low | Below average — significant gaps | | 0-34% | Poor | Unlikely to pass automated screening | | Score | Recommendation | Meaning | |---|---|---| | 85%+ | STRONG INTERVIEW | Top candidate | | 70-84% | INTERVIEW | Competitive | | 55-69% | MAYBE | Marginal — depends on candidate pool | | <55% | PASS | Weak match | The scoring API runs locally python scorer server.py --port 8100 or is hosted at https://resume-scorer.fly.dev . | Endpoint | Method | Auth | Description | |---|---|---|---| /health | GET | No | Server health and version info | /score/ats | POST | Yes | ATS scoring 8 weighted components | /score/hr | POST | Yes | HR recruiter simulation | /score/both | POST | Yes | ATS + HR combined in one call JSON by default, SSE with Accept: text/event-stream | /score/llm | POST | Yes | LLM scoring via Claude | /score/combined | POST | Yes | All 3 blended 70% rules / 30% LLM | /score/batch | POST | Yes | Score multiple resume/JD pairs | /explain | POST | Yes | Detailed score explanation | /jobs/discover | POST | Yes | Search jobs + score against resume | | Endpoint | Method | Description | |---|---|---| /auth/register | POST | Create account email + password | /auth/login | POST | Login and get JWT token | /auth/api-key | POST | Create an API key requires JWT | /auth/usage | GET | Check usage stats and remaining scores | /billing/checkout | POST | Start Stripe checkout for Pro upgrade | /billing/portal | POST | Stripe customer portal | JWT Bearer token: Authorization: Bearer