本地运行的求职自动化助手 —— 聚合职位、智能匹配、生成求职信、构建投递队列、批量投递(人工确认)、HR 沟通助手、数据看板。基于 44 类岗位知识库的 RAG 匹配引擎。纯本地运行,安全门控,不代点发送。
A locally-run job search automation assistant — job aggregation, smart matching, cover letter generation, application queue, batch sending (human-confirmed), HR chat assistant, data dashboard. RAG matching engine built on a 44-category job knowledge base. Pure local, safety-gated, never auto-clicks send.
A locally-run personal assistant that automates the automatable parts of job hunting while keeping the "actually send" step under your confirmation — avoiding platform ToS violations and protecting your account.
What it automates (full pipeline):
- Job aggregation — pulls from configured sources (built-in samples / RSS / custom HTTP JSON); one-click capture of real BOSS/Liepin job postings via browser extension
- Smart matching — explainable 0–100 scoring (skill overlap, job relevance, location, salary, experience) powered by a 44-category structured job knowledge base (RAG, not fine-tuning)
- Cover letter generation — auto-generates Chinese cover letters; optional LLM-enhanced versions
- Application queue — status flow:
new → matched → drafted → approved → sent - Batch sending (human-confirmed) — email via SMTP, but every send requires your click; hourly rate limits
- HR chat assistant — recognizes intent (salary/experience/resume/arrival/interview), drafts role-specific replies; you approve, extension fills the text, you click send
- Dashboard — application funnel, send rate, interview rate, HR reply rate, Kanban board
- Blacklist & follow-up — auto-skip blacklisted companies; detect "read but no reply" and generate polite follow-ups
Key design principle: The system automates "what to say and how to fit the role" but never auto-clicks send. Browser extension only reads messages and fills text — the final send is always your manual click.
一个本地运行的个人信息助手,把求职流程中「可自动化」的环节全自动跑起来,同时把「真正投递」这一步留给你的确认,避免违反招聘平台服务条款、保护账号安全。
- 聚合职位 — 按计划从配置来源拉取(内置示例源 / RSS / 自定义 HTTP JSON);也可通过浏览器扩展一键抓取 BOSS/猎聘等真实招聘页的职位,全自动,无需手录。
- 智能匹配 — 用可解释的评分(技能重叠、职位相关性、地点、薪资、年限)给每个职位打 0–100 分,列出匹配点与差距。
- 生成求职信 — 自动为匹配职位生成中文求职信与邮件主题;可接入 OpenAI 兼容 LLM 生成更个性化的版本(可选,默认离线模板)。
- 构建投递队列 — 匹配职位自动进入「待投递」,状态流转:
new → matched → drafted → approved → sent。 - 批量投递(人工确认) — 邮件通道(SMTP)全自动发送,但每封都需你点「批准并发送」;带每小时发送上限。
- 沟通助手(自动聊 HR) — BOSS 直聘 / LinkedIn 等聊天场景:HR 发来消息,系统按该岗位定制好回复草稿(识别"薪资/经验/简历/到岗/面试"等意图),你一键「批准并发送」。
- 追踪与看板 — 仪表盘实时查看职位库、待投递、已发送、沟通会话、资料完整度。
- 数据看板(📊 数据看板页) — 投递漏斗(职位→匹配→批准→发送→面试)、发送率/面试率/HR 回复率卡片、按状态的看板可一键推进;清晰掌握求职进度与投产比。
- 黑名单自动沉淀 — 把「已读不回 / 不匹配 / 你拒绝」的公司一键拉黑(手动或自动),之后匹配自动跳过,避免重复投递无效岗位。
- 已读不回跟进提醒 + 复聊话术 — 自动检测「HR 发消息后超过 N 天你还没回复」的会话并提醒,一键生成礼貌的跟进话术(模板或 LLM)。
- 定时调度 — 后台线程按配置间隔自动拉取 + 匹配。
- 浏览器扩展 · 零手填 — 把招聘网站接到本系统:一键抓职位、按表单字段自动填入为你定制的简历内容、把拟好的 HR 回复填进输入框。只有平台强制的真人点击(发送 / 提交)留给你。
简历分析、匹配打分、简历优化不是凭空生成,而是建立在 data/jd_knowledge.json 这个结构化的岗位要求知识库之上(检索增强 / RAG,而非模型微调)。
- 规模:覆盖 44 个岗位方向(后端/前端/移动/算法·大模型·AI/数据/产品/运营/市场/测试/安全/量化/区块链/嵌入式等),每个岗位含硬性要求、加分项、关键词、核心职责、软技能与薪资带。
- 来源:联网抓取自 BOSS直聘、猎聘、拉勾、牛客、智联、各大厂招聘页、高校就业网、安全/量化/设计社区等真实 JD。
- 作用:① 贴简历优化时,先从这个库检索该岗位的真实要求;② JD 文本提取的词表(LEXICON)由该库自动派生,覆盖 ~1100 个细分技能词;③ 匹配/打分据此给出可解释的结论。
- 重建:
data/kb_draft_*.json是合并输入,运行python3 scripts/build_knowledge.py更新知识库。字段、历史规模与来源限制见 知识库说明。
说明:强行"微调一个模型"在本地不可行且无必要;把真实市场数据沉淀为结构化领域知识,分析才"有据可依"且可审计、可迭代——这正是本项目对"训练"的务实落地。
cd resume-auto-apply
./run.sh
# 浏览器打开 http://localhost:8011run.sh 会用隔离的 Python 虚拟环境安装依赖(fastapi / uvicorn / python-multipart / httpx)并启动服务。
也可手动:
python3 -m venv venv && venv/bin/pip install -r requirements.txt && PYTHONPATH=. venv/bin/uvicorn app.main:app --port 8011
- 个人资料 — 填写姓名/目标职位/技能/城市/薪资期望等,资料越完整匹配越准。可粘贴完整简历 HTML。
- 职位库 → 拉取职位 — 首次会加载内置示例职位(演示用)。要接真实来源,去「设置 / 来源」配置 RSS 或 HTTP JSON(见
config/defaults.json)。 - 匹配评分 — 一键给全部未投递职位打分并生成求职信草稿。
- 待投递 — 检查/修改求职信与收件邮箱,点「批准」或「批准并发送」。
- 设置 — 配置 SMTP(邮件投递)、LLM(增强生成)、调度间隔、安全策略。
- 装浏览器扩展 — 把
connector/boss-zhipin-extension/加载到 Chrome/Edge,即可在招聘网站上一键抓职位、自动填表、自动填 HR 回复(详见该目录 README)。
| 通道 | 状态 | 说明 |
|---|---|---|
| 邮件投递 (SMTP) | ✅ 可用 | 全自动 + 人工确认队列,推荐主通道 |
| 沟通助手 (BOSS 直聘等) | ✅ 可用 | HR 消息自动进助手 → 按岗位拟回复草稿 → 你在 BOSS 页面确认发送;见下 |
| 站点自动投递 | 🔌 扩展点 | app/submitter.py:apply_via_site 为占位实现,需你按合规方式自行扩展 |
| 浏览器扩展(零手填) | ✅ 可用 | 抓取真实职位 + 自动填申请表 + 自动填 HR 回复;见 connector/boss-zhipin-extension/README.md |
系统不包含任何验证码绕过、反爬对抗、或针对第三方招聘网站的无授权自动登录提交。原因:
- 在 Boss直聘 / 智联招聘 / LinkedIn 等平台用脚本自动投递,通常违反其《服务条款》,存在封号风险;
- 把你的账号密码交给无授权的自动脚本本身也不安全;
- 「人工确认」这一环既合法合规,也让你对每一份发出去的简历有掌控。
如果你确实想做自有账号/自有招聘门户的自动投递,请在 apply_via_site 中按以下原则实现:
- 仅自动化服务条款允许的站点或你自己的招聘门户;
- 不存储明文密码,手动登录后由你确认再提交;
- 遵守 robots.txt 与速率限制(见
safety设置)。
设计原则(务必理解):系统把"想说什么、怎么贴合岗位"全自动了,但"真正发出去"这一步始终由你本人确认。BOSS 直聘没有公开 API,且无人值守冒充聊天违反其《用户协议》、极易封号。因此本功能通过你本机运行、你亲自监督的浏览器扩展来桥接:
- 在「沟通」标签页点「+ 模拟会话」体验,或在 BOSS 直聘页面安装扩展后,HR 消息会自动进入助手;
- 点「拟回复」→ 系统根据该岗位的定制简历 + JD 生成贴合回复(识别薪资/经验/简历/到岗/面试等意图);
- 你检查后点「批准并发送」→ 草稿标记为 approved;扩展会把文字填进 BOSS 输入框;
- 你在 BOSS 页面亲自点发送,再回助手点「标记已发送」。
扩展只"读取消息"和"填空",绝不自动点击发送。详见
connector/boss-zhipin-extension/README.md。
resume-auto-apply/
├── app/
│ ├── database.py # SQLite 数据层(profile/jobs/applications/conversations/messages/settings)
│ ├── profile.py # 资料完整度 + 简历渲染
│ ├── aggregator.py # 职位聚合(demo / rss / http 源)
│ ├── matcher.py # 可解释匹配评分
│ ├── generator.py # 求职信生成(模板 + 可选 LLM)
│ ├── tailor.py # 按岗位定制简历 + 初筛匹配报告
│ ├── submitter.py # 邮件投递 + 人工确认队列 + 站点扩展点
│ ├── chat.py # 沟通助手:意图识别 + 按岗位拟回复 + BOSS 桥接
│ ├── scheduler.py # 定时调度
│ └── main.py # FastAPI 服务 + 仪表盘接口
├── connector/boss-zhipin-extension/ # 浏览器扩展:零手填桥接(抓职位 / 自动填表 / 填 HR 回复)
├── frontend/ # 仪表盘(原生 HTML/JS)
├── config/defaults.json# 默认设置(来源 / SMTP / LLM / 调度 / 安全 / 沟通)
├── data/ # SQLite 数据库(自动生成)
├── requirements.txt
├── run.sh
└── README.md
所有数据保存在本地 data/app.db,不上传任何服务器。LLM 仅在你显式启用并填入 API Key 后才会把「你的资料 + 岗位描述」发给对应 API。
本工具用于辅助个人求职管理。使用者需自行确保对目标平台的使用符合其服务条款与所在地法律法规。作者不对因使用本工具导致的任何账号限制或法律后果负责。