秋招求职作品集 · 招聘 / AI+HR 方向

龙翔翔

招聘 × AI × 产品

“从真实招聘场景出发,把 HR 问题转化为可运行的 AI 产品。”

工商管理本科 吉利汽车研究院 · HR 实习 HireFlow AI 项目负责人
hireflow-admin.pages.dev
HireFlow 管理驾驶舱(真实截图)
HireFlow Android APK(真实截图)
HireFlow 浏览器采集插件(真实 UI)
3个线上站点
4个产品端
335项插件自动化测试通过
10人团队规模设计
02

ABOUT

关于我 · 为什么做 HireFlow

工商管理专业懂组织、懂流程、懂人
吉利汽车研究院 · HR 实习在真实招聘工作中接触候选人、业务部门与管理者
发现招聘业务问题录入慢、数据散、管理盲区、跟进易漏
从零开始做 HireFlow产品设计、开发、部署、迭代全流程自己落地
“我不是从技术出发做 HR 工具,而是从真实 HR 工作出发,寻找 AI 的应用方式。”

THE REAL SCENE

一个真实的招聘场景

📥
候选人来自 BOSS / 猎聘每天浏览几十份简历
⌨️
人工复制资料姓名、电话、岗位逐字段粘贴
📊
Excel / 台账分散管理每个成员各存一份
🔀
成员各自记录、互相看不到协作靠口头同步
⚠️
跟进遗漏候选人太多,反馈与 Offer 环节靠记忆
👁️
管理者看不到全局只能逐个问成员要进度

“我能不能把这个招聘流程真正数字化?”

03

WHAT I BUILT

我做了什么:一个招聘工作系统

HireFlow 不是“一个 App”,而是覆盖招聘全流程的团队工作系统。

候选人采集浏览器插件一键入库
候选人管理APK / 网页随时录入
AI 辅助OCR + 结构化 + AI 兜底
跟进状态机 + 待跟进提醒
面试约面 / 反馈全程留痕
Offer审批 / 确认 / 入职
管理分析驾驶舱 · 漏斗 · 效率
ANDROID

Android APK

HR 的日常工作站:候选人管理、OCR 扫描、跟进提醒、团队看板、离线可用。

WEB

成员网页版

手机 + 电脑双端网页,苹果手机也能用,无需安装。

EXTENSION

浏览器采集插件

在 BOSS / 猎聘 / Moka 候选人页面一键采集,自动去重后导入云端。

ADMIN

管理员驾驶舱

团队总览、招聘漏斗、成员效率、风险提醒、反馈与审计。

一套云端数据,四种使用方式 —— 采集、录入、跟进、管理、复盘,全部打通。
04

ARCHITECTURE

完整产品架构

核心设计:一套云端数据,多端协同。云端是唯一事实来源,本地 SQLite 保证离线可用。

用户端 · 四种使用方式
Android APKFlutter · 本地优先
成员手机 Web浏览器直接使用
成员电脑 Web大屏管理界面
浏览器采集插件BOSS / 猎聘 / Moka
统一云端数据层 · Supabase
PostgreSQLAuthRLS 行级安全Edge FunctionsSecrets
管理者入口
管理员驾驶舱总览 · 漏斗 · 成员 · 反馈 · 审计
自动部署链路GitHub Actions → Cloudflare Pages
本地 SQLite离线优先 · 同步队列
状态历史candidate_status_history
操作日志audit_logs 全程留痕
为什么这样设计:HR 可能在任何时间地点工作 —— 面试现场、地铁、无信号区。数据先在本地落盘,网络恢复后自动同步;权限在数据库层(RLS)强制约束,不依赖界面隐藏。
05

CASE STUDY 01 · 浏览器采集插件

如何让 HR 不再手工录入候选人?

问题

HR 每天在 BOSS / 猎聘 浏览几十位候选人,信息靠逐字段复制粘贴,一次几分钟,慢且易错。

普通方案为什么失败

“扫描整页文字”会把当前登录 HR 自己的姓名、按钮文字、左侧候选人列表一并抓进来 —— 插件常常把 HR 自己识别成候选人。

