定制。 构建。 撰写。 追踪。

Resume Matcher 的全部功能,按你使用的顺序排列。粘贴职位描述,审核 AI 提出的每一处修改,在简历生成器里完善简历,写好求职信,再追踪这份申请。一切都在你自己的电脑上运行,使用你选择的 AI 模型。

简历生成器:左侧是带模板选择器的编辑面板,右侧是一份高级软件工程师简历的单页实时预览,上方有 Cover Letter、Outreach Mail、Interview Prep 和 JD Match 标签页

一份主简历,每个职位一份定制版本。

  1. 1

    接入 AI 模型。在设置页面里接入:使用你自己 API 密钥的云端服务商,或者本地模型。

  2. 2

    添加主简历。上传 PDF 或 Word 文件,或者用简历向导创建一份。

  3. 3

    粘贴职位描述。AI 会针对你的主简历提出定向修改。

  4. 4

    审核修改。在修改前后的对比预览里查看,然后确认或重新生成。

  5. 5

    在简历生成器里润色。选择模板,调整布局,编辑任何内容。

  6. 6

    生成配套材料。为同一个职位生成求职信、联系邮件和面试准备。

  7. 7

    下载。简历和求职信,均为 PDF。

  8. 8

    追踪申请。在看板上追踪。确认一份定制简历时,会自动为它添加卡片。

仪表板:标记为 Default 的主简历卡片、一张 Add master track 卡片(最多 5 份主简历)、八份标题格式为「职位 @ 公司」并带编辑日期的定制简历,以及一张 Create Resume 卡片
你的主简历永远不会被覆盖。每个定制版本都会另存为一份独立的简历,并关联到它所基于的主简历和它所针对的职位。本页截图使用演示资料:Sarah Chen 和图中出现的所有公司均为虚构。

定制。粘贴职位描述,然后检查每一处修改。

定制只改写你简历里已有的内容。它不会编造经历,在你读过并确认修改之前,什么都不会保存。

从主简历开始

主简历是你完整、未经定制的简历:所有工作、项目和技能都在一处。上传不超过 4 MB 的 PDF、DOC 或 DOCX 文件,AI 会把它转换成可编辑的结构化板块,并保留一份原始文本。扫描件这类纯图片 PDF 没有文本层,会被拒绝;请先用 OCR 处理。

没有简历文件?简历向导一次问一个问题,最多 15 个,并在你回答的同时把简历写进实时草稿。它被明确要求绝不编造雇主、职位、日期、学位、证书、指标、工具或技能。

最多可以保留五份主简历,作为不同的职业方向,比如一份投后端岗位,一份投机器学习岗位。其中恰好有一份是默认简历,定制页面从它开始。

简历向导在问第一个问题「What's your name, and what kind of role are you going for?」,下方是回答框,右侧是空的 Live Draft 面板

粘贴职位描述

选好定制强度,粘贴职位描述(最多 100,000 个字符),然后点击「生成定制简历」。

轻度调整
改动最少,让你现有的经历更贴合职位。
关键词增强
默认选项。融入相关关键词,不改变职位角色或工作范围。
完全定制
基于职位描述进行全面定制。
Tailor Your Resume 页面:定制强度选为 Keyword enhance,已粘贴一份 Founding Engineer, LLM Evaluation 岗位的职位描述,下方是 Generate Tailored Resume 按钮

点下按钮之后发生了什么

  1. 1

    职位分析

    AI 提取公司、职位、必备和加分技能、主要职责以及关键词。这些信息随职位一起保存,所以之后追踪卡片无需再调用一次 AI,就能拿到公司和职位。

  2. 2

    要点筛选

    AI 为每条要点打分,评估它与职位的相关度。它只打分,不能改写或编造要点。然后由代码为每段工作或每个项目最多保留三条要点,并通过实际渲染页面,检查简历能否放进一页。

  3. 3

    技能规划

    AI 提出要突出哪些技能。代码只接受满足以下条件之一的技能:已经在你的简历里、出现在你简历的文本中,或者是在职位描述里逐字出现的必备或加分技能。

  4. 4

    定向修改

    AI 不会重写整份简历,而是返回一份具体的修改清单,每条都引用它要替换的原文。代码会对照你的简历核实每一处引用,并拒绝针对受保护字段的修改。

  5. 5

    安全网与润色

    代码会还原你的个人信息和日期,保留所有原有技能,删除一批用滥了的「AI 腔」短语(除非职位描述里用到了它们);如果某行改写引入了原文没有的数字,就撤销这行改写。

