AI PLAY玩法更新持续收录
← 回到更新流

2026-09-15 · 原文发布日

简历自动解析打分与候选人分类通知

小团队招聘可用的n8n模板:候选人通过n8n表单提交联系方式、职位、年限和简历文件后,先生成申请ID并校验必填项,经验过短的直接发拒信。其余申请写入Google Sheets,按职位从另一张JD表取岗位要求,提取简历文本交给Google Gemini返回技能、优势、短板和缺失技能的结构化分析,再按必备技能、经验和加分项算匹配分,分数达标记为Selected并发确认邮件,否则发拒信,全部结果回写表格。

原文要点

原模板用n8n表单收集候选人联系方式、职位、年限和简历文件,生成申请ID并校验必填项,经验5年及以下直接经Gmail发拒信;其余写入Google Sheets的Job Applications表,按职位从Job Descriptions表取JD,提取简历文本交给Google Gemini返回技能、优势、短板、缺失技能的结构化JSON;按必备技能、经验、加分技能和优势算匹配分,80分及以上状态置Selected并发确认邮件,否则发拒信,分析、分数、状态全部回写表格。设置需两张表的凭据与指定列、Gemini(PaLM)凭据、Gmail凭据,并发布表单链接。

这次做成什么

搭一条简历收集到分类通知的流水线:表单收申请、硬性年限过滤、Gemini结构化分析简历、按JD算分、自动发确认或拒信并回写表格。本站提供独立编写的分析提示词、合成JD数据和虚构候选人演示。

准备什么

  • 可自建并发布表单的n8n实例及该模板工作流
  • 两张Google Sheets(Job Applications与Job Descriptions)及OAuth2凭据
  • Google Gemini (PaLM) API凭据
  • 用于发通知邮件的Gmail账号及凭据
  • 用于练习的PDF格式虚构简历文件

具体怎么做

  1. 建表并填列结构

    Job Descriptions表建列Position、JD ID、Required Experience、Required Skills、Preferred Skills、Minimum Score,填入下方合成JD行;Job Applications表建列applicationId、Full Name、Email、Phone、Position、Experience、Resume、Score、Skills、Strengths、Weaknesses、Missing Skills、status。

  2. 配置表单与年限闸门

    发布n8n表单,字段含姓名、邮箱、电话、职位下拉、经验年限和简历文件上传(确认接受PDF/DOC/DOCX);提交后节点生成applicationId和时间戳,校验必填项,用IF节点把Experience小于等于5年的申请直接转Gmail拒信分支。

  3. 写表并关联JD

    通过闸门的申请追加到Job Applications表;再用Lookup节点按Position在Job Descriptions表取对应JD行,与申请数据合并传给下游。

  4. 提取简历文本并送Gemini分析

    用文件提取节点读出上传PDF的纯文本,连同JD的Required Skills、Preferred Skills一起填入下方分析提示词发给Gemini,要求返回含skills、strengths、weaknesses、missingSkills的JSON。

  5. 算分并定状态

    按模板逻辑综合必备技能命中、经验、加分技能与优势计算匹配分(本站练习设最低分门槛80,以JD表Minimum Score为准),分数写入Score列;大于等于门槛状态置Selected,否则Rejected,并把分析JSON各字段回写对应列。

  6. 发送结果邮件

    Selected分支用Gmail发申请确认邮件,Rejected分支发措辞得体的拒信;两封邮件的称呼用申请表的Full Name,主题含职位名,发送前用合成候选人自测。

可直接复制的材料

简历分析提示词(喂给Gemini)

本站独立编写的分析提示词,{{}}变量需按n8n表达式替换为JD行字段与简历文本;输出字段名要和算分节点一致。

你是招聘初筛助手。根据下面的职位要求和简历文本,输出一个JSON对象,不要输出解释、不要使用代码块。
字段:
- skills: 数组,候选人具备且与职位相关的技能
- strengths: 数组,相对职位要求的突出优势
- weaknesses: 数组,主要短板
- missingSkills: 数组,职位必备但简历中未体现的技能
职位必备技能:{{requiredSkills}}
职位加分技能:{{preferredSkills}}
要求经验年限:{{requiredExperience}}
简历文本:
{{resumeText}}

合成Job Descriptions测试数据(CSV)

本站虚构练习数据;技能用逗号分隔放在引号内,导入后确认算分节点能正确拆分。

Position,JD ID,Required Experience,Required Skills,Preferred Skills,Minimum Score
前端工程师,JD-FE-01,6,"JavaScript,React,TypeScript,CSS","Next.js,性能优化,单元测试",80
数据分析师,JD-DA-01,6,"SQL,Python,数据可视化","dbt,AB测试,统计建模",80

拒信正文模板(年限不足分支)

本站编写的示例文案,变量替换为表单字段;Selected分支可仿此格式写确认邮件。

主题:关于您应聘{{position}}的申请结果

{{fullName}} 您好:
感谢您的投递。该岗位要求6年以上相关经验,结合您目前的经历,我们暂无法推进本次申请。欢迎您在积累更多经验后再次应聘。
祝求职顺利!

输入与输出示例

本站虚构演示,分数为本站按模板逻辑设定的示意值,非Gemini实际输出。

输入

合成候选人:李岚,邮箱lilan@example.com,应聘前端工程师,经验填7年,上传的虚构简历写明熟练使用JavaScript、React、TypeScript、CSS,做过Next.js项目,无单元测试经历。

对应输出

Gemini返回JSON:skills=[JavaScript,React,TypeScript,CSS,Next.js],strengths=[框架实战经验丰富],weaknesses=[缺少测试实践],missingSkills=[单元测试]。必备技能4项全中、经验达标、加分项中2项,按模板打分逻辑得分86≥80,状态置Selected,回写Score=86及各分析列,Gmail发出申请确认邮件。

做完检查这些

  • 提交经验5年及以下的测试申请时,不写Job Applications表且收到拒信
  • JD表缺少对应Position时流程能被发现并处理,而不是静默算出错分
  • Gemini返回非法JSON时流程不会把空白写回Score列(需在模板中核对解析方式)
  • 分数80及以上状态为Selected并发确认邮件,79及以下为Rejected并发拒信
  • 回写后Skills、Strengths、Weaknesses、Missing Skills各列内容与分析JSON一致

容易卡住的地方

  • 年限硬门槛是小于等于5年直接拒,边界值6年才进入分析,别在IF节点写错比较符
  • 两张表的Spreadsheet ID不同,复制节点后容易只改一处导致读写错表
  • DOC/DOCX的文本提取与PDF不同,模板说明需自行确认上传节点接受的文件类型
  • Minimum Score以JD表为准,若某职位门槛不是80,硬编码80会误判
  • 表单必须发布后候选人才可访问,测试链接与正式链接不要混用

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Score and triage job applications with Google Gemini and Google Sheets
原作者
WeblineIndia
原始发布日期
2026-09-15T08:18:45.415Z
来源
https://n8n.io/workflows/19616