Resume Builder
AI-powered resume & cover letter generator with dual ATS + HR scoring. Works for any profession. Claude Code plugin.
Ask AI about Resume Builder
Powered by Claude Β· Grounded in docs
I know everything about Resume Builder. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
ResumeHQ β AI-Powered Resume Builder with ATS & HR Scoring
The only resume tool that finds jobs, scores your fit, and tailors your resume β all in one workflow. Works as a Claude Code plugin or standalone web app.
Why ResumeHQ?
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 | β | β | β | β |
| Open source | β | β | β | β |
What This Does
You 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
- Analyzes the JD β extracts keywords, required skills, domain, seniority level
- Tailors your master resume β rewrites bullets, reorders sections, matches terminology
- Scores the result with two independent 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
All of this runs in parallel β scoring happens in the background while the resume is being written, cover letters generate simultaneously, and DOCX files are created in parallel. ~50% faster than sequential execution.
Quick Start β 3 Steps
Works with Claude Code (CLI/IDE) and claude.ai (web/Projects).
Step 1: Install the plugin
/plugin marketplace add jananthan30/Resume-Builder
/plugin install resume-builder
Step 2: Run the setup wizard
/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.jsonwith your name, email, phone, LinkedIn - Optionally links a Pro account for unlimited cloud scoring
- Optionally sets up the LLM scorer (Claude API key)
Step 3: Start building resumes
/resume-builder:resume [paste a job description here]
Or find jobs first:
/resume-builder:find-jobs Senior Data Scientist in New York
Slash Commands (7)
| Command | What It Does |
|---|---|
/resume-builder:setup | One-time setup wizard (installs Python deps, creates config, links Pro account) |
/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 |
If running locally (cloned repo), use short names: /resume, /tailor-resume, /find-jobs, etc.
What Works Without Setup
Even before running /resume-builder:setup, these commands work immediately (they're just Claude prompts β no Python needed):
| Command | Works immediately? | With setup? |
|---|---|---|
/resume-builder:resume | Yes β Claude writes the resume | + automated ATS/HR scoring and DOCX output |
/resume-builder:cover-letter | Yes β Claude 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, rewrite_resume, explain_score, extract_text, discover_jobs |
MCP Tools (8)
After running /resume-builder:setup, the MCP scorer auto-starts and provides these tools that Claude 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 | Claude-augmented rubric scoring (requires ANTHROPIC_API_KEY) |
rewrite_resume | AI-powered resume tailoring to match a JD (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 MCP tools support cloud-first scoring β they try the cloud API first and fall back to local scoring automatically.
Job Discovery
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)
- 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 β add
ADZUNA_APP_IDandADZUNA_APP_KEYto your.env - Remotive: No key needed (remote jobs only, included automatically)
Dual Scoring System
ATS Scorer β 8 Weighted Components
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.
HR Scorer β 6 Factors + Visual Analysis
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.
LLM Scorer (Optional)
Claude-powered rubric evaluation that catches nuances the algorithmic scorers miss β tone, coherence, storytelling quality.
Pricing
| Tier | Price | What You Get |
|---|---|---|
| Free | $0 | 5 cloud scores, then automatic local scoring fallback |
| Pro | $12/mo | Unlimited cloud scoring β ideal for Claude Code / claude.ai users |
| Ultra | $29/mo | Unlimited scoring + AI resume rewriting via web app |
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 resume-scorer-web.streamlit.app. After signing up, run /resume-builder:setup to link your Pro account in one step.
Architecture Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β lightweight 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).
Workflow
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 command runs a multi-phase parallel workflow:
- Phase 1: Parallel research (reads master resume, finds best match, sets up output folder)
- Phase 2: Background scoring + resume writing (non-blocking)
- Phase 3: Parallel scoring + cover letter generation
- Phase 4: Auto-iteration if scores < threshold (max 2 rounds)
- Phase 5: Parallel DOCX creation + tracker update
- Phase 6: Cleanup + score report
Alternative: Clone & Run Locally
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).
Cloud Scoring API
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 resume-scorer-web.streamlit.app.
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
MCP Configuration
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 developer.adzuna.com) |
ADZUNA_APP_KEY | No | β | For job discovery |
Your Master Resume
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.
Scoring Reference
ATS Score
| 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 |
HR Score
| Score | Recommendation | Meaning |
|---|---|---|
| 85%+ | STRONG INTERVIEW | Top candidate |
| 70-84% | INTERVIEW | Competitive |
| 55-69% | MAYBE | Marginal β depends on candidate pool |
| <55% | PASS | Weak match |
API Reference
The scoring API runs locally (python scorer_server.py --port 8100) or is hosted at https://resume-scorer.fly.dev.
Scoring Endpoints
| 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 |
Auth & Billing Endpoints
| 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 |
Authentication
- JWT Bearer token:
Authorization: Bearer <token>(from/auth/login) - API key:
X-API-Key: rb_...(from/auth/api-keyor web dashboard)
Example: Score a Resume
curl -X POST https://resume-scorer.fly.dev/score/ats \
-H "X-API-Key: rb_your_api_key" \
-H "Content-Type: application/json" \
-d '{"resume_text": "Your resume text...", "jd_text": "Job description text..."}'
Example: Discover Jobs
curl -X POST https://resume-scorer.fly.dev/jobs/discover \
-H "X-API-Key: rb_your_api_key" \
-H "Content-Type: application/json" \
-d '{"resume_text": "Your resume...", "job_title": "Data Scientist", "location": "New York", "max_results": 10}'
Domain-Specific Scoring
The ATS scorer auto-detects the job domain and applies domain-specific adjustments:
| Domain | Detection Method | Key Adjustments |
|---|---|---|
| Clinical Research | SBERT prototype embeddings | Publications bonus, transferable skills mapping |
| Pharma/Biotech | Keyword + semantic hybrid | Regulatory terminology weighting, pipeline experience |
| Technology | Keyword + semantic hybrid | Portfolio links bonus, 1.3x skill recency weight |
| Finance | Keyword + semantic hybrid | Deal artifacts required, 1.5x prestige weight |
| Consulting | Keyword + semantic hybrid | Impact metrics required, 1.4x prestige weight |
| Healthcare | Keyword + semantic hybrid | Certifications required, quality improvement focus |
Supported Professions
Works for any profession. The scorer auto-detects domain and applies appropriate weights:
| Domain | Example Roles |
|---|---|
| Clinical Research | CRA, Medical Monitor, Study Director, Clinical Operations |
| Pharma/Biotech | Regulatory Affairs, Medical Science Liaison, Drug Safety |
| Technology | Software Engineer, Product Manager, Data Scientist, ML Engineer |
| Finance | Investment Analyst, Financial Controller, Risk Manager |
| Consulting | Management Consultant, Strategy Analyst, Business Advisor |
| Healthcare | Nurse Manager, Quality Director, Health Administrator |
| General | Any role not matching a specific domain β uses universal scoring |
ATS-Compliant DOCX Output
The DOCX generator produces files optimized for Applicant Tracking Systems (Workday, Taleo, Greenhouse, Lever):
- No tables, text boxes, columns, or graphics (ATS parsers can't read these)
- Heading styles for section detection (Workday XML parsing)
- Safe fonts: Calibri, Arial, Times New Roman (10-12pt body)
- Clean structure: Contact info in body (not headers/footers)
- Bold metrics for visual impact during human review
Tech Stack
| Component | Technology |
|---|---|
| AI Agent Framework | Claude Code / claude.ai |
| LLM | Claude (Anthropic) |
| MCP Server | FastMCP 3.0 (auto-starts with plugin, cloud-first thin client) |
| Embeddings | Sentence Transformers (all-MiniLM-L6-v2) |
| NLP | NLTK (lemmatization), TextStat (readability) |
| Search | BM25Plus (rank-bm25), NetworkX (skill graphs) |
| Job Discovery | Adzuna API + Remotive API |
| API Server | FastAPI + Uvicorn |
| Cloud Hosting | Fly.io (auto-stop/start, persistent volume) |
| Auth | JWT (PyJWT) + SQLite-backed API keys |
| Billing | Stripe (subscription management) |
| Document Generation | python-docx |
| PDF Parsing | pdfplumber |
| Tracking | openpyxl (Excel) |
Project Structure
Resume-Builder/
βββ .claude-plugin/ # Plugin manifest
β βββ plugin.json # Plugin metadata (name, version, author)
βββ commands/ # Slash commands (plugin format)
β βββ setup.md # One-time setup wizard
β βββ resume.md # Full application (Swarm v3.0)
β βββ tailor-resume.md # Resume only
β βββ cover-letter.md # Cover letter only
β βββ find-jobs.md # Job discovery + scoring
β βββ batch-resume.md # Batch processing
β βββ writing-coach.md # Writing enhancement (10 rules)
βββ hooks/ # Plugin hooks
β βββ hooks.json # SessionStart: checks if scoring is ready
βββ .mcp.json # MCP server config (auto-starts scorer)
βββ mcp_scorer.py # MCP scoring server (8 tools, cloud-first thin client)
βββ job_discovery.py # Job search + two-tier scoring (Adzuna + Remotive)
βββ data/ # Reference databases for scoring
β βββ keywords_*.json # Domain-specific keyword databases (6 domains)
β βββ skill_taxonomy.json # Skill categories with decay constants
β βββ company_prestige.json # Company prestige scoring
β βββ university_rankings.json# University prestige scores
β βββ acronyms.json # Industry acronym expansion
β βββ action_verbs.json # Verb power classifications
βββ ats_scorer.py # ATS scoring engine (2,800+ lines)
βββ hr_scorer.py # HR scoring engine (2,900+ lines)
βββ llm_scorer.py # Claude-powered rubric scorer
βββ scorer_server.py # FastAPI REST API (v3.0 β auth, usage, billing)
βββ pii_redactor.py # PII redaction via Presidio (pre-LLM API calls)
βββ docx_generator.py # ATS/Workday-compliant DOCX generator
βββ orchestration_state.py # Multi-agent state management (DAG)
βββ tracker_utils.py # Excel application tracker utilities
βββ resume_builder.py # CLI entry point
βββ requirements.txt # Python dependencies
βββ config.example.json # Config template
βββ .env.example # Environment variable template
βββ CLAUDE.md # Project context for Claude Code
βββ LICENSE # MIT License
βββ README.md # You are here
Writing Coach β 10 Rules Engine
The /writing-coach command applies these writing rules to every bullet point:
- Power Verb Start β Every bullet begins with a strong action verb (Led, Directed, Spearheaded)
- Quantified Impact β 40%+ of bullets must contain metrics (%, $, numbers)
- So-What Test β Every bullet answers "why does this matter?"
- Jargon Calibration β Match terminology level to the target role
- Tense Consistency β Past tense for past roles, present for current
- Parallel Structure β Consistent grammatical patterns within sections
- Length Optimization β 1-2 lines per bullet, no walls of text
- Keyword Integration β Natural placement, never forced
- Achievement vs. Duty β Frame responsibilities as accomplishments
- Readability β Flesch-Kincaid Grade 10-12 target
Contributing
Contributions are welcome! Some ideas:
- New domain profiles β add keyword databases for law, marketing, academia, etc.
- Additional job boards β integrate Indeed, LinkedIn, or regional boards
- Additional ATS parsers β test against more ATS systems (Taleo, iCIMS, Greenhouse)
- Resume templates β add more DOCX template styles
- Internationalization β support for non-English resumes and job markets
git checkout -b feature/your-feature
# ... make changes ...
git commit -m "Add your feature"
git push origin feature/your-feature
License
MIT License β see the LICENSE file for details.
Acknowledgments
- Built with Claude Code by Anthropic
- ATS scoring research based on real-world Applicant Tracking System behavior
- HR scoring model informed by eye-tracking research on recruiter behavior
- Domain keyword databases curated from thousands of real job descriptions
- Job search powered by Adzuna and Remotive
If this project helps you land interviews, give it a star β