我的解决方案

  • Resume-First:打开哪份简历就锁定哪份,列表一律降权
  • 实体分类:候选人 / HR / 面试官 / BP 分类,只有候选人可入库
  • 多候选人点选:检测到多人时由 HR 选择,评分只排序不替用户决定
  • 区域锁定:锁定候选人容器,后续解析与 AI 不得覆盖
  • 字段级置信度:姓名 / 电话 / 邮箱独立评分,缺失只提示该字段
  • 自动去重:同一来源 / 手机号 / 邮箱 / 姓名+岗位命中即提示,不重复创建
335/335插件自动化测试通过(自动化结果,非线上准确率)
3招聘平台适配
1键导入云端 · 多端可见

真实页面识别准确率仍待人工回归验证(待验证)——自动化测试通过不代表线上 100%。

HireFlow · 候选人采集 v2.0
HireFlow 采集插件真实 UI:简历采集 + 一键导入
插件 v2.0 真实 UI · 简历采集 + 一键导入
06

CASE STUDY 02 · Android APK

为什么 HR 的招聘系统必须支持离线?

真实场景

面试现场、地铁、展厅、没有信号的地下室 —— HR 的录入需求恰恰发生在这种地方。如果系统必须联网才能用,它就“用不起来”。

设计决策:本地优先

用户操作添加 / 修改 / 状态
SQLite 立即保存毫秒级落盘
同步队列等待网络
网络恢复自动上传
Supabase多端可见

为什么这样设计

  • :操作不等待网络,本地即时反馈
  • :断网照常工作,数据不丢
  • 一致:网络恢复自动同步,云端是唯一事实来源
  • 可恢复:同步失败指数退避重试(最多 3 次),不无限请求
5/5APK UI 自动化测试
10/10冷启动稳定性
E2EOCR 识别入库链路
APK 首页(真实截图)首页 · 团队看板
APK 候选人(真实截图)候选人 · 状态
APK OCR 扫描(真实截图)OCR 扫描简历
Android APK 真实截图:模拟器运行环境
07

CASE STUDY 03 · 管理员驾驶舱

管理者如何从“问数据”变成“看数据”?

原来的方式

管理者想了解招聘进度,只能逐个问成员:“这周新增了几个?谁在面试?Offer 发出去了吗?”信息滞后、口径不一。

现在的驾驶舱

  • 团队总览:成员 / 候选人 / 今日新增 / 待跟进 / Offer / 入职
  • 招聘漏斗:待沟通 → 面试 → 待反馈 → Offer → 入职,每步数量与转化
  • 风险提醒:超 24h 未跟进、面试后未反馈、Offer 待确认自动预警
  • 成员效率:每人新增 / 推荐 / 约面 / 面试 / Offer / 入职
  • 反馈中心 + 审计:问题闭环,操作全程留痕
原来管理者逐个问成员要数据,信息滞后、口径不一
现在打开驾驶舱即可看到招聘全局与风险
10云端预置成员账号
17条候选人测试数据
11张云端业务表
一句话:管理者从“问人要数据”变成“打开页面看数据”。
hireflow-admin.pages.dev/dashboard
HireFlow 管理驾驶舱(真实截图)
管理员驾驶舱 · 团队招聘总览(真实线上页面)
08

AI CAPABILITY

AI:我没有把所有东西都叫 AI

招聘流程里哪些能力真正属于 AI,哪些只是规则与 OCR —— 我做了明确分层。

扫描拍照 / 相册选图
OCR本地识别文字
结构化规则 + 语义解析
AI 增强DeepSeek 兜底
去重云端查重
入库多端可见
本地能力 · 快、免费、离线可用
  • OCR:手机本地识别简历文字
  • 规则引擎:字段提取与格式校验
  • 语义解析:简历文本结构化
  • 实体分类 / 置信度:候选人身份判断
AI 能力 · 只做“兜底与增强”
  • AI 结构化增强:DOM 无法确定时兜底
  • DeepSeek:通过 Supabase Edge Function 调用
  • AI 分析候选人:匹配度 / 优势 / 风险(与导入分离)
