把市场真实需求和你的真实项目技术栈做匹配,先看清还差什么,再陪你一步步补到「可以投了」。
求职准备阶段,有两个反复出现的痛点:
- 不知道该补哪些技术栈。 岗位 JD 一堆要求,到底哪些是硬门槛、哪些自己已经能证明、哪些是真缺口?靠感觉判断很容易补错方向。
- 拖延,总觉得"还没准备好"。 准备是个无底洞,越准备越焦虑,迟迟不敢投——而最佳投递窗口就这么错过了。
投得过把这两件事接成一条闭环:先用真实岗位需求反推你该补什么,把判断过程沉淀成可追溯的能力缺口报告;再用准备度评分、每日计划和「可以投了」信号陪你补到能投,专治"总觉得还没准备好"的拖延。
有真实项目经历的求职人员(实习 / 校招场景)。 工具的核心是拿你真实写过的项目去对齐市场真实在招的岗位,所以它最适合手里有项目(无论是本地仓库还是 GitHub 上的)、想知道自己离目标岗位还差多远、并希望被陪着补到能投的人。
求职范围聚焦日常实习 + 春招/秋招校招(无工作年限要求的场景),任何"3 年经验"类要求会被识别为「与你无关」,不拉低你的准备度。
市场需要什么 你能提供什么
(真实岗位 JD) × (扫描真实项目代码库提取的技术栈)
│ │
└──────────── 匹配 ───────────┘
│
能力缺口诊断
│
准备度评分 ──→ 每日计划 ──→ 简历 / 面试陪跑 ──→ 「可以投了」
- 需求侧:录入目标岗位 JD(支持手动粘贴、Excel / CSV 批量导入),大模型按归类聚合、结构化为 P0–P3 分级能力要求。
- 供给侧:添加项目(支持本地路径或 GitHub 链接),系统扫描代码库、提取真实技术栈作为能力证据。
- 匹配:两侧逐条比对,输出可追溯的缺口报告。
- 陪跑:基于缺口给出准备度评分、每日计划、简历要点与模拟面试,并在三项准备就绪时发出「可以投了」信号。
投得过分为两个部分,目前两部分均已闭环可用。
市场需要什么,你能提供什么。
- 岗位库:录入目标岗位 JD,按归类聚合后一次结构化为分级能力要求;支持 Excel / CSV 批量导入、按城市 / 公司筛选、行内删除与清空归类。
- 个人资料:维护目标岗位方向、目标城市、可投入时间、学历阶段、院校层次、专业、预计毕业时间与每周可实习天数,作为 JD 解析与学历 / 出勤匹配的上下文。
- 项目管理:添加项目(本地路径 / GitHub 链接),扫描代码库提取真实技术栈与可展示亮点。
- 能力缺口诊断:需求 × 供给逐条匹配,输出 P0–P3 分级缺口报告;每条附证据强度(强 / 弱 / 可挖掘 / 缺失)与判断理由,学历 / 出勤类要求按个人资料匹配,并可纳入简历自述作为补充证据。
知道 gap 之后,陪你一步步补到能投。
- 准备度仪表盘:按归类量化你对目标岗位的准备程度(P0–P3 加权评分),可展开「评分依据」看每档要求的覆盖构成与投递阈值阶梯;每个归类还有独立的「简历就绪度」指标。
- 每日计划:选定首次投递日后,系统把未覆盖的项目类缺口拆解成每日任务、按可投入时长排进 timeline,给出进度环、预计完成日与「赶不赶得上」提示;任务完成需提交「做了什么 / 怎么做」,由大模型对照验收标准核验通过才算完成。
- 简历要点:从你项目的真实证据改写成简历 bullet(不虚构,弱证据诚实标注为风险提示),按风险分层展示、可直接复制。
- 简历上传打分:上传简历(PDF / LaTeX),对照目标归类的 P0–P3 要求评「简历就绪度」,逐条标注已覆盖 / 偏弱 / 缺失。
- 模拟面试:基于你的真实项目证据出题(技术题严格锚定项目,不会拿学历 / 出勤当技术题考),答题后给五维评分(结构 / 深度 / 真实性 / 业务 / 风控)与改写建议,并附「反问面试官」清单。
- 「可以投了」信号:当能力准备度、简历就绪度、模拟面试三项均达标时,发出停止准备、开始投递的收口提示。
全流程的大模型判断都携带 reasoning 并在前端可展开查看,结果可解释而非黑盒打分;每个 LLM 环节都内置确定性 fallback,无 API Key 也能降级运行。
- Python 3.12+
- uv(推荐的 Python 依赖与运行工具;下方命令按 uv 编写)
- Node.js 18+ 与 npm
- 一个 OpenAI 兼容的大模型 API Key。默认配置使用 DeepSeek;如果使用其他兼容服务,需要同时修改
.env里的DEEPSEEK_BASE_URL和DEEPSEEK_MODEL
git clone https://github.com/megg-ops/Ready2Apply.git
cd Ready2Apply仓库不会提交 .env、本地 SQLite 数据库、Python 虚拟环境或 node_modules。首次拉取后需要按下面步骤安装后端和前端依赖。
如果你使用 AI coding agent,也可以把仓库交给 agent 处理:例如 Claude Code、Codex、OpenCode、OpenClaw、Hermes 等,让它根据本机环境自动安装依赖、配置 .env 并启动项目;下方命令主要作为手动运行参考。
cp .env.example .env
# 默认使用 DeepSeek,至少填入:
# DEEPSEEK_API_KEY=your_key_here
# 如需替换为其他 OpenAI 兼容服务,同时修改:
# DEEPSEEK_BASE_URL=...
# DEEPSEEK_MODEL=...数据库为本地 SQLite,首次启动自动创建(默认 ~/.ready2apply/ready2apply.db),无需手动迁移。
cd backend
uv sync
uv run uvicorn app.main:app --reload --host 127.0.0.1 --port 8710后端默认只监听本机 127.0.0.1:8710。启动后,在运行后端的这台机器上访问 API 文档:http://127.0.0.1:8710/docs。
cd frontend
npm install
npm run dev前端默认启动在 http://127.0.0.1:3000,开发配置会把 /api 代理到 http://127.0.0.1:8710。
bash backend/run_dev.sh第一步:设置个人资料 —— 在「个人资料」填写目标岗位方向、目标城市、每日可投入时间、学历阶段、院校层次、专业、预计毕业时间和每周可实习天数。这些信息会作为 JD 解析与学历 / 出勤匹配的上下文。
第二步:添加目标岗位 —— 在「岗位库」粘贴 JD 或批量导入 Excel / CSV,系统按归类聚合并结构化为分级能力要求。
第三步:添加项目 —— 在「项目管理」填入本地路径或 GitHub 链接,系统扫描代码库、提取真实技术栈作为你的能力证据。
第四步:生成缺口报告 —— 一键比对,得到分级诊断:哪些已达标、哪些证据不足、哪些是硬缺口,以及每条结论的理由。
第五步:陪跑到能投 —— 在「仪表盘」看准备度评分与评分依据;在「每日计划」选定投递日、按 timeline 逐日补齐缺口;在「简历诊断」从真实项目证据改写要点、上传简历查就绪度;在「模拟面试」按真实项目出题作答、拿五维评分。当能力、简历、面试三项就绪,系统提示「可以投了」。
| 层 | 技术 |
|---|---|
| 后端 | Python 3.12 · FastAPI · SQLAlchemy · SQLite · Pydantic v2 · Alembic 迁移 |
| 大模型 | DeepSeek(OpenAI 兼容 SDK)· tenacity 重试 · 文件式 Prompt + SHA256 版本化 · 调用全量落库 |
| 代码扫描 | GitPython(本地仓库解析 / GitHub 浅克隆)· 系统敏感目录护栏 |
| 前端 | React · TypeScript · Vite · Ant Design · TanStack Query · Zustand |
| 类型契约 | 后端 OpenAPI → openapi-typescript 生成前端类型,端到端类型安全 |
- 真实供需匹配:需求来自真实 JD,供给来自真实代码库扫描,而非自我描述,匹配结果更可信。
- 结构化缺口模型:要求按 P0–P3 分级、按归类聚合,证据按"强 / 弱 / 可挖掘 / 缺失"分类,区分硬门槛、可证明、加分项,而非朴素关键词加权。
- LLM + 确定性 fallback 双轨:解析、缺口、简历改写、出题、答案评估、任务核验全部优先走大模型,失败或无 Key 时降级到确定性规则,保证可用性。
- 可追溯与透明化:每次 LLM 调用全量落库、prompt 以 SHA256 版本化、命中缓存即复现;所有判断携带模型理由,前端可展开,结果可解释而非黑盒打分。
.
├── backend/ # 主服务:FastAPI 应用、数据模型、Alembic 迁移
│ └── app/
│ ├── jd/ # JD 归类聚合解析(需求侧)
│ ├── project/ # 代码库扫描与技术栈提取(供给侧)
│ ├── gap/ # 能力缺口诊断 + 学历/出勤匹配
│ ├── readiness/ # 准备度评分 + 「可以投了」信号
│ ├── plan/ # 每日计划 timeline + 任务完成核验
│ ├── resume/ # 简历要点改写 + 简历上传打分
│ ├── interview/ # 模拟面试出题 + 五维答案评估
│ └── prompts/ # 文件式 Prompt 模板(SHA256 版本化)
├── frontend/ # Web 前端:React + TypeScript + Vite
└── docs/ # 截图
# 后端:测试 + 覆盖率门禁(100%)、类型检查、lint
cd backend
uv sync --extra dev
uv run pytest # 覆盖率门禁 100%
uv run mypy app # 类型检查
uv run ruff check app # lint
# 前端:单元测试 / 类型检查 / 构建
cd frontend
npm run test # vitest
npx tsc -b # TypeScript project references
npm run build # 生产构建提交遵循 Conventional Commits 规范。
- 阶段 1 · 供需匹配 岗位归类聚合解析、项目代码扫描、P0–P3 能力缺口报告
- 阶段 2 · 项目陪跑 准备度评分 · 每日计划 timeline · 简历要点与上传打分 · 模拟面试 · 「可以投了」信号
- 多主题切换 + 全页面视觉打磨 暖色 / 暗色 / 彩色 / 怀旧 四套主题,逐页信息架构重构与设计抛光
- 本地岗位爬取入口 按合规约束重新接入,降低手动录入成本
- 当前版本不内置任何岗位爬取功能,岗位信息由用户手动录入或离线导入。
- 代码扫描在本地路径或 GitHub 浅克隆的临时目录中进行;为生成项目分析,系统会将经过截断的项目上下文发送给配置的大模型服务(默认 DeepSeek),包括目录结构、依赖文件片段、README 摘要,以及最多 10 个关键源文件的前 150 行。请不要扫描包含敏感源码、密钥或私有数据的仓库。
- 简历上传打分会将简历文本发送给配置的大模型服务用于对照评分;请自行评估其中个人信息的敏感度。
- 本工具不进行自动投递。岗位、项目、分析结果以及 LLM 调用记录默认存储在本地 SQLite;其中
llm_calls会记录发送给大模型的输入和模型输出,便于缓存、复现和排查。 - 大模型输出仅供参考,不构成任何录用或求职结果的保证。
MIT © 2026 Freya







