Resume-Matcher

srbhrApache-2.0活跃维护

本地运行的简历匹配与生成工具,用 100+ 大模型解析简历、计算与职位描述的文本相似度,并生成 PDF 和求职信。

The #1 AI Harness for Building Resumes, PDFs, Cover Letters & more, locally with 100+ LLMs support.

v1.4.0发布于 2026-10-21 20:38 UTC29,226star +54 / 7 天5,131fork同步于 2026-11-10 17:21 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/srbhr/Resume-Matcher.git && cd Resume-Matcher
cd apps/backend && cp .env.example .env && uv sync && uv run app
cd apps/frontend && npm install && npm run dev
硬件要求按 README 说明

README 未说明显存或 GPU 要求;本地模型需通过 Ollama 运行,其余情况用云端 API 即可,CPU 环境可跑。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自托管的简历定制工具,用本地或云端 LLM 按岗位描述改写简历并导出 PDF

本地运行的简历匹配与生成工具,用 100+ 大模型解析简历、计算与职位描述的文本相似度,并生成 PDF 和求职信。

核心能力

  • 上传主简历和岗位描述,由 AI 生成定制化改写建议
  • 支持 Ollama 本地模型及 OpenAI、Anthropic、Gemini 等云端供应商
  • ATS 评分与解析检查由纯代码实现,不调用 LLM
  • 内置 Deedy、LaTeX 风格等单栏双栏简历模板
  • 提供 MCP server,可由 Claude Code、Cursor 直接驱动

容易踩的坑