整个流程有时间上限,默认四分钟,慢速模型不会让应用卡住。

保存之前先审核

Review AI Tailoring Results 对话框:变更摘要显示新增 1 项技能、删除 0 项技能、新增 0 项证书、修改 3 处描述、1 处高风险变更;提示 Kept 9 of 11 bullets, fits on one page;一条高风险警告;新旧个人简介的差异对比;以及 Reject & Regenerate 和 Confirm & Save 按钮

预览会显示:

  • 变更摘要:新增和删除的技能、新增的证书、修改的描述,以及高风险变更。
  • 要点筛选的结果,例如「已保留 11 条要点中的 9 条(每个职位或项目最多 3 条)· 可放入一页」。
  • 当 AI 添加了内容(通常是取自职位描述的技能)时,会显示高风险警告,方便你确认它对你来说属实。
  • 个人简介、技能和每条改动过的要点的修改前后对比。

确认并保存保留结果;拒绝并重新生成丢弃结果并重试。这个决定针对整个预览。护栏能拦住编造的数字、雇主和日期,但措辞仍可能夸大你的角色。请读完每一处修改:你是最后一道检查。

确认后,这份定制简历会另存为一份标题为「职位 @ 公司」的新简历,并关联到它的主简历和职位。它的卡片会出现在追踪看板的「已投递」列;如果你在设置里开启了相应开关,还会同时生成求职信、联系邮件和面试准备。所有内容都可以在简历生成器里继续编辑。

预览打开期间,表单下方会出现一张 ATS Score Breakdown(ATS 评分明细)卡片。它是一个加权的启发式评分:关键词匹配占 55%,职位必备和加分技能的覆盖率占 25%,板块完整度占 20%。它不是对任何真实申请人跟踪系统的模拟,也不会被保存。

AI 能改什么,不能改什么。

定制的设计目标是改写,而不是编造。这些规则由代码强制执行,而不只是在提示词里提出要求。

AI 可以

  • 用职位描述的措辞改写你的个人简介和要点

  • 重新排序并突出技能

  • 选择保留哪些要点,每个条目最多三条

  • 添加职位要求的技能,前提是它在职位描述里逐字出现(会被标记为高风险)

AI 不可以

  • 修改你的姓名、邮箱、电话、所在地或链接

  • 修改雇主、职位名称或日期

  • 修改学校、学位或教育经历的日期

  • 添加原文里没有的数字、百分比或指标

  • 删除你已有的技能、证书、语言或奖项

  • 添加新的工作、学校或项目

  • 改动你的自定义板块

构建。编辑任何内容,看到的就是打印出来的页面。

每份简历,无论是主简历还是定制简历,都在简历生成器里打开:左侧是编辑器,右侧是分页的实时预览,上方有简历、求职信、联系邮件、面试准备标签页,定制简历还有「JD 匹配」标签页。

简历生成器

  • 直接编辑每个板块:个人信息、个人简介、工作经历、教育背景、项目经历,以及技能与荣誉。
  • 给要点文本设置粗体、斜体、下划线和链接,并逐行切换项目符号。
  • 添加工作、学校、项目和要点;复制或删除条目。
  • 重命名、隐藏、显示板块并调整顺序,可以用上移、下移或拖放。
  • 添加三种自定义板块:自由文本、类似工作经历的条目列表,或简单的字符串列表。
  • 缩放,切换页边距显示,查看实时页数。
  • 「AI 重新生成」;「重置」回到上次保存的版本;「保存」(编辑时也会自动保存);「下载」按当前模板设置导出 PDF。
Template & Formatting 面板中选中了 Modern Two Column 模板和蓝色强调色,预览显示双栏简历:左栏是个人简介和工作经历,右栏是教育背景、技能、语言和链接
现代双栏模板,蓝色强调色。

