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

2026-09-16 · 原文发布日

分包商报价邮件自动比对、追报价与定标

免费n8n模板给工程采购用:监听Gmail里匹配条件的报价邮件,下载附件PDF抽文本(读不了就回信要求文字版PDF),让OpenAI把报价匹配到n8n Data Tables里开标的包件,抽取各清单项的范围覆盖,算出缺项并套用补贴金额得到“拉平总价”,版本化存表;范围不清会自动回信让分包商确认。每天早上还会更新逾期包件、催未报价的分包商、按拉平总价排序并让OpenAI起草定标建议,经估价师邮件批准后发中标意向和落选通知。

原文要点

这是n8n官网免费的工程采购工作流模板。它监听Gmail中匹配报价条件的邮件并下载附件,从PDF抽文本(读不出就回信要文字版PDF),用OpenAI把报价匹配到n8n Data Tables里开标的包件,逐清单项抽取范围覆盖,算缺项并按补贴金额(plug)算出拉平总价,版本化写入bid_quotes表;范围不清会自动回信让分包商澄清。每天早7点更新逾期包件为closing、催未报价者、对结标包件按拉平总价排序并让OpenAI起草定标建议,经估价师邮件批准后发中标意向和落选通知。设置要求scope_checklist用Item=allowance格式,还需先跑一次手动setup触发器建表。

这次做成什么

在本地n8n中导入该免费模板,用虚构的分包商报价邮件跑通“收报价→抽范围→算拉平总价→回信确认”这一段核心链路,并验证每日扫标的分支逻辑;定标建议环节先只到“起草待批准”为止。

准备什么

  • 可自建的n8n实例(需含Data Tables功能,建议较新版本)
  • 一个用于测试的Gmail账号及其OAuth2凭据(收发分离测试,勿用真实客户邮箱)
  • OpenAI API Key(调用会产生费用,需自行控制额度)
  • 从n8n官网模板页/workflows/19637导入模板,本站不提供可导入JSON

具体怎么做

  1. 导入模板并初始化数据表

    在n8n画布中通过模板页导入该工作流,先手动执行作者内置的setup触发器一次,让它自动创建bid_packages和bid_quotes两张Data Tables;建好后打开表确认列结构(包件名、状态、scope_checklist、报价版本等)与本练习字段对应。

  2. 填入虚构开标包件

    在bid_packages表插入一条测试包件:名称“机电安装分包”,status填open,scope_checklist严格按“桥架敷设=4000; 防火封堵=3500; 垃圾清运=2000”格式填写,等号后为缺项补贴金额(美元),截止日期填三天后。

  3. 配置两处设置节点与凭据

    按作者说明更新两个settings步骤:公司名、估价师联系邮箱、复核收件箱、最低匹配置信度、默认plug金额、截止前催报天数;然后给Gmail节点绑定OAuth2、给两个OpenAI节点绑定API Key,注意读邮件与发邮件是同一组Gmail凭据。

  4. 发送测试报价邮件

    用另一个邮箱向测试Gmail发送主题为“报价-机电安装分包”的邮件,附一份可提取文字的PDF(用下方artifact中的报价文本生成),触发器匹配到后观察执行流:PDF抽文本→OpenAI匹配包件并逐项判断范围→算拉平总价→写入bid_quotes→回信。

  5. 核对分支与手动验证每日扫标

    若报价缺项,检查回信是否要求分包商确认缺项范围;再手动执行每日7点的定时分支,确认逾期包件状态改为closing、有报价的包件按拉平总价排序并生成待估价师批准的定标建议草稿,批准邮件不回就不发中标/落选通知。

可直接复制的材料

bid_packages测试行(范围清单配置)

本站独立编写的测试配置;金额为本站设定的练习参考值,替换为你的真实包件与补贴标准。

package_name: 机电安装分包
status: open
due_date: 2026-10-01
scope_checklist: 桥架敷设=4000; 防火封堵=3500; 垃圾清运=2000
invited_subs: sub-a@example.test, sub-b@example.test

报价抽取与范围核对提示词(可粘贴给OpenAI节点参考改写)

本站独立撰写,用于替代或对照模板内agent提示词;实际模板内提示词需在导入后核对。

你是工程采购估价助手。已知开标包件的范围清单如下,格式为“清单项=缺项补贴金额”:
桥架敷设=4000; 防火封堵=3500; 垃圾清运=2000
请阅读下面分包商报价邮件正文与附件文本,输出严格JSON,不要多余文字:
{"package_matched":true或false,"confidence":0到1,"quoted_total":数字,"items":[{"item":"清单项","covered":true或false,"note":"依据原文短句"}],"exclusions":["报价中声明排除的内容"]}
判定规则:报价明确包含或列出该项则covered为true;声明排除或只字未提则为false。报价邮件全文:
{{邮件与附件文本}}

测试报价PDF正文(生成文字版PDF用)

本站虚构测试数据,请另存为文字版PDF作附件;勿含真实公司信息。

致 示例建设公司 估价部:
我方就机电安装分包报价如下:
总报价:182,000 美元
报价范围:桥架敷设、电缆穿线及设备安装调试均包含在内。
除外条款:本报价不含防火封堵;现场建筑垃圾清运由总包负责。
报价有效期:30天。
分包商:示例机电工程有限公司

输入与输出示例

本站虚构演示,非模板实际运行结果;补贴金额为本站练习设定。

输入

测试包件“机电安装分包”(清单:桥架敷设=4000; 防火封堵=3500; 垃圾清运=2000)收到报价邮件:总价182,000美元,明确排除防火封堵,垃圾清运只字未提。

对应输出

抽取结果JSON:quoted_total=182000,items中桥架敷设covered=true、防火封堵covered=false(注明“除外条款声明不含”)、垃圾清运covered=false(注明“未提及”);缺项补贴3500+2000=5500,拉平总价leveled_total=187500;系统自动回信请分包商确认垃圾清运是否包含,随后该报价以revision形式写入bid_quotes表。

做完检查这些

  • bid_quotes表中新行的leveled_total等于报价总价加上所有covered=false项的补贴之和(182000+5500=187500)
  • 缺项或范围存疑时,Gmail里能找到系统发出的澄清回信,而不是直接确认完成
  • 手动跑每日分支后,逾期包件status变为closing,未报价的被邀请分包商收到催报邮件
  • 定标建议草稿发出后,在估价师回复批准前不会产生中标意向或落选通知

容易卡住的地方

  • scope_checklist必须严格用“项=金额; 项=金额”格式,缺等号或全角符号会导致解析失败
  • 扫描版图片PDF抽不出文本,只会触发回信索要文字版,不会进入比对
  • 最低匹配置信度设太高会把正常报价判为不匹配包件而被跳过
  • OpenAI调用与Gmail发送均真实生效,测试务必用隔离邮箱,避免给真实分包商发信
  • 模板免费但OpenAI API按用量另收费,每日扫标会放大调用次数

原文与作者资料 ↗

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

原文标题
Level subcontractor bids and manage awards with Gmail, OpenAI, and Data Tables
原作者
Jeffy Thomas
原始发布日期
2026-09-15T19:32:10.024Z
来源
https://n8n.io/workflows/19637