功能可以少,但路径必须清楚。功能多但路径乱,用户只会在页面里迷路。功能少但路径顺,用户至少能走到最后一步。
我设想过一个最典型的使用场景。
晚上 10 点 40,用户刷到一个后端开发实习 JD,投递截止写着今晚 12 点。
他手里有一份简历。问题不是这份简历完全不能用,而是他不知道它现在能不能投。要不要先改项目经历?技能栈够不够?JD 里的 Redis、部署经验、AI 应用经验有没有对应上?还是先导出再说?
如果这个时候,一个简历工具上来先让他在”AI 评分””JD 匹配””模板中心””版本管理”几个入口里自己找路,那它已经输了。
因为用户缺的不是一堆功能按钮,而是一条清楚的路径:
从打开工具,到拿到一份自己敢投出去的简历,中间到底应该走哪几步。
这篇文章讲的就是这条路径,以及我为什么把简喵 V1 的产品流程设计成现在这样。
一、上一篇压成了 10 步,这一篇把它展开
上一篇需求分析里,我把简喵 V1 的核心链路压成了 10 步:
进入简喵 → 创建或导入简历 → 填写基础信息 → AI 评分 → 查看诊断
→ 优化表达 → 粘贴 JD 匹配 → 生成建议 → 确认修改 → 导出 PDF这一篇不重新发明流程,而是把这 10 步拆开。
每一步只回答四个问题:
用户看到什么?
系统在背后做什么?
AI 在什么时候介入?
这一步失败了,怎么办?
我设计这条流程时,心里有一个很简单的判断:
功能可以少,但路径必须清楚。
功能多但路径乱,用户只会在页面里迷路。功能少但路径顺,用户至少能走到最后一步。
简喵 V1 不应该一开始就做成一个大而全的求职平台。它的第一目标不是覆盖所有求职场景,而是让用户完成一件具体的事:
把一份普通简历改成一份可以投递的简历。
二、入口:为什么是三个,而且第一个不是”上传 PDF”
简喵 V1 的入口,我只保留三个:
手动创建简历。
GitHub 导入项目。
继续优化已有简历。
这三个入口对应三类用户。
手动创建,适合没有现成简历,或者想从头整理内容的人。
GitHub 导入,适合有项目仓库,但不会写项目经历的计算机学生。
继续优化,适合之前已经建过简历,现在想针对新岗位修改的人。
这里有一个我反复纠结过的取舍:
要不要把”上传 PDF / Word,自动解析简历”放在第一入口?
上传解析当然要做。它也是简喵最初设想过的入口之一。
但我不想把它当成 V1 唯一主入口。
原因很现实:简历 PDF 的格式太杂。有的有表格,有的有分栏,有的用了图标,有的文字顺序和视觉顺序对不上。强行解析,很容易出现字段错位、模块识别错误、内容丢失。
一旦用户看到自己的”教育经历”被塞进了”项目经历”,他对后面所有 AI 分析都会失去信任。
所以我的排序是:
V1 先把结构化编辑和 GitHub 导入做稳。
PDF / Word 解析可以作为辅助入口。
等核心链路跑通后,再逐步提高文件解析准确率。
这不是说解析不重要,而是它不应该在第一版里压过主线。
简喵第一版最重要的不是”用户能不能一键上传所有格式的简历”,而是”用户能不能稳定完成一次简历优化流程”。
三、GitHub 导入:它不是所有人的入口,但它是差异化入口
GitHub 导入不是所有用户都会用。
转码用户、非技术岗位用户、已经有工作经历的人,可能不需要这个入口。但对计算机学生来说,它很关键。
很多学生不是没项目,而是项目躺在 GitHub 里,简历上写不出来。
他可能做过课程项目、练手项目、小工具、博客系统、管理后台、爬虫脚本。但一写进简历,就只剩一句:
负责前后端开发。
这句话太空了。
所以 GitHub 导入要解决三个问题:
第一,找到用户的公开仓库。
第二,判断哪些仓库可能适合写进简历。
第三,把项目内容整理成简历项目经历。
一个合理的 GitHub 导入流程应该是:
输入 GitHub 用户名
↓
获取公开仓库列表
↓
读取仓库名称、简介、README、主要语言、更新时间
↓
筛选可能适合写进简历的项目
↓
用户手动勾选项目
↓
AI 生成项目经历初稿
↓
用户确认并修改这里最关键的一点是:
不能让 AI 全自动决定哪些项目一定要写进简历。
因为 AI 不知道哪个仓库是课程作业,哪个是跟教程敲的 Demo,哪个是 fork 来的,哪个是用户真正投入较多的项目。
系统可以做推荐,但最终选择权必须交给用户。
比如系统可以提示:
这个仓库 README 较完整。
这个仓库最近有更新。
这个仓库主要语言和目标岗位相关。
这个仓库可能是 fork 项目,需要确认本人贡献。
这个仓库描述过短,建议手动补充项目功能和个人职责。
这样更安全。
AI 可以帮用户整理真实信息,但不能替用户认领经历。
这是我给 GitHub 导入划的红线。
四、结构化整理:所有”废话建议”都来自这一步没做好
不管用户是手动创建,还是从 GitHub 导入,进入 AI 分析之前,都要先做一件事:
把简历拆成明确的结构化模块。
比如:
{
"projects"
{
"name"
"techStack"
"description"
"负责简历编辑、AI 评分、JD 匹配等核心模块开发"
]
}
]
"skills"
}这一步看起来像技术细节,但其实是产品体验的基础。
如果系统不知道哪一段是项目经历,哪一段是技能栈,哪一段是教育经历,它就只能对整篇文本做泛泛分析。
于是用户会收到这种建议:
建议增强项目亮点。
建议补充量化数据。
建议优化表达方式。
这些建议看起来正确,但没有执行价值。
真正有用的建议应该是:
项目「简喵 AI 简历优化系统」第 2 条描述缺少量化结果,建议补充评分维度数量、接口数量、导出耗时或真实用户反馈等指标。
这两种建议的差别很大。
前者像废话。
后者能直接指导用户修改。
后者成立的前提,是系统知道这条建议对应的是哪个模块、哪个项目、哪一条描述。
所以结构化不是为了让数据看起来整齐,而是为了让 AI 建议能落到具体位置。
五、AI 评分:为什么不是只给一个总分
结构化整理完成后,用户最想知道的问题是:
我这份简历现在到底怎么样?
如果系统只给一个总分,比如:
你的简历得分:78 分。
这个结果其实没什么用。
用户不知道为什么是 78 分,也不知道怎么从 78 分改到 85 分。
所以简喵的评分不能只给总分,而要拆成多个维度。
| 维度 | 看什么 |
|---|---|
| 内容完整度 | 基本信息、教育经历、项目经历、技能栈是否完整 |
| 表达清晰度 | 是否存在口语化、空泛、重复表达 |
| 项目含金量 | 项目是否体现技术栈、业务场景和个人贡献 |
| 量化表达 | 是否有数据、规模、性能、数量等证明 |
| 岗位相关性 | 简历内容是否和目标岗位匹配 |
| 结构合理性 | 模块顺序、重点分布是否适合阅读 |
| 面试可解释性 | 简历内容是否经得起追问 |
拆成七个维度,用户才能看到自己具体弱在哪里。
有的人内容很完整,但表达很空。
有的人技术栈写了一长串,但项目经历没有展开。
有的人项目不错,但没有任何量化数据。
有的人简历看起来很丰富,但和目标岗位关系不强。
有的人简历写得很漂亮,但里面的技术点自己讲不清楚。
这些问题不是同一种病,不能用一个总分糊过去。
简历优化的目标也不是单纯把分数顶上去,而是让用户知道:
下一步应该改哪里。
六、JD 匹配:用户要的是行动清单,不是 AI 读后感
评分之后,流程会进入一个分岔:
不粘贴 JD → 做通用简历优化
粘贴 JD → 做岗位匹配分析这两条路径都要保留。
因为不是所有用户一开始都有明确岗位。有的人只是想先把基础简历改好。
但对准备投递的人来说,JD 匹配才是更高价值的路径。
用户粘贴 JD 后,系统要做的不只是提取关键词,而是完成四件事:
第一,识别岗位类型。
比如后端开发、前端开发、AI 应用开发、测试开发等。
第二,提取核心技能。
比如 Spring Boot、MySQL、Redis、Vue3、TypeScript、Docker、RAG、Prompt 等。
第三,判断能力要求。
比如是否要求项目经验、部署经验、性能优化经验、团队协作经验、AI 应用落地经验。
第四,对比用户简历。
判断哪些已经覆盖,哪些表达不足,哪些完全缺失。
最后给用户看的,不应该是一大段话,而应该是一张行动表。
| JD 要求 | 简历匹配情况 | 建议 |
|---|---|---|
| 熟悉 Spring Boot | 已匹配 | 项目中已有体现,可以保留 |
| 熟悉 MySQL | 部分匹配 | 技能栈有出现,但项目经历没有展开表设计 |
| 了解 Redis | 部分匹配 | 建议补充缓存使用场景 |
| 有部署经验 | 缺失 | 如果项目已上线,应补充服务器部署和域名配置 |
| 有 AI 应用经验 | 已匹配 | 建议放到项目亮点前两条 |
这种展示方式比一句”你的简历与岗位匹配度较高,但仍需补充部分技能描述”有用得多。
用户需要的是行动清单,不是 AI 读后感。
七、优化建议:必须具体到”哪一条该怎么改”
AI 评分和 JD 匹配之后,才进入真正的优化建议阶段。
这里我给自己定了一条铁律:
优化建议必须具体到位置。
不能只说:
项目经历表达不够专业。
这句话太泛了,用户不知道改哪里。
一条合格的建议,至少要包含四个部分:
问题是什么。
出现在什么位置。
为什么需要改。
可以怎么改。
例如:
问题:项目描述过于空泛
位置:项目经历 > 简喵 AI 简历优化系统 > 第 1 条
原因:只写"完成 AI 简历优化功能",没有体现技术实现和业务价值
建议:改为"基于 Spring Boot 接入大模型 API,实现简历评分、项目经历润色
和 JD 匹配诊断;通过结构化 Prompt 约束输出格式,并对 AI 返回结果进行字段
校验和异常兜底"这样的建议,用户才能判断它到底有没有用。
他能看出来:
这个问题是不是准确。
这个建议是不是符合真实经历。
这句话能不能直接用。
有没有需要自己降级或修改的地方。
简喵不能只做”AI 帮你改完”。
更合理的方式是:
AI 给出建议,用户确认后应用。
因为简历是用户自己的,最终责任也在用户自己身上。
八、Before / After:让用户看到”为什么变好了”
用户最关心的不是 AI 说了什么,而是改完到底有没有变好。
所以每条优化建议都应该提供 Before / After 对比。
| 优化前 | 优化后 |
|---|---|
| 负责后端接口开发 | 基于 Spring Boot 设计用户登录、简历管理、AI 评分等核心接口,使用 JWT 完成身份认证,并通过统一异常处理和参数校验提升接口稳定性 |
| 用 Redis 做缓存 | 引入 Redis 缓存热点查询结果,减少重复数据库查询,并为后续限流和任务状态管理提供基础能力 |
| 使用 AI 优化简历 | 接入大模型 API 实现简历评分、项目经历润色和 JD 匹配诊断,通过结构化 Prompt 和 JSON 校验提升输出稳定性 |
这个对比很重要。
因为用户可以直观看到差距:
优化前太短。
优化前太泛。
优化前没有技术动作。
优化前没有业务场景。
优化前没有结果证明。
优化前没有岗位关键词。
优化后的目标不是把句子变长,而是补齐信息密度。
说清楚做了什么。
说清楚用了什么技术。
说清楚解决了什么问题。
说清楚结果或价值。
说清楚和岗位有什么关系。
这才是简喵真正要做的事情。
九、确认应用:AI 给方向,用户守底线
AI 生成建议后,不能直接覆盖用户原文。
每条建议应该给用户三个选择:
应用。
编辑后应用。
忽略。
其中”编辑后应用”最重要。
因为 AI 经常会出现一种情况:方向是对的,但措辞过了。
比如它可能建议用户写:
设计高并发缓存架构,显著提升系统吞吐能力。
但如果用户只是给一个课程项目加了 Redis 缓存,这句话就明显过头了。
更真实的写法应该是:
引入 Redis 缓存热点查询结果,减少重复数据库查询,为后续接口性能优化提供基础。
这就是用户确认的价值。
AI 不知道用户真实的参与程度。
AI 不能确认所有数据是否真实。
AI 不知道某个技术点用户到底能不能讲清楚。
AI 有时会把普通项目包装得过于高级。
所以简喵宁可多一步确认,也不能把用户推向过度包装。
简历可以优化,但不能虚构。
表达可以专业,但不能失真。
这条边界很重要。
如果一个 AI 简历工具只追求”看起来更强”,它很容易把用户送进面试风险里。面试官顺着简历一问,用户讲不清楚,反而更糟。
简喵要做的是帮助用户表达真实经历,而不是制造虚假能力。
十、再次评分:闭环比”一键生成”更重要
很多 AI 工具的问题是:给完建议就结束了。
但真实的简历修改从来不是一次完成的。
用户通常会经历这样的过程:
第一次评分
↓
发现项目经历太空
↓
应用几条建议
↓
再次评分
↓
发现 JD 匹配还不够
↓
补充岗位关键词
↓
再次评分
↓
调整表达和顺序
↓
导出 PDF所以每次用户应用建议后,系统应该支持重新分析,并展示变化。
例如:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 总分 | 72 | 81 |
| 表达清晰度 | 65 | 78 |
| JD 匹配度 | 62 | 76 |
| 量化表达 | 45 | 58 |
这里的数字只是示意,真正重要的是反馈机制。
没有反馈的修改,很容易变成反复纠结。
有反馈的修改,用户才知道刚才那次调整有没有用。
这也是简喵和普通简历工具的区别。
普通简历工具是静态编辑器。
简喵应该是带反馈的优化系统。
它的核心不是”一键生成完美简历”,而是陪用户一轮轮把简历改清楚。
十一、版本管理:不要让用户输给”最终最终版”
真实投递不是只投一个岗位。
同一个人可能同时投后端、前端、AI 应用开发、测试开发。不同岗位关注的重点不同,所以简历版本也应该不同。
如果没有版本管理,用户很快就会在文件夹里看到这种东西:
简历-最新版.pdf
简历-最终版.pdf
简历-最终最终版.pdf
简历-字节版.pdf
简历-字节修改版.pdf
简历-字节真的最终版.pdf这不是用户不自律,而是投递场景本身就需要多版本。
所以针对某个岗位完成一轮优化后,系统应该保存一个版本。
版本命名可以来自三个信息:
公司名称。
岗位名称。
创建时间。
例如:
基础版简历
腾讯-后端开发实习-2026.05.21
字节-AI应用开发实习-2026.05.22
阿里-前端开发实习-2026.05.23但 V1 的版本管理不需要做得很复杂。
第一版只要支持:
复制基础简历生成新版本。
针对某个 JD 保存优化版本。
查看不同版本的修改时间和目标岗位。
导出指定版本 PDF。
这就够了。
不要一开始就做复杂的版本对比、协同编辑、权限共享、访问统计。
那些功能有价值,但不是 V1 的核心。
十二、导出 PDF:流程最后必须落到”能投”
前面所有评分、匹配、优化、版本管理,最后都要落到一份能投递的 PDF 上。
这里我守两条原则。
第一,导出不卡付费弹窗。
这是简喵最初的动机之一。
用户花了半天编辑和优化简历,最后一步才告诉他”导出要付费”,这种体验我自己受够了。
工具可以有使用次数限制。
AI 功能可以有成本控制。
未来也可以思考更清晰的商业模式。
但不应该靠最后一步拦截导出来制造沉没成本。
第二,版式要稳定。
简历 PDF 不需要花哨,但必须清楚、整齐、稳定。
V1 不需要做几十套模板,两套就够:
简约专业版。
技术强化版。
简约专业版适合大多数普通岗位投递。
技术强化版适合技术项目比较多的用户,把项目经历和技术栈展示得更突出。
拖拽式自由排版看起来很强,但开发成本高,也容易让用户把注意力浪费在调样式上。
简喵的重点是内容优化,不是做一个简历版 Photoshop。
十三、异常路径:不能只设计理想情况
产品流程不能只设计理想路径。
真实用户一定会遇到各种问题。
GitHub 用户名输错。
仓库为空。
README 太少,AI 无法判断项目内容。
JD 太短,无法提取有效要求。
用户没有填写项目经历。
AI 返回结果格式异常。
网络中断,分析失败。
导出 PDF 时内容超出一页。
这些情况如果不处理,用户立刻会觉得产品”不靠谱”。
所以每个关键节点都要有异常兜底。
比如 GitHub 导入失败时,不应该只显示:
系统错误。
而应该告诉用户:
没有找到这个 GitHub 用户,请检查用户名是否正确。你也可以直接手动创建简历。
如果仓库 README 太少,可以提示:
该仓库 README 内容较少,AI 可能无法准确生成项目描述。建议你手动补充项目功能、技术栈和个人职责。
如果 JD 太短,可以提示:
当前岗位描述信息不足,可能影响匹配结果。建议粘贴完整 JD,包括岗位职责和任职要求。
如果 AI 分析失败,可以提示:
本次 AI 分析失败,你的简历内容已经保存,可以稍后重试。
异常提示的核心不是”报错”,而是告诉用户下一步怎么办。
用户不怕产品偶尔失败。
用户怕的是失败之后不知道该怎么继续。
十四、简喵 V1 的完整流程图
整理下来,简喵 V1 的完整流程可以这样表示:
进入简喵
↓
选择开始方式
├─ 手动创建简历
├─ GitHub 导入项目
└─ 继续优化已有简历
↓
结构化整理简历内容
↓
AI 简历评分
↓
查看问题诊断
↓
是否粘贴目标 JD?
├─ 否:生成通用优化建议
└─ 是:进行 JD 匹配分析
↓
生成岗位化优化建议
↓
查看 Before / After 对比
↓
用户选择:应用 / 编辑后应用 / 忽略
↓
再次评分
↓
保存为新版本
↓
导出 PDF这个流程的核心不是”AI 生成一份简历”。
而是:
用户提供真实经历,系统帮他发现问题、看清差距、优化表达,最后导出一份他自己愿意投出去的简历。
这句话才是简喵 V1 的产品主线。
十五、这篇文章真正想说明什么
产品流程不是把功能按顺序排起来。
它要回答的是:
用户第一步做什么?
每一步为什么存在?
系统在背后处理什么?
AI 的建议如何被用户理解?
用户遇到问题时怎么继续?
最后如何形成一份可投递的简历?
对简喵来说,产品流程的核心不是”上传简历,然后 AI 给建议”这么简单。
真正的流程应该是:
输入真实经历。
结构化整理。
发现简历问题。
对比目标岗位。
生成具体建议。
用户确认修改。
再次评分反馈。
保存岗位版本。
导出 PDF 投递。
这是一条带反馈的写作路径。
传统简历工具更像一次性编辑器:填完、排版、导出。
简喵想做的是迭代式优化工具:分析、修改、反馈、再修改,直到用户拿到一份自己愿意投出去的简历。
写在最后
如果说上一篇需求分析是在回答”简喵为什么做这些功能”,那这篇产品流程就是在回答”这些功能应该怎么串起来”。
功能孤立存在时,价值很有限。
AI 评分单独存在,只是一个分数。
JD 匹配单独存在,只是一份分析。
AI 润色单独存在,只是一段改写。
PDF 导出单独存在,只是一个工具按钮。
但当它们被串成一条完整路径时,产品价值才会出现:
输入真实经历 → 发现问题 → 岗位匹配 → 优化表达 → 用户确认 → 导出投递。
这才是简喵 V1 要优先打磨的主线。
用户提供真实经历。
系统帮他发现问题。
AI 给出可执行建议。
用户确认并应用。
系统再次反馈。
最后导出一份能投的 PDF。
流程确定之后,下一步不是继续加功能,而是反过来砍功能。
因为流程越清楚,越能看出哪些功能只是看起来有用,实际上会拖慢第一版。
下一篇,我会写简喵的 MVP 范围:哪些功能第一版必须做,哪些听起来合理但要先砍掉,以及我为什么这么取舍。