七套模板

  • 单栏

    1 栏

  • 双栏

    2 栏

  • 现代

    1 栏,带强调色

  • 现代双栏

    2 栏,带强调色

  • LaTeX

    1 栏

  • 简洁

    1 栏

  • 鲜明

    2 栏,带强调色

双栏模板在阅读顺序上把主要内容放在前面,因此文本提取工具会先读到你的工作经历,再读侧栏。

排版控件

纸张尺寸
A4 或美式信纸(US Letter)。
页边距
每边 5 到 25 mm(默认 10 mm)。
间距
板块、条目和行间距,分五档。
字号
正文字号,以及姓名和板块标题的缩放比例。
字体
衬线、无衬线或等宽,标题和正文分别选择。
紧凑模式和联系方式图标
开或关。
强调色
蓝色、绿色、橙色或红色,适用于现代、现代双栏和鲜明模板。
恢复默认设置
随时可用。

JD 匹配

在定制简历上,「JD 匹配」标签页把职位描述和你的简历并排显示,并用黄色高亮你的简历中已经包含的每个职位描述关键词。

匹配率就是简单的算术,不涉及 AI:

  1. 1

    取职位描述中的词,去掉常见英文词和招聘启事里的套话(比如「team」、「role」和「experience」),保留三个字母及以上的词。

  2. 2

    对你的简历做同样的处理。

  3. 3

    匹配率 = 简历中出现的职位描述关键词数 ÷ 职位描述关键词总数。

50% 及以上显示绿色,30% 起显示琥珀色,低于 30% 显示红色。因为它会统计招聘启事中每个有意义的词,包括公司背景介绍,一份很强的简历也常常落在 30% 到 50% 之间。用它来找出缺失的技能和术语,不要把它当作及格线。目前它只统计纯 a–z 字母组成的词,所以带重音符号的词以及中文、日文和韩文文本都不会被计入。

JD Match 标签页:已提取 108 个关键词,找到 37 处匹配,匹配率 34%;左侧是 Senior AI Engineer, LLM Platform 岗位的职位描述,右侧是简历,匹配的关键词用黄色高亮
提取了 108 个关键词,其中 37 个出现在简历中:34%。招聘启事里的公司背景介绍也计算在内。

撰写。求职信和面试准备,出自同一份简历。

每一项都根据你的简历、针对同一个职位撰写。你可以在简历生成器的标签页里按需生成,也可以在设置里打开开关,让它们在你每次确认定制简历时自动生成。

简历生成器中的 Cover Letter 标签页:打印预览中有候选人的姓名和联系方式、日期,以及一封写给 Northwind Labs 招聘团队、申请 Senior AI Engineer 职位的信

求职信

一封 100 到 150 词的简短信件,根据你的简历针对具体职位撰写。提示词要求模型不编造简历里没有的任何内容。在打印版式旁边编辑它,然后保存、重新生成,或下载为 PDF。

简历生成器中的 Outreach Mail 标签页:一条写给 Northwind Labs、关于 Senior AI Engineer 职位的简短消息,可按 LinkedIn 或邮件预览,下方是 How to use 使用步骤

联系邮件

一封 70 到 100 词的冷邮件或 LinkedIn 消息,针对同一职位、根据你的简历撰写。你可以编辑、重新生成,并复制到剪贴板。和求职信一样,它的提示词也可以在设置里换成你自己的。

简历生成器中的 Interview Prep 标签页:Role-Fit Analysis 列出经历与职位吻合的地方和一个需要弥补的差距,下面是一个基于简历的问题,附有关注点和建议回答要点

面试准备

  • 岗位匹配分析:你的经历与职位吻合的地方,以及需要弥补的差距。
  • 基于简历的问题:面试官可能会问的问题,每个都附有关注点和建议回答要点。
  • 项目追问:关于你的项目的深入问题。
  • 技能差距:职位要求什么、为什么重要、如何准备。这些是准备目标,不会作为技能加进你的简历。
  • 沟通要点:可以反复回到的简短主题。

AI 增强,用于主简历

打开你的主简历,点击「增强简历」。AI 会找出内容单薄的工作经历和项目条目,并就这些条目问你最多六个问题。它根据你的回答为每个条目写出两到四条新要点,你审核之后再点击「添加到简历」。它只使用你提供的细节,不会编造指标。

