求职信
一封 100 到 150 词的简短信件,根据你的简历针对具体职位撰写。提示词要求模型不编造简历里没有的任何内容。在打印版式旁边编辑它,然后保存、重新生成,或下载为 PDF。
Resume Matcher 的全部功能,按你使用的顺序排列。粘贴职位描述,审核 AI 提出的每一处修改,在简历生成器里完善简历,写好求职信,再追踪这份申请。一切都在你自己的电脑上运行,使用你选择的 AI 模型。
接入 AI 模型。在设置页面里接入:使用你自己 API 密钥的云端服务商,或者本地模型。
添加主简历。上传 PDF 或 Word 文件,或者用简历向导创建一份。
粘贴职位描述。AI 会针对你的主简历提出定向修改。
审核修改。在修改前后的对比预览里查看,然后确认或重新生成。
在简历生成器里润色。选择模板,调整布局,编辑任何内容。
生成配套材料。为同一个职位生成求职信、联系邮件和面试准备。
下载。简历和求职信,均为 PDF。
追踪申请。在看板上追踪。确认一份定制简历时,会自动为它添加卡片。
定制只改写你简历里已有的内容。它不会编造经历,在你读过并确认修改之前,什么都不会保存。
主简历是你完整、未经定制的简历:所有工作、项目和技能都在一处。上传不超过 4 MB 的 PDF、DOC 或 DOCX 文件,AI 会把它转换成可编辑的结构化板块,并保留一份原始文本。扫描件这类纯图片 PDF 没有文本层,会被拒绝;请先用 OCR 处理。
没有简历文件?简历向导一次问一个问题,最多 15 个,并在你回答的同时把简历写进实时草稿。它被明确要求绝不编造雇主、职位、日期、学位、证书、指标、工具或技能。
最多可以保留五份主简历,作为不同的职业方向,比如一份投后端岗位,一份投机器学习岗位。其中恰好有一份是默认简历,定制页面从它开始。
选好定制强度,粘贴职位描述(最多 100,000 个字符),然后点击「生成定制简历」。
AI 提取公司、职位、必备和加分技能、主要职责以及关键词。这些信息随职位一起保存,所以之后追踪卡片无需再调用一次 AI,就能拿到公司和职位。
AI 为每条要点打分,评估它与职位的相关度。它只打分,不能改写或编造要点。然后由代码为每段工作或每个项目最多保留三条要点,并通过实际渲染页面,检查简历能否放进一页。
AI 提出要突出哪些技能。代码只接受满足以下条件之一的技能:已经在你的简历里、出现在你简历的文本中,或者是在职位描述里逐字出现的必备或加分技能。
AI 不会重写整份简历,而是返回一份具体的修改清单,每条都引用它要替换的原文。代码会对照你的简历核实每一处引用,并拒绝针对受保护字段的修改。
代码会还原你的个人信息和日期,保留所有原有技能,删除一批用滥了的「AI 腔」短语(除非职位描述里用到了它们);如果某行改写引入了原文没有的数字,就撤销这行改写。
整个流程有时间上限,默认四分钟,慢速模型不会让应用卡住。
预览会显示:
确认并保存保留结果;拒绝并重新生成丢弃结果并重试。这个决定针对整个预览。护栏能拦住编造的数字、雇主和日期,但措辞仍可能夸大你的角色。请读完每一处修改:你是最后一道检查。
确认后,这份定制简历会另存为一份标题为「职位 @ 公司」的新简历,并关联到它的主简历和职位。它的卡片会出现在追踪看板的「已投递」列;如果你在设置里开启了相应开关,还会同时生成求职信、联系邮件和面试准备。所有内容都可以在简历生成器里继续编辑。
预览打开期间,表单下方会出现一张 ATS Score Breakdown(ATS 评分明细)卡片。它是一个加权的启发式评分:关键词匹配占 55%,职位必备和加分技能的覆盖率占 25%,板块完整度占 20%。它不是对任何真实申请人跟踪系统的模拟,也不会被保存。
定制的设计目标是改写,而不是编造。这些规则由代码强制执行,而不只是在提示词里提出要求。
用职位描述的措辞改写你的个人简介和要点
重新排序并突出技能
选择保留哪些要点,每个条目最多三条
添加职位要求的技能,前提是它在职位描述里逐字出现(会被标记为高风险)
修改你的姓名、邮箱、电话、所在地或链接
修改雇主、职位名称或日期
修改学校、学位或教育经历的日期
添加原文里没有的数字、百分比或指标
删除你已有的技能、证书、语言或奖项
添加新的工作、学校或项目
改动你的自定义板块
每份简历,无论是主简历还是定制简历,都在简历生成器里打开:左侧是编辑器,右侧是分页的实时预览,上方有简历、求职信、联系邮件、面试准备标签页,定制简历还有「JD 匹配」标签页。
单栏
1 栏
双栏
2 栏
现代
1 栏,带强调色
现代双栏
2 栏,带强调色
LaTeX
1 栏
简洁
1 栏
鲜明
2 栏,带强调色
双栏模板在阅读顺序上把主要内容放在前面,因此文本提取工具会先读到你的工作经历,再读侧栏。
在定制简历上,「JD 匹配」标签页把职位描述和你的简历并排显示,并用黄色高亮你的简历中已经包含的每个职位描述关键词。
匹配率就是简单的算术,不涉及 AI:
取职位描述中的词,去掉常见英文词和招聘启事里的套话(比如「team」、「role」和「experience」),保留三个字母及以上的词。
对你的简历做同样的处理。
匹配率 = 简历中出现的职位描述关键词数 ÷ 职位描述关键词总数。
50% 及以上显示绿色,30% 起显示琥珀色,低于 30% 显示红色。因为它会统计招聘启事中每个有意义的词,包括公司背景介绍,一份很强的简历也常常落在 30% 到 50% 之间。用它来找出缺失的技能和术语,不要把它当作及格线。目前它只统计纯 a–z 字母组成的词,所以带重音符号的词以及中文、日文和韩文文本都不会被计入。
每一项都根据你的简历、针对同一个职位撰写。你可以在简历生成器的标签页里按需生成,也可以在设置里打开开关,让它们在你每次确认定制简历时自动生成。
一封 100 到 150 词的简短信件,根据你的简历针对具体职位撰写。提示词要求模型不编造简历里没有的任何内容。在打印版式旁边编辑它,然后保存、重新生成,或下载为 PDF。
一封 70 到 100 词的冷邮件或 LinkedIn 消息,针对同一职位、根据你的简历撰写。你可以编辑、重新生成,并复制到剪贴板。和求职信一样,它的提示词也可以在设置里换成你自己的。
打开你的主简历,点击「增强简历」。AI 会找出内容单薄的工作经历和项目条目,并就这些条目问你最多六个问题。它根据你的回答为每个条目写出两到四条新要点,你审核之后再点击「添加到简历」。它只使用你提供的细节,不会编造指标。
在简历生成器里,选择要重写的工作经历、项目或技能,并写一条指令,比如「使用更有力的行动动词」或「突出领导力」。在应用任何改动之前,你会看到修改前后的预览。提示词禁止添加新的事实、指标、日期、公司、职位或成就。
申请追踪是一个用于求职的看板。你确认的每份定制简历都会自动生成一张卡片;对于还没定制简历的职位,你也可以手动添加卡片。
点击卡片可以阅读完整的职位描述、写备注,并打开你投递时用的那份简历:「编辑简历」会带你进入简历生成器。如果那份简历之后被删除了,卡片仍能打开,并会提示你。
点击「添加申请」,选择一份简历,粘贴职位描述,并选择起始阶段,比如为打算以后再定制的职位选「已保存」。公司和职位是可选项:留空的话,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)。在应用里保存的设置优先于环境变量。
{job_description}、{resume_data} 和 {output_language} 占位符即可。在设置页面里输入的 API 密钥会加密保存。每家服务商各自保存自己的密钥,所以切换服务商不会清除另一家的密钥。
英语、西班牙语、简体中文、日语、巴西葡萄牙语、法语和韩语。界面语言决定界面显示的语言;内容语言是 AI 写作所用的语言,用于定制简历、求职信、联系邮件和面试准备。两者分开设置,所以你可以用英文界面,同时写一份日文简历。PDF 内置了 Noto Sans 字体,用于中文、日文和韩文文本。
简历和求职信导出为 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 还是机器学习:粘贴你想投的下一个职位,投出一份与它技术栈对口的简历。免费开源,在你自己的电脑上运行。