为什么这样分层
  • OCR / 规则本地完成:快、免费、不依赖网络
  • AI 只兜底:控制成本与延迟,不阻塞主流程
  • 密钥安全:AI Key 不进 APK 与插件
密钥怎么保护
APK / 插件(拿不到 Key) Supabase Edge Function(中间层) DeepSeek API(Key 只存云端 Secrets)

如实说明:AI 兜底 Edge Function 已完成开发,当前默认关闭(AI_ENABLED=false),部署函数并配置密钥后开启 —— 状态:待部署启用(待验证)。

09

THE HARD PROBLEMS

最难解决的 3 个问题

这三件事决定了 HireFlow 能否在真实场景里“用得住”。

01

插件为什么会“抓到 HR 自己”?

问题

页面同时存在候选人、聊天对象和当前登录 HR 的姓名,整页抓取把“龙翔翔”识别成了候选人。

原因

没有“候选人上下文”,所有文字一视同仁。

我的判断

必须先定位“HR 当前打开的候选人”,再提取字段。

方案

Resume-First 锁定当前简历 / 实体分类 / 当前用户排除 / 多候选人点选。

结果

自动化 335/335 通过;“江先生”不再被识别成“龙翔翔”。

02

APK 如何实现离线工作?

问题

面试现场、地铁里没有网络,纯云端 App 直接不可用。

原因

所有读写都依赖网络请求。

我的判断

HR 的核心操作必须本地优先,云端负责同步与统一。

方案

SQLite 即时落盘 → 同步队列 → 网络恢复自动上传 → 失败指数退避重试。

结果

断网可增改查,恢复网络数据不丢、自动同步。

03

多端如何保证数据一致与权限安全?

问题

10 人团队、4 个端同时使用,数据不一致或串号就是事故。

原因

多端各自存一份、权限只靠界面隐藏。

我的判断

云端必须是唯一事实来源,权限必须在数据库层拦住。

方案

organization_id 数据隔离 + Supabase RLS;状态历史与操作日志留痕;最后有效修改覆盖当前值。

结果

成员只能看本团队数据、改自己负责的候选人;管理员看全量;绕过界面也读不到他人数据。

10

ENGINEERING & DELIVERY

工程能力与交付结果

GitHub代码与版本管理
CI自动构建与检查
测试自动化 + E2E
CloudflarePages 自动部署
线上产品push main 即发布
3个线上站点后台 / 成员手机 / 成员电脑
4个产品端APK / Web×2 / 插件
335插件自动化测试全部通过
5/5APK UI 测试Maestro 自动化
10/10冷启动稳定性含 R8 崩溃修复
E2EOCR 识别入库全链路通过
SupabasePostgreSQL · Auth · RLS
Edge Functionsanalyze-candidate / reset-pin / setup-admin
GitHub Actions4 条工作流自动部署
Cloudflare Pages3 个线上站点托管
文档体系INSTALL 安装 / CHANGELOG 版本记录
架构说明client/CURRENT_ARCHITECTURE.md
测试结果插件 TEST_RESULT / 客户端测试报告
真实页面回归PLUGIN_REAL_PAGE_TEST_REPORT.md

以上数据均来自真实项目(线上站点实测在线、自动化测试实际运行、云端数据库可核验)。未验证环节已在文中标注。

11

MY ROLE

我真正做了什么

招聘业务Recruiting
问题发现Product Sense
产品设计Product
AI 应用AI
软件开发Development
数据分析Data
持续迭代Iteration
业务从 HR 实习中定义问题与核心链路
产品招聘状态机 / 漏斗 / 风险规则 / 三端交互
AIOCR + 结构化 + AI 兜底的分层设计
开发Flutter / React / 浏览器插件开发
云端Supabase 数据库 / RLS / Edge Functions
工程自动化测试 / CI / 部署 / 文档
迭代基于真实使用反馈从 v1.x 持续修复到 v3.x
“AI 辅助开发 ≠ AI 替我完成项目。需求判断、产品决策、架构设计、调试、测试、验证、迭代 —— 每一项我都全程参与并负责。”