๐น๐๐๐ ๐ณ๐๐๐๐๐๐ โฆ ๐๐๐๐๐๐๐ โฆ ๐ท๐๐ ๐๐ ๐ธ๐๐๐๐๐๐ โฆ ๐ฒ๐๐๐๐๐๐๐๐๐๐๐ โฆ ๐๐๐๐๐๐๐ โฆ ๐๐ ๐๐๐๐๐/๐ โฆ ๐ป๐๐๐๐๐๐ธ๐ โฆ ๐ฒ๐๐๐๐๐๐
English | Espaรฑol | ็ฎไฝไธญๆ | ๆฅๆฌ่ช
Free, open-source resume builder that tailors your resume (CV) to each job description. A self-hosted AI harness for Claude, ChatGPT, DeepSeek, Kimi, GLM, Gemma and other LLMs, local or remote.
Important
The project needs your help and support. If you can donate a small amount, that will help me to continue developing and improving Resume Matcher.
Sponsoring for a company? Put your logo in front of 27k+ developers โ become a sponsor โ
Resume Matcher works by creating a master resume that you can use to tailor for each job application. Installation instructions here: How to Install
- Upload your master resume (PDF or DOCX)
- Paste a job description you're targeting
- Review AI-generated improvements and tailored content
- Cover Letter and optional interview preparation for the job application
- Customize the layout and sections to fit your style
- Export as a professional PDF with your preferred template
Installing Resume Matcher takes a terminal, so most of the people running it write software. It fits the way you already work:
- It runs on your machine. A FastAPI backend, a Next.js frontend and a SQLite file. Clone the repo or start one Docker container. You don't create an account, and your resume stays in your own database.
- You choose the model. Bring an API key for OpenAI, Anthropic, Gemini, DeepSeek, OpenRouter or Groq, or run a local model with Ollama so your resume never leaves the machine.
- Claude Code can drive it. The MCP server lets Claude Code, Cursor or Codex write the tailored resume while Resume Matcher stores, checks and renders it, with no LLM key.
- It sticks to your real experience. The tailoring prompts forbid adding skills, tools, employers or metrics that aren't in your master resume.
- The scores are plain code. The ATS score (
services/ats.py) and the ATS check (services/ats_parse/) make no LLM call. The ATS check runs your PDF through pdfminer to show what an applicant tracking system would extract. - The templates look like engineering resumes. Deedy, Modern Deedy and a LaTeX-style layout sit next to single- and two-column options. Seven of the designs also come as editable pdfLaTeX projects for Overleaf in resume-matcher-templates.
Join our Discord for discussions, feature requests, and community support.
Follow us on LinkedIn for updates.
Star the repo to support development and get notified of new releases.
Resume Matcher is free and open-source, kept alive by its sponsors and backers. If it helps you, please consider supporting its development.
Sponsor at a company tier and your logo + link + blurb lands here โ in front of a community of 27k+ stars and 4.9k forks, featured on Trendshift and the Vercel OSS Program.
| Sponsor | Description |
|---|---|
| Apideck | One API to connect your app to 200+ SaaS platforms (accounting, HRIS, CRM, file storage). Build integrations once, not 50 times. ๐ apideck.com |
| Vercel | Resume Matcher is a part of Vercel OSS // Summer 2025 Program ๐ vercel.com |
| Cubic.dev | Cubic provides PR reviews for Resume Matcher ๐ cubic.dev |
| Kilo Code | Kilo Code provides AI code reviews and coding credits to Resume Matcher ๐ kilo.ai |
| ZanReal | ZanReal is an AI-driven development company building scalable cloud solutions, from strategy and UX to DevOps, helping teams ship faster and turn ideas into production. ๐ zanreal.com |
| โฆ Your company here | Reach 27k+ developers and 4.9k forks. Become a sponsor โ |
Read the Sponsorship Guide for tiers and details. Sponsors get a special thank-you in the README and on our website.
Every bit keeps Resume Matcher free and funds new features โ and you'll be thanked in the README and on our website.
| Platform | Link |
|---|---|
| GitHub | |
| Buy Me a Coffee |
Thank you for checking out Resume Matcher. If you want to connect, collaborate, or just say hi, feel free to reach out! ~ Saurabh Rai โจ
You can follow me on:
- Website: https://srbhr.com
- Linkedin: https://www.linkedin.com/in/srbhr/
- Twitter: https://twitter.com/srbhr_r
- GitHub: https://github.com/srbhr
Master Resume: Create a comprehensive master resume to draw from your existing one.
Paste in a job description and get AI-powered resume tailored for that specific role.
You can:
- Modify suggested content
- Add/remove sections
- Rearrange sections via drag-and-drop
- Choose from multiple resume templates
Generate tailored cover letters based on the job description and your resume.
Generate structured, resume-grounded interview prep for saved tailored resumes. Use the Builder's Interview Prep tab on demand, or enable automatic generation in Settings.
Paste several job descriptions on the Tailoring Queue page and they are tailored from your master resume one after another in the background. Role, company and job ID are detected from the text without an AI call, and you can edit them. An optional cooldown between jobs (0 to 60 seconds) lowers the risk of hitting your provider's rate limits. Queued jobs are kept in the database and resume after a restart.
The JD Match tab shows the job description beside your resume with the shared keywords highlighted, plus an ATS score out of 100: keyword match (40%), skills coverage (20%), job-title match (15%), section completeness (15%) and date consistency (10%). It lists the missing keywords, and the ones your master resume already has, so you can add those without inventing anything.
The ATS Check tab renders your PDF and reads the text back the way an applicant tracking system's text extractor does, then reports parseability, reading order, contact details and section headings. Both run as plain code. What is an ATS score? explains the formulas.
Export your tailored resume and cover letter in PDF.
The templates export text-based PDFs in A4 or US Letter that applicant tracking systems can parse.
| Template Name | Preview | Description |
|---|---|---|
| Single Column | ![]() |
Traditional full-width layout with maximum content density. ๐๐ข๐๐ฐ ๐๐๐ |
| Two Column | ![]() |
Experience-focused main column with sidebar for skills. ๐๐ข๐๐ฐ ๐๐๐ |
| Modern | ![]() |
Colorful accents with customizable theme colors. ๐๐ข๐๐ฐ ๐๐๐ |
| Modern Two Column | ![]() |
Two-column layout with modern colorful accents and themes. ๐๐ข๐๐ฐ ๐๐๐ |
| LaTeX | ![]() |
Classic serif academic layout with ruled section headers. ๐๐ข๐๐ฐ ๐๐๐ |
| Clean | ![]() |
Minimal sans layout with large understated section headers. ๐๐ข๐๐ฐ ๐๐๐ |
| Vivid | ![]() |
Colorful two-column layout with accent headers and arrow bullets. ๐๐ข๐๐ฐ ๐๐๐ |
| Vivid Single Column | ![]() |
Colorful single-column layout with accent headers and arrow bullets. ๐๐ข๐๐ฐ ๐๐๐ |
| Modern Deedy | ![]() |
Dense one-page layout in Lato with light grey uppercase section headings. ๐๐ข๐๐ฐ ๐๐๐ |
| Deedy | ![]() |
Two-column layout with a hairline name, a narrow left column and light gray headings. ๐๐ข๐๐ฐ ๐๐๐ |
- Multi-Language UI: Interface available in English, Spanish, Chinese, Japanese, Brazilian Portuguese, French and Korean
- Multi-Language Content: Generate resumes and cover letters in your preferred language
If you have any suggestions or feature requests, please feel free to open an issue on GitHub or discuss it on our Discord server.
- AI Canvas for crafting impactful, metric-driven resume content
- Email template generator for job applications
- Multi-job description optimization
The Resume Matcher blog has writing guides for developers, from a first internship resume to a FAANG application:
- Software engineer resume: a one-page template, two annotated examples and advice for each section
- Computer science resume: for students and new grads, built from projects and internships
- FAANG resume: what Google, Meta and Amazon say they screen for, from their own careers pages
- LaTeX resume: Jake's, sb2nov and Awesome-CV, Overleaf, and how a parser reads the PDF
- Open source resume builders: Reactive Resume, RenderCV, YAMLResume, Awesome-CV and others compared
- Master resume: the one complete resume you tailor each application from
- Tailor your resume to a job description: the method, step by step
- Private AI resume tailoring with Ollama: keep your resume on your own machine
- What is an ATS score?: how resume checkers calculate a score, with Resume Matcher's formulas
- ChatGPT prompts for resume tailoring: prompts for ChatGPT and Claude that don't invent experience
For detailed setup instructions, see SETUP.md (English) or: Espaรฑol, ็ฎไฝไธญๆ, ๆฅๆฌ่ช.
| Tool | Version | Installation |
|---|---|---|
| Python | 3.13+ | python.org |
| Node.js | 24+ | nodejs.org |
| uv | Latest | astral.sh/uv |
Fastest for MacOS, WSL and Ubuntu users:
# Clone the repository
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher
# Backend (Terminal 1)
cd apps/backend
cp .env.example .env # Configure your AI provider
uv sync # Install dependencies
uv run app
# Frontend (Terminal 2)
cd apps/frontend
npm install
npm run devOpen http://localhost:3000 and configure your AI provider in Settings.
Windows 11: see Windows 11 Setup for PowerShell commands.
| Provider | Local/Cloud | Notes |
|---|---|---|
| Your coding agent | Local | No API key. Open Claude Code, Codex, Cursor or Copilot in this folder and ask it to set up Resume Matcher and tailor your resume: the agent does the AI work in its own app, and Resume Matcher stores, checks and renders the result for you to edit. Choose Coding agent in Settings. See SETUP.md. |
| Ollama | Local | Free, runs on your machine |
| Claude subscription (via Claude Code) | Cloud (via local CLI) | Runs your installed claude CLI, so this app needs no API key and never sees or stores your Claude credentials, but prompts still go to Anthropic through your Claude Code login and count toward your plan's usage limits (Anthropic may draw them from usage credits instead). Anthropic doesn't allow third-party apps to route requests through Claude Free/Pro/Max plans, this option may count as one, and Anthropic can enforce that without notice; Settings asks you to accept that risk first. For guaranteed access, use the Anthropic provider with an API key, or let Claude Code do the work as your coding agent. Set LLM_PROVIDER=claude_cli; pick the model in Settings or with LLM_MODEL (fable, opus, sonnet, haiku or a full claude-โฆ name). Requires Claude Code installed and signed in (claude auth login); not available inside the Docker images. |
| ChatGPT plan (Sign in with ChatGPT) | Cloud | Community-built. Uses OpenAI's official Sign in with ChatGPT for open-source apps (preview, may change) with ChatGPT Plus or Pro: choose ChatGPT plan in Settings and click Continue with ChatGPT; no API key needed. Requests go from your machine to OpenAI's Responses API and count toward your plan's limits (on Plus the five-hour limit is shared with your other apps; Pro has none). Sign in from a browser on the machine running the backend; the default Docker setup can't complete the sign-in (see SETUP.md). For guaranteed access, use the OpenAI provider with an API key. Set LLM_PROVIDER=chatgpt. |
| OpenAI | Cloud | GPT-5 Nano, GPT-4o |
| Anthropic | Cloud | Claude Haiku 4.5 |
| Google Gemini | Cloud | Gemini 3 Flash |
| OpenRouter | Cloud | Access to multiple models |
| DeepSeek | Cloud | DeepSeek Chat |
| Groq | Cloud | Llama 3.3 70B, GPT-OSS |
Official Docker images are published for linux/amd64 and linux/arm64 on:
ghcr.io/srbhr/resume-matchersrbhr/resume-matcher
Run on a single public port (3000) with API available at /api:
docker run --name resume-matcher \
-p 3000:3000 \
-v resume-data:/app/backend/data \
ghcr.io/srbhr/resume-matcher:latestPrefer pinning a version in production, for example ghcr.io/srbhr/resume-matcher:1.3.0 or
ghcr.io/srbhr/resume-matcher:1.3.
Endpoints:
- App: http://localhost:3000
- API health check: http://localhost:3000/api/v1/health
- API docs: http://localhost:3000/docs
Using Ollama with Docker? Use
http://host.docker.internal:11434as the Ollama URL instead oflocalhost(on Linux, Ollama must also listen beyond127.0.0.1; see SETUP.md). Docker publishes the app on127.0.0.1only; to open it from another device, see SETUP.md.
| Component | Technology |
|---|---|
| Backend | FastAPI, Python 3.13+, LiteLLM |
| Frontend | Next.js 16, React 19, TypeScript |
| Database | SQLite by default, optional PostgreSQL (SQLAlchemy 2.0) |
| Styling | Tailwind CSS 4, Swiss International Style |
| Headless Chromium via Playwright |
We welcome contributions from everyone! Whether you're a developer, designer, or just someone who wants to help out. All the contributors are listed in the about page on our website and on the GitHub Readme here.
Check out the roadmap if you would like to work on the features that are planned for the future. If you have any suggestions or feature requests, please feel free to open an issue on GitHub and discuss it on our Discord server.

























