隐私与退款
简短、清楚的 beta 政策。如果这里有任何不清楚的地方,请发邮件到 [email protected]。
- PDF 在你的浏览器里解析;免费扫描后我们保留的数据不包含你的 CV 和职位描述。
- 付费审核会短暂保存加密数据:输入最多 3 小时、阶段输出最多 24 小时、成品包最多 7 天,另保留用于运营记账的元数据。
- 退款和使用次数问题请邮件 [email protected]。下面是完整政策。
我们处理什么
我们会处理你提交的 CV、职位描述、填写答案和联系方式,用来提供你要求的免费匹配扫描、付费 CV 套餐,以及相关交付消息。
我们不会做什么
- 我们不会出售你的个人数据。
- 我们不会编造实习、雇主、学位、职称、证书或指标。免费扫描里这条规则写在提示词本身。付费深挖里由 R5 给每一条重要说法打标签;R5 必须先产出可解析的标签,R6 才能开始。这些标签会写进 R6 的提示词,改写完成后还要过一道不调用模型、按规则执行的来源检查。
- 我们不会保证面试、offer、招聘方回复、签证或就业结果。
- 我们不会代你自动填写或提交任何表格。
AI 处理
免费扫描先在你的浏览器里解析 PDF 和 TXT。解析出的 CV 文本和 JD 文本随后发送到我们的 Cloudflare Function,由它用一段提示词向 DeepSeek API(deepseek-v4-flash,api.deepseek.com)发起一次请求,只有这一次。进度条把 R0、R3、R5、R7 当作进度标签,它们不是四次独立的模型调用。R0 会在读取任何模型返回内容之前点亮,后面几个标签会随着对应小节返回而点亮。方法页写的是付费深挖使用的完整阶段架构。
付费的简历优化套餐和多岗位求职套餐 最多会依次跑 11 个模型阶段(R0 到 R9,再加收尾复检 R9b)。安全闸可以提前拦停,直接把当时已有的内容交给第 12 步 R10;R10 在我们这边组装成品,不调用模型。模型阶段调用 DeepSeek API(deepseek-v4-flash,api.deepseek.com);其中两个写作阶段,也就是 CV 改写和求职信,调用 Moonshot AI(kimi-k3,api.moonshot.ai)。写作阶段在 Moonshot 上返回空内容,或者返回我们判定可重试的 HTTP 状态码时,会回到 DeepSeek 重试;最初走 DeepSeek 的阶段返回空内容,或者返回我们判定可重试的 HTTP 状态码时,如果配置了 Qwen 密钥,会在阿里云 Model Studio(qwen)上重试一次。从 Moonshot 回到 DeepSeek 的重试不会再接着转去 Qwen。这三家都是第三方模型供应商。发给它们的客户与审核内容可以包括 CV 文本、JD 文本、前面阶段的输出和内部审核 order ID,同时也会带上本次调用所需的系统指令与阶段指令。提交前请删去电话、身份证或护照号码、家庭住址,以及任何不希望模型供应商处理的信息。
一次付费深挖会留下三样东西,全部用 AES-256-GCM 加密:你提交的 CV、JD 和填写答案,最多留 3 小时;各阶段的输出,最多留 24 小时;成品 pack,最多留 7 天。到期不是打个标记就算数:每份加密数据都带着自己的到期时点。系统会按最近的到期时间安排清理;届时会彻底删除所有已到期的数据行。记录这次深挖的数据库不存原始 CV、JD、填写答案、提示词或阶段输出。它存 CV、JD、填写答案和阶段输出的 SHA-256 指纹,也存加密数据引用;提示词只记版本,不保存原文。它还会记录运行信息,例如各类 ID、时间戳、所用供应商、模型及路由、token 用量、延迟、状态,还有经过哈希的安全闸记录。这些记录不会自动到期,我们留着做运行维护和账务。你提出删除请求后,它们会在一个月内随账户数据删除,付款记录除外(见“删除请求”)。
我们不再抓取职位页面。如果职位那一栏里只有一条链接,扫描会在计入你的每日额度之前、在任何内容发给模型之前被拒绝,并请你改为粘贴文本。如果那一栏里只有一条链接,浏览器就会拒绝,这条链接根本不会发给我们;我们最多只能帮你打开它。如果职位描述文本里顺带提到了一个网址,那属于正文的一部分,会和其余文字一起发送。这项改动发生在 2026-09-11;它替换掉的抓取方式对多数职位页都读不出内容,因为很多雇主的职位描述要在浏览器里才会生成,对其他访问只返回一个空页面。
岗位板的 CV 匹配面板、扫描结果的岗位步骤,以及付费结果的岗位推荐都会向我们的 jobs API 发送请求,带上各自使用的 CV 文本、你选择的找第一份工作或换工作,以及这次请求中提供的目标岗位文本、城市、类别或层级偏好;面板在你的浏览器里解析 PDF 和 TXT,并发送提取出的 CV 文本。服务会从这段文本的前 8,000 个字符生成向量查询。一个 Cloudflare Workers AI 模型(@cf/baai/bge-m3)把查询转成向量,与 Cloudflare Vectorize 里的在招岗位比较。我们再请另一个 Workers AI 模型(@cf/baai/bge-reranker-base)用查询的前 2,000 个字符和每个岗位的简短信息重新排序;如果这次调用失败,服务会按共同词数量、原来的向量召回顺序,再以稳定的岗位 key 和标题处理同分。匹配不使用其他模型服务商。岗位服务什么都不写:没有数据库写入,没有存储写入,也没有任何带上你文本的日志。如果你把某个岗位从岗位板带到扫描页,浏览器 session storage 里的 fl.handoff 记录会包含版本、一个随机导航 id、来源、两个时间戳、CV 文本、我们此前已保存的这个岗位的职位描述文本,以及岗位标题、雇主、城市和招聘链接。它不包含文件、PDF 字节,也不包含账号身份。扫描页只读取一次,无论能否使用都会删除;这条记录十分钟后过期。只有地址栏里 id 与之相符的那一次跳转才会使用它,所以一次被放弃的点击不会被之后的访问捡起来。
扫描页还会在这个标签页里保存你正在填写的内容,键名 fl.scan.draft,这样刷新或切换语言不会让你丢掉文本。这条记录包含 CV 文本、职位描述文本、你当时用的输入方式,以及你是从哪个岗位过来的。它会在你最后一次编辑、应用 handoff 或开始扫描之后 30 分钟过期,读取它不会延长这个时间。扫描页上的清除我的材料会立刻把它和 handoff 记录一起删掉。关闭标签页也会结束它,不过浏览器自身的会话恢复功能,以及你自己复制或导出的副本,我们无法保证一并清除。存储的副本过期后,如果这个页面还开着,屏幕上的文本和结果会继续留着让你看完;过期的是那份刷新后还能恢复的副本。
公开页面使用 Plausible Analytics 统计访问量和产品操作。对于从岗位板进入扫描页这一步,操作事件会记录页面语言、从哪里进入,以及两个固定的状态词:CV 是随这次点击带来的、本来就在这个标签页里,还是仍然需要;职位描述是带过来了,还是没带过来以及没带过来的具体原因。这些事件不会带上 CV 文本、JD 文本、岗位名称、雇主名称、职位链接或域名、扫描结果或邮箱。
付费个人职位板与公开匹配功能分开。你可以一次选择最多五个 PDF 或 TXT 简历文件;浏览器会分别解析文件并保留文档边界,然后只将提取出的文字暂时发送至 Cloudflare Workers AI 模型(@cf/meta/llama-3.3-70b-instruct-fp8-fast)和我们的商业技能词库,以生成档案建议。原始文件留在浏览器中。我们不会保存或记录提取出的简历文字。粘贴的简历文字也会经过相同的临时处理。保存前,你可以审核生成的职位名称、偏好和建议词语,并明确同意。我们会保存你确认的档案字段和选定的标准词语,直到你更新或删除档案,或在你提出删除请求后随账户数据一并删除(见“删除请求”)。此功能不保存简历、来源引文或生成的简历文字。
我们也会为你的账户保留最近一次保存的职位板,包括公开职位字段、根据匹配得出的词语和级别信息、数量以及生成时间和版本信息。缓存的职位板不含简历文字或完整职位描述。它会保留至较新的职位板成功保存、你删除匹配档案,或在你提出删除请求后随账户数据一并删除(见“删除请求”);缓存不会按时间自动过期。更新匹配档案或职位目录会使旧副本不再被重复使用,但更新本身不会删除该副本。视账户是否使用职位板,或是否为其记录了使用权限决定,我们还可能保留最多四条不含简历、档案或职位板文字的小记录:该使用权限决定(开通或撤销,以及时间);最近一次生成职位板的小时,以及其中计入每小时上限的次数;生成档案建议请求的同类记录;以及一个档案版本号,删除档案后仍会保留,以免较早的请求把档案恢复。删除档案不会删除这些记录。它们会随账户数据一并删除,在你提出删除请求后一个月内完成(见“删除请求”)。词语只是文字信号,并非能力证明;职位信息中出现但档案未包含的词语,不代表你缺少这些技能。成功付费购买后即可使用此职位板,不消耗审核次数,也不是订阅。
会发送给模型供应商的内容
免费扫描会发送你粘贴的 CV 文本,或从 PDF/TXT 提取出的文字、你粘贴的 JD 文本、结果语言指令,以及要求模型输出结论、缺失证据、风险表述、一个改写示例和下一步的产品提示词。浏览器解析后,我们不会再发送原始文件,也不会发送支付卡信息。
我们自己存储的内容更窄:免费扫描不存 CV 内容、不存 JD 内容、不存扫描 markdown,也不建立账号记录。一次成功扫描在我们的键值存储里只留下这些字段:一个匿名 order ID 和时间戳;毫秒延迟和美元成本估算;页面语言和输入模式;如果你用了扫描前唯一的可选下拉,还有你的目标赛道;如果你选择换工作,且这次请求设置了层级,我们会记录你的层级;它也可能来自之前页面保存的选择或链接;三个改写控制项和它们的来源,以及旧版缓存页面发来的滑块坐标换算出的两个整数百分比;结果部分是结论词、0 到 100 的匹配分、算分走的哪条路径,以及各维度的分项得分。如果在生成 order ID 后,服务要为供应商、网络或流式传输故障写入失败记录,那条记录只含 order ID、时间戳和一个错误类别值。如果你回答了结果之后的可选问题,同一个匿名 order ID 下还会多出一条记录,存的是你的求职状态、最近 30 天投了多少份,以及你觉得最难的是什么。上面提到的选择、控制项、算分路径和错误字段,都是固定选项里的值。延迟、匹配分、各维度得分和旧版页面的两个百分比,只要有值就是整数;其余字段是系统生成的标识、时间戳和数字成本数据。这些字段都装不下 CV 文本、JD 文本或其他自由文本,也都不会和你的 CV 或 JD 关联。
为了让免费扫描保持可用,每个连接每天最多计 50 次免费扫描尝试,UTC 零点重置。请求通过输入检查后、调用模型之前,计数器就会加一,所以后面失败的尝试也会计入。如果那一栏里只有一条链接,会在计数器加一之前就被拒绝,不会消耗你的额度。计数器的 key 是连接 IP 加盐 SHA-256 哈希的前 16 位,只存一个数字,48 小时内过期。因为 key 被截断,互不相关的地址偶尔也会共用一个计数器;如果你用的是学校或公司的共享 wi-fi,这个计数器是和同一个出口地址后面所有人共用的。响应使用 HTTPS 和 cache-control: no-store。
还有谁会经手你的数据
除了上面的模型供应商,下面这些公司也会在提供相应服务时收到数据。
- Cloudflare 承载网站、扫描函数、岗位服务和付费深挖引擎。这些 First Landed 服务跑在 Cloudflare 上。
- Stripe 负责结账。卡号是你在 Stripe 自己的页面上输入的,我们看不到,也不保存。我们发给 Stripe 的是金额、币种、产品名称、你买的是哪个 pack 和哪一档,以及你已登录时我们内部的账号 ID。访客结账时,Stripe 会把你付款用的邮箱回传给我们,那个邮箱就是你的登录邮箱。
- Resend 负责发登录邮件。它会收到你的邮箱地址、登录链接,以及发送邮件所需的投递信息。不含 CV 文本、JD 文本或结果。
- Cloudflare Turnstile 用来确认索取登录链接的是真人。登录页会加载它的脚本,这时它会收到普通网页请求信息。你提交表单时,Turnstile 令牌和你的连接 IP 还会发到 Cloudflare 的校验接口。Turnstile 只出现在登录页,免费扫描页没有。
- Fontshare 和 Google Fonts 提供网页字体;使用这些字体的页面加载时,它们会收到你的 IP 和浏览器信息。jsDelivr 提供 PDF 阅读程序;你打开 PDF 时,它会收到同类网络信息。它们都拿不到你的 CV、JD 或结果。
- Plausible Analytics 统计访问量和产品操作,细节见上文。
浏览器端 portal 预填
当你从已完成的免费扫描启动付费结算时,浏览器会把 CV 文本和 JD 文本保存为 fl_handoff_cv 与 fl_handoff_jd。带时间戳的副本保存在 localStorage,让你从邮件登录链接的新标签页打开 portal 时仍可预填;同一标签页也会在 sessionStorage 保留副本。这个浏览器存储步骤本身不会把文本发送到我们的服务器。
付款并登录后,新审核页面会读取快照来预填付费审核表单,然后删除这些 handoff keys。Portal 只接受七天内的 localStorage 快照;更旧的快照会在下次打开该页面时删除。关闭标签页会清除 sessionStorage 副本。在 portal 读取、新扫描覆盖,或你清除本站浏览器数据之前,本地副本可以在浏览器重启后继续存在。
只有当你提交预填后的付费审核表单时,CV 和 JD 才会发送到付费审核流程。
可选邮箱留存
如果你在扫描结果页填写邮箱,或者在 JD 拆解结果里加入 CV Foundation 等候名单,我们会把该邮箱、时间戳、页面语言,以及你加入的是哪一个名单写入 Cloudflare KV,用来在对应功能上线时联系你。这是自愿加入等候名单。我们不会把 CV 文本、JD 文本、扫描 markdown、付款数据或模型输出附加到 subscriber 记录里。
你可以发邮件到 [email protected] 要求删除这些 subscriber 记录。
删除请求
你可以用登录邮箱发邮件到 [email protected],要求删除你的账户和已提交的材料。我们会在收到请求后一个月内删除:你的账户、你提交的文件和文字、保存的职位板档案、邮件订阅,以及你随材料发给我们的邮件。我们只保留付款、防欺诈或法律记录所需的内容:数据库中的订单和 credits 记录(不再带有你的邮箱地址),以及你提出删除请求的记录。少数副本不在我们的直接控制之内,会按各自的期限过期:托管服务商的短期备份和日志,以及其他服务商(例如支付、邮件和 AI 模型服务商)在收到你的信息的情况下按其政策保留的记录。如果我们从备份恢复数据库,会再次删除这些账户。在关闭你的请求之前,我们会做最后一次检查:再查找一次与你的邮箱地址、账户或订单相关的新内容,并按上述方式处理。某项内容如果是在我们最后一次查找它之后才产生的(例如新的登录或新的邮件订阅),或是在那次查找前不久产生、查找时还看不到的,就不在这次请求范围内:我们视其为新的使用。新的删除请求涵盖届时我们仍能凭你的邮箱地址找到的内容。你在提出请求之后、我们做最后一次检查之前付的任何款项,我们都会全额退款,包括我们之后才得知的付款:如果我们还没有就这样一笔付款写信给你,请发邮件告诉我们付款详情,我们凭这些详情找到这笔付款后就会退款。你在我们做最后一次检查之后付的款属于新的购买,适用我们通常的退款政策。删除你的账户之前,我们会告诉你已在账户中找到的未用 credits 的处理方式:在我们收到你的删除请求之前 14 天内付款的 credits 按下方退款规则退还,更早的未用 credits 随账户一并作废。
退款政策
结账和交付都是自助的。已登录的买家会直接回到 portal,但 credit 要等我们的 Stripe webhook 处理完付款确认才会出现,所以页面可能先跳回来。访客购买时,我们会在这次 webhook 里加入 credit,然后发送登录链接。
如果一次深挖最终因安全问题被拦下(blocked_safety)、因无法安全解析而停止(blocked_parse_failure),或因模型阶段没跑完而失败(system_failed),引擎会自动释放预留的 credit,你可以把它用于另一次深挖。如果最终状态是需要更多证据(needs_user_evidence),credit 会继续被占用;目前没有自助方式可以释放或重新使用这个 credit。释放 credit 不是退钱。
要退钱,请在付款后 14 天内,用你付款的那个邮箱发信到 [email protected],说明出了什么问题。没用掉的 credits 我们退。如果你拿到的 pack 和本站描述的不一样,或者明显低于这里写的水准,我们退,不管这个 credit 有没有用掉。退款由我们手动通过 Stripe 原路退回,一般两个工作日内回复。我们不提供改稿或返修;产品就是你跑出来的那份深挖。
求职结果不作保证。面试和 offer 取决于你和雇主。
你的责任
提交前,你需要审核最终措辞,并确认每一个 claim 都准确,也能在面试中说清楚。引擎的设计目标是保持 claim 真实,但提交材料的最终责任仍然属于你。
问题、删除请求或退款请求:[email protected]。