基于 AI 的智能表单填写插件分享:OfferNow 简历闪填
项目背景
为什么要做这个? 相信最近在看机会、跑春招的兄弟们都有同一个痛点:网申太折磨人了。 现在的招聘系统(北森、Moka、各大银行官网、国企系统)可以说是一个“万国博览会”,每家公司的 DOM 结构、字段定义都不一样。 虽然市面上已有一些自动填充插件,但痛点依然明显: 传统插件(Regex/规则流): 稍微改个 ID 或者 Class 名就失效,维护成本极高,且无法应对复杂语义(比如区分“手机号”和“紧急联系人电话”)。 RPA 工具: 配置太重,对普通用户不友好,那是给企业用的,不是给我们求职者用的。 核心思考: 现在 Gemini 3.0、GPT-4o 这种大模型已经具备了极强的语义理解能力和多模态能力。能不能让 LLM 像人眼一样去“看”网页,自动把简历里的信息“填”进去,从而实现 0 配置的自动化? 基于这个想法,我开发了 OfferNow。
实现思路
LLM 带来的降维打击
这个项目的核心难点在于网页 HTML 结构的非标准化。 以前我们写爬虫或脚本,需要针对每个网站写 XPath 或 CSS Selector。但在 OfferNow 中,我引入了 Gemini 3.0 Pro。 利用 Gemini 3.0 强大的上下文理解能力(Context Window),我不需要硬编码规则。插件会将当前页面的表单结构提取出来,配合用户的简历 JSON,直接丢给模型进行语义映射。 实测下来,模型能精准识别出 <input name="q1_v2"> 这种乱码字段其实是“期望薪资”,也能把简历里的“2023.09”自动格式化为目标网站需要的“2023-09-01”。
纯 Agent 带来的挑战与优化
如果直接让 Agent 全托管操作,会面临两个问题:Latency(延迟)和 Cost(Token 成本)。 每次填一个框都请求一次 API 是不现实的。我的解决方案是 “本地化预处理 + 批量推断”: DOM 剪枝: 在发送给 LLM 之前,先在本地通过算法剔除页面上无关的广告、导航栏等干扰元素,只保留核心表单区,大幅减少 Token 消耗。 一次性推断: 将整个表单结构打包,让 Gemini 一次性返回所有字段的映射关系,而不是填一个问一次。
隐私优先设计: 不同于云端 Agent,OfferNow 坚持“数据本地化”。简历数据只存在浏览器的 LocalStorage 中,LLM 只负责逻辑处理,不存储任何用户数据。
- 项目进展 本项目目前已经上线 Chrome 应用商店 和 Edge 商店。 虽然刚上线一个月,但在没有大规模推广的情况下,全靠口碑传播已经积累了 2000+种子用户。 目前的版本已经能够完美适配: ✅ 主流第三方招聘系统(Moka、北森、Taleo等) ✅ 令人头秃的银行网申系统(工行、建行等老旧框架实测通过率 90%+) ✅ 互联网大厂官网(字节、腾讯、阿里等) 这个项目花了我不少心血去调优 Prompt 和解析算法,中间踩过很多 DOM 隔离和跨域的坑,现在终于稳定了。 欢迎体验与交流。
大家可以在商店搜索 “OfferNow简历闪填” 即可找到,也可以直接访问cv.offernow.cn获取。
如果你也是开发者,或者对 LLM 落地应用感兴趣,欢迎在评论区交流技术细节!也欢迎大家提 Bug,我连夜修!
小米集团公司福利 814人发布