后端需先复制 .env.example 为 .env 并配置 AI 供应商,否则无法调用模型;Docker 中用 Ollama 要把地址改成 http://host.docker.internal:11434;Claude 订阅方式依赖本机已安装并登录的 claude CLI,且 Docker 镜像内不可用。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.4.0
  1. v1.4.01.4 Short Circuit最新正式版2026-10-21 · 2026-10-21 20:38 UTC

    Resume Matcher 1.4: Short Circuit

    Short Circuit makes the resume itself better, not only better matched. Every tailoring run now critiques its own writing and rewrites the weak lines without adding a single fact, you can push a missing job keyword in when you confirm you have it, and you can watch each stage of the work as it happens. It also brings agent mode, an MCP server, new templates and multi-page resumes, and a round of security hardening.

    Named after Short Circuit from Daft Punk's Discovery, this release continues the v1 series after 1.3 Crescendolls.

    What's new

    Writing that holds up

    • Critique and rewrite in every tailoring run. Fixed rules and an AI critic check each bullet and the summary. Lines with an em dash, a weak opener such as "Responsible for", or no stated outcome get one rewrite. A fact check drops any rewrite that adds or loses a number, name, tool or skill, so your work stays on the page and nothing is invented. Light nudge only critiques.
    • Writing score. A 0 to 100 score from the fixed rules (the same with every AI provider), with before and after, the lines to fix and the reviewer's notes.
    • Improve writing in the Builder. A new Writing tab scores any resume, master included, and rewrites its weak lines. You review every change before it goes into the editor.
    • Heavy rewrite. A fourth tailoring mode for bigger edits: full Challenge, Action, Result rewrites, a new summary and reordered bullets, with a clear hallucination warning.
    • Evidence-based cover letters. One page, usually 200 to 300 words: a hook tied to the job, two or three matching examples, a company-fit paragraph grounded in the job description and a specific close. Contributed by @AlexanderMorris2k.

    Keywords on your terms

    • Add missing keywords. In the review dialog, missing job keywords become chips. Keywords your master shows are applied directly; a keyword it does not show needs your "I have this". Each one goes into your skills plus at most two lines where it fits, and nothing else is added around it.
    • See where they went. The dialog lists where every keyword landed, marks it in the changed lines and shows the ATS score before and after. JD Match highlights the keywords you added in blue, and interview prep asks about them first.
    • One match number. JD Match now shows the same keyword match as the ATS score, and keeps C++, .NET, Node.js and CI/CD whole.
    • A sharper ATS score. It now scores the job title and date consistency, and the builder keeps the last calculated score with a Recalculate button. Contributed by @himalyansailor.
    • ATS parse check. A new ATS CHECK tab shows whether a plain text extractor can read your exported PDF in the right order.

    Watch it work

    • Live progress. Tailoring shows each real stage as it runs, with a note when a slow model needs a minute.
    • Tailoring queue. Queue several job descriptions and tailor them one after another, with cooldowns that respect rate limits. Contributed by @coolb0y.

    Use it your way

    • Agent mode. Open Claude Code, Codex, Cursor, Copilot or Antigravity in the repo and ask it to tailor your resume: no API key, and the web app updates live as the agent saves.
    • MCP server. Its tools let any MCP client drive Resume Matcher against the same database as the app. Contributed by @rrvrs.
    • Claude Code and ChatGPT plans as providers. Run on a Claude Code install with no API key (contributed by @GongYuanCaiJi), pick its model, or sign in with a ChatGPT plan, with a clear note on subscription risk.
    • Optional PostgreSQL for larger or shared setups.

    More control over the resume

    • Several master resumes. Keep up to five, one per career track; tailoring picks the strongest bullets with code, not the AI.
    • Page limit and bullet cap settings for tailoring. Contributed by @himalyansailor.
    • New templates: Deedy, Modern Deedy and Vivid Singl
  2. v1.3.01.3 Crescendolls2026-09-06 · 2026-09-06 09:20 UTC
    查看更新说明

    Resume Matcher 1.3 — Crescendolls

    Crescendolls brings resume creation, tailoring, application tracking, and interview preparation into one workflow. It also strengthens the steps you depend on most: uploading a resume, saving your work, applying AI suggestions, and exporting a PDF.

    Named after Crescendolls from Daft Punk’s Discovery, this release continues the v1 series after 1.2 Nightvision.

    What’s new

    Build a resume from the beginning

    The guided resume wizard helps you turn your experience into a resume through an adaptive conversation. Save a draft, return to it later, and continue refining the result in the builder.

    Follow the application through

    The application tracker gives you a board for organizing jobs, recording notes, and keeping applications connected to tailored resumes. Interview preparation helps you prepare for the next step using your resume and the job description.

    More control over your resume and AI

    • Three new templates: LaTeX, Clean, and Vivid.
    • More language support: French and Korean interfaces and improved Chinese, Japanese, and Korean PDF rendering.
    • More AI options: Groq, Azure AI Foundry, and OpenAI-compatible servers, reasoning controls, and custom prompts for cover letters and outreach messages.
    • Clearer tailoring feedback: expanded score breakdowns and improved job-description skill alignment across more resume sections.

    More dependable, from upload to export

    This release includes a reviewed reliability update spanning 17 pull requests and 44 tracked issues.

    • Recover interrupted uploads. Retain the identity of a saved resume when its response is interrupted, and handle empty or invalid documents more clearly.
    • Keep useful work. Improve draft recovery, save behavior, preview confirmation, and handling of partial AI results.
    • Handle failures consistently. Bound AI operation times and retries, improve malformed-response handling, and provide clearer error messages.
    • Preserve resume content. Strengthen checks around original information and recognize Latin skill names beside Chinese, Japanese, and Korean text.
    • Improve PDF reliability. Handle concurrent exports, cancellation, and browser shutdown while retaining ownership of resources still in use.

    The reliability stack preserves 124 individual commits. Its review evidence and file map are included in the repository.

    Security update

    This release includes the security bump merged in PR #993: NanoID 3.3.16 → 3.3.18.

    The update addresses CVE-2026-67213, where a custom ID generator could loop indefinitely when asked for a zero-length ID.

    Upgrading from 1.2

    Stop the application and back up the complete persistent data directory before upgrading. This release moves storage to SQLite and stores provider API keys encrypted at rest. On startup, it imports a legacy TinyDB database when SQLite is empty and migrates legacy saved keys.

    Keep the database, config.json, uploaded files, and the hidden .secret_key together. Existing encrypted keys need their original secret to be decrypted. Retain your pre-upgrade backup if you need to return to 1.2; the migrated SQLite database cannot replace the old version’s database.

    For source installs, use Node.js 22+ and Python 3.13+, then reinstall dependencies following the README. For Docker upgrades, preserve your existing data volume when recreating the container.

    Docker images

    Release tag: v1.3.0. Versioned images are available for Linux amd64 and arm64 on GHCR and Docker Hub:

    docker pull ghcr.io/srbhr/resume-matcher:1.3.0
    # or
    docker pull srbhr/resume-matcher:1.3.0
    

    The image tags are 1.3.0 and 1.3. [Release-tag publication](https://github.com/srbhr/Resum

  3. 1.2.01.2 Nightvision2026-04-02 · 2026-04-02 09:50 UTC
    查看更新说明

    Resume Matcher's 1.2 Release - Title'd "Nightvision"

    Diff-based improvement engine, single-port Docker architecture, hardened tailor pipeline, performance optimizations, and documentation fixes.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/srbhr/Resume-Matcher/compare/1.1.0...1.2.0

  4. 1.1.01.1 Voyager2026-02-10 · 2026-02-10 13:32 UTC
    查看更新说明

    Resume Matcher's 1.1 Release - Title'd "Voyager"

    Fixes bugs, updates to the prompting structure, fixes windows bugs, and docker configs too.

    What's Changed

  5. 1.0.0v1.0.02026-01-06 · 2026-01-06 17:19 UTC
    查看更新说明

    Resume Matcher Release v1.0.0 - Aerodynamic

    Hiya folks!

    I'm really excited to bring you the first stable release for Resume Matcher.

    Resume Matcher Demo

    Features

    • Tailored Resume Creation
    • Multiple ATS Compatible Templates
    • Support for Multiple AI providers
    • Easy Docker Support
    • and more ... check : Features

    New Contributors

    Full Changelog: https://github.com/srbhr/Resume-Matcher/compare/0.1.2-old-resume-matcher...1.0.0

    Thanks to Apideck for Sponsoring Resume Matcher. ✨

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Resume Matcher

    Resume Matcher

    𝙹𝚘𝚒𝚗 𝙳𝚒𝚜𝚌𝚘𝚛𝚍 ✦ 𝚆𝚎𝚋𝚜𝚒𝚝𝚎 ✦ 𝙷𝚘𝚠 𝚝𝚘 𝙸𝚗𝚜𝚝𝚊𝚕𝚕 ✦ 𝙲𝚘𝚗𝚝𝚛𝚒𝚋𝚞𝚝𝚘𝚛𝚜 ✦ 𝚂𝚙𝚘𝚗𝚜𝚘𝚛 ✦ 𝚃𝚠𝚒𝚝𝚝𝚎𝚛/𝚇 ✦ 𝙻𝚒𝚗𝚔𝚎𝚍𝙸𝚗 ✦ 𝙲𝚛𝚎𝚊𝚝𝚘𝚛

    English | Español | 简体中文 | 日本語 | Português (BR)

    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.

    Resume Matcher Demo

    Stars Apache 2.0 Forks version

    Discord Website LinkedIn

    Vercel OSS Program

    [!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.

    Sponsor on GitHub Buy Me a Coffee

    Sponsoring for a company? Put your logo in front of 27k+ developers → become a sponsor ↓

    Getting Started

    Resume Matcher works by creating a master resume that you can use to tailor for each job application. Installation instructions here: How to Install

    How It Works

    1. Upload your master resume (PDF or DOCX)
    2. Paste a job description you're targeting
    3. Review AI-generated improvements and tailored content
    4. Cover Letter and optional interview preparation for the job application
    5. Customize the layout and sections to fit your style
    6. Export as a professional PDF with your preferred template

    Built for Software Engineers

    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.

    Stay Connected

    Discord

    Join our Discord for discussions, feature requests, and community support.

    LinkedIn

    Follow us on LinkedIn for updates.

    Star Resume Matcher

    Star the repo to support development and get notified of new releases.

    Sponsors

    sponsors

    Resume Matcher is free and open-source, kept alive by its sponsors and backers. If it helps you, please consider supporting its development.

    Companies backing Resume Matcher

    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.

    SponsorDescription
    ApideckOne API to connect your app to 200+ SaaS platforms (accounting, HRIS, CRM, file storage). Build integrations once, not 50 times. 🌐 apideck.com
    VercelResume Matcher is a part of Vercel OSS // Summer 2025 Program 🌐 vercel.com
    Cubic.devCubic provides PR reviews for Resume Matcher 🌐 cubic.dev
    Kilo CodeKilo Code provides AI code reviews and coding credits to Resume Matcher 🌐 kilo.ai
    ZanRealZanReal 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 hereReach 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.

    Support as an individual

    donate

    Every bit keeps Resume Matcher free and funds new features — and you'll be thanked in the README and on our website.

    PlatformLink
    GitHubGitHub Sponsors
    Buy Me a CoffeeBuyMeACoffee

    Creators' Note

    srbhr

    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:

    Key Features

    resume_matcher_features

    Core Features

    Master Resume: Create a comprehensive master resume to draw from your existing one.

    Dashboard with a master resume and seven tailored resumes

    Resume Builder

    Resume Builder with the template picker and a live preview of a software engineer resume

    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

    Cover Letter Generator

    Generate tailored cover letters based on the job description and your resume.

    The default writing approach uses a specific opening hook, two or three relevant experience examples, a company-fit paragraph grounded in the supplied job description, and a confident call to action. Letters aim for 200–300 words and adapt tone and regional conventions when the inputs provide enough context. Names, metrics, company research, and personal motivations must be supported by the supplied information. Existing custom cover-letter prompts in Settings continue to override the default.

    This approach is adapted from the jezweb resume-cover-letter skill. Resume Matcher's existing editor, preview, and PDF export remain available.

    Cover letter editor next to its PDF preview

    Interview Preparation

    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.

    Tailoring Queue

    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.

    ATS Score, ATS Check & Keyword Highlighting

    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.

    JD Match tab with the ATS score breakdown and matching keywords highlighted

    PDF Export

    Export your tailored resume and cover letter in PDF.

    Templates

    The templates export text-based PDFs in A4 or US Letter that applicant tracking systems can parse.

    Template NamePreviewDescription
    Single ColumnSingle ColumnTraditional full-width layout with maximum content density. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    Two ColumnTwo ColumnExperience-focused main column with sidebar for skills. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    ModernModernColorful accents with customizable theme colors. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    Modern Two ColumnModern Two ColumnTwo-column layout with modern colorful accents and themes. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    LaTeXLaTeXClassic serif academic layout with ruled section headers. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    CleanCleanMinimal sans layout with large understated section headers. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    VividVividColorful two-column layout with accent headers and arrow bullets. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    Vivid Single ColumnVivid Single ColumnColorful single-column layout with accent headers and arrow bullets. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    Modern DeedyModern DeedyDense one-page layout in Lato with light grey uppercase section headings. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅
    DeedyDeedyTwo-column layout with a hairline name, a narrow left column and light gray headings. 𝐕𝐢𝐞𝐰 𝐏𝐃𝐅

    Internationalization

    • 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

    Roadmap

    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

    Resume Guides for Software Engineers

    The Resume Matcher blog has writing guides for developers, from a first internship resume to a FAANG application:

    How to Install

    Installation

    For detailed setup instructions, see SETUP.md (English) or: Español, 简体中文, 日本語, Português (BR).

    Prerequisites

    ToolVersionInstallation
    Python3.14+python.org
    Node.js24.22.1 (pinned in .nvmrc)nodejs.org
    uvLatestastral.sh/uv

    Quick Start

    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 dev
    

    Open http://localhost:3000 and configure your AI provider in Settings.

    Windows 11: see Windows 11 Setup for PowerShell commands.

    Supported AI Providers

    ProviderLocal/CloudNotes
    Your coding agentLocalNo 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.
    OllamaLocalFree, 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)CloudCommunity-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.
    OpenAICloudGPT-5 Nano, GPT-4o
    AnthropicCloudClaude Haiku 4.5
    Google GeminiCloudGemini 3 Flash
    OpenRouterCloudAccess to multiple models
    DeepSeekCloudDeepSeek Chat
    GroqCloudLlama 3.3 70B, GPT-OSS

    Docker Deployment

    Official Docker images are published for linux/amd64 and linux/arm64 on:

    • ghcr.io/srbhr/resume-matcher
    • srbhr/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:latest
    

    Prefer pinning a version in production, for example ghcr.io/srbhr/resume-matcher:1.4.0 or ghcr.io/srbhr/resume-matcher:1.4.

    Endpoints:

    Using Ollama with Docker? Use http://host.docker.internal:11434 as the Ollama URL instead of localhost (on Linux, Ollama must also listen beyond 127.0.0.1; see SETUP.md). Docker publishes the app on 127.0.0.1 only; to open it from another device, see SETUP.md.

    Tech Stack

    ComponentTechnology
    BackendFastAPI, Python 3.14+, LiteLLM
    FrontendNext.js 16, React 19, TypeScript
    DatabaseSQLite by default, optional PostgreSQL (SQLAlchemy 2.0)
    StylingTailwind CSS 4, Swiss International Style
    PDFHeadless Chromium via Playwright

    Join Us and Contribute

    how to contribute

    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.

    Contributors

    Contributors

    Resume Matcher is a part of Vercel Open Source Program

    Vercel OSS Program