AI 重新生成,适用于任何简历

在简历生成器里,选择要重写的工作经历、项目或技能,并写一条指令,比如「使用更有力的行动动词」或「突出领导力」。在应用任何改动之前,你会看到修改前后的预览。提示词禁止添加新的事实、指标、日期、公司、职位或成就。

追踪。所有申请,一块看板。

申请追踪是一个用于求职的看板。你确认的每份定制简历都会自动生成一张卡片;对于还没定制简历的职位,你也可以手动添加卡片。

Application Tracker 看板:Saved、Applied、No Response 和 Response 四列,每列一到两张卡片,每张卡片显示公司、职位、投递日期和 Shared resume 标记,底部是阶段标签
七个阶段
已保存、已投递、无回复、有回复、面试、已录用和已拒绝。
卡片
显示公司、职位和投递日期;如果同一份主简历用于不止一项申请,还会显示「共享简历」标记。卡片在「已保存」以外的任何阶段创建时,或第一次移出「已保存」时,会记下日期。
使用看板
在列内拖动卡片,或拖到其他阶段。用箭头按钮滚动,或点阶段标签直接跳转。选中多张卡片后,可以用「移动到……」一起移动,或一次性删除。「管理」可以隐藏你用不到的阶段;至少会保留一个阶段可见。
从追踪看板打开的一张卡片:Northwind Labs,Senior AI Engineer, LLM Platform,处于 Interview 阶段,包含职位描述、关于招聘人员初筛和现场面试轮次的备注、Save Notes 按钮和 Edit Resume 按钮

卡片详情

点击卡片可以阅读完整的职位描述、写备注,并打开你投递时用的那份简历:「编辑简历」会带你进入简历生成器。如果那份简历之后被删除了,卡片仍能打开,并会提示你。

Add Application 对话框:简历选择器设为 Sarah Chen Master Resume,一个空的职位描述输入框,可选的 Company 和 Role 字段,Status 选择器设为 Applied,以及 Add 按钮

手动添加申请

点击「添加申请」,选择一份简历,粘贴职位描述,并选择起始阶段,比如为打算以后再定制的职位选「已保存」。公司和职位是可选项:留空的话,AI 会从职位描述中提取。

按你的方式运行。你的电脑,你的模型,你的数据。

Resume Matcher 不附带 AI 模型。你自己接入一个,云端的或者本机的都行,提示词、校验和排版由应用负责。

接入模型

支持的服务商、它们在设置页面里的默认模型,以及运行位置
服务商 默认模型 运行位置
OpenAI gpt-5-nano-2025-08-07 云端
Anthropic(Claude) claude-haiku-4-5-20251001 云端
Google Gemini gemini-3-flash-preview 云端
DeepSeek deepseek-chat 云端
OpenRouter deepseek/deepseek-chat 云端
Groq llama-3.3-70b-versatile 云端
Azure AI Foundry mistral-large-latest 云端
Ollama gemma3:4b 你的电脑
兼容 OpenAI 接口的服务(llama.cpp、vLLM、LM Studio) 自行填写 你的电脑

你可以填写服务商提供的任何模型名称。没有官方规定的最低模型要求,但小模型可能处理不好定制步骤使用的结构化编辑格式。

可以在设置页面里配置(服务商、模型、API 密钥;用代理或本地服务时还要填 Base URL;先「保存」,再「测试连接」),也可以用环境变量配置,写在 apps/backend/.env 或你的 Docker 环境里:LLM_PROVIDER、LLM_MODEL、LLM_API_KEY,需要时再加 LLM_API_BASE。服务商名称用小写(anthropic、ollama)。在应用里保存的设置优先于环境变量。

设置里还有

系统状态
LLM 是否正常、数据库是否已连接,简历、职位和定制次数的统计,以及是否已配置主简历。
推理深度
用于具备推理能力的模型(gpt-5 系列、Claude 3.7+、DeepSeek R1、OpenAI o1/o3)。「自动」不发送任何值,兼容性最好。
内容生成
几个开关,在你每次确认定制简历时生成求职信、联系邮件和面试准备。三者默认都关闭。求职信和联系邮件的提示词可以换成你自己的,只要保留 {job_description}、{resume_data} 和 {output_language} 占位符即可。
提示词设置
默认的定制强度。
危险区域
「清除 API 密钥」会删除所有已保存的密钥;「重置数据库」会删除所有简历、职位和生成的内容。两者都无法撤销。

在设置页面里输入的 API 密钥会加密保存。每家服务商各自保存自己的密钥,所以切换服务商不会清除另一家的密钥。

自带 AI 密钥

Settings 页面:系统状态显示 LLM 正常、数据库已连接、8 份简历、8 个职位、7 次优化,并已配置主简历;下方是 LLM 配置,有九个服务商可选,已选中 Anthropic,模型为 claude-haiku-4-5-20251001,有 API 密钥和 Base URL 字段,推理深度设为 Auto,以及 Save 和 Test Connection 按钮

七种语言

英语、西班牙语、简体中文、日语、巴西葡萄牙语、法语和韩语。界面语言决定界面显示的语言;内容语言是 AI 写作所用的语言,用于定制简历、求职信、联系邮件和面试准备。两者分开设置,所以你可以用英文界面,同时写一份日文简历。PDF 内置了 Noto Sans 字体,用于中文、日文和韩文文本。

PDF 导出

简历和求职信导出为 PDF。应用会打开一个无头 Chromium,载入简历的纯打印版本并打印出来,所以 PDF 里是真实的文本,可以被选中、复制,也能被软件读取。标题是真正的标题,双栏布局在阅读顺序上保持主要内容优先,页面与简历生成器里一致:模板、字体、间距和纸张尺寸都相同。

导出需要前端处于运行状态。本地运行时,安装 Playwright 的 Chromium(uv run playwright install chromium),或者装好 Chrome 或 Edge;Docker 镜像已包含所需的一切。

你的数据

所有数据都在一个文件夹里,即 apps/backend/data/ 或 Docker 卷:resume_matcher.db 是一个 SQLite 数据库,存有你的简历、职位描述、定制版本和追踪看板;config.json 存放非机密设置;还有你的 API 密钥,静态加密存储,加密用的密钥文件只有你的用户账号能读取。

只有你触发的 AI 请求会离开你的电脑,发给你选定的服务商。使用云端服务商时,发送的内容包括你的简历(连同联系方式)和职位描述。应用不含任何分析或追踪代码。启动时,AI 库(LiteLLM)会获取一份公开的模型价格表,这个请求不带你的任何数据。使用 Ollama 或其他本地模型服务,你的简历、职位描述和所有 AI 输出都留在你的电脑上。

安装

Docker 最快。Resume Matcher 以单个容器镜像发布在 Docker Hub(它是 Docker 赞助的开源镜像,Docker-Sponsored Open Source)和 GitHub Container Registry 上,两者都为 linux/amd64 和 linux/arm64 构建。然后打开 http://localhost:3000/settings 接入模型。

resume-data 卷保存你的数据库和设置,所以升级容器后数据仍在。要获得可重复的部署,请固定一个版本(例如 :1.3.0)。如果想从源码运行,你需要 Python 3.13+、Node.js 22+、npm 和 uv。

终端

$ docker run --name resume-matcher -p 3000:3000 \  -v resume-data:/app/backend/data \  srbhr/resume-matcher:latest

它不做什么

  • 它不是托管网站。你自己运行它,在本地或者 Docker 里。它为单个用户设计。

  • 它不会替你投递申请。也不连接招聘网站或雇主的系统。追踪看板只是你自己的记录。

  • 它不是 ATS 检测工具。它的评分是关键词和板块的启发式计算,不能预测任何雇主的软件会给你怎样的排名。

  • 它不会凭空写简历。它基于你上传的简历,或你在向导里的回答。

  • 它读不了扫描版 PDF。文件需要有文本层。

  • 它只导出 PDF。Word 文件只能作为输入,不能作为输出。

定制下一份。

后端、前端、SRE 还是机器学习:粘贴你想投的下一个职位,投出一份与它技术栈对口的简历。免费开源,在你自己的电脑上运行。