从公开数据构建情报系统:一位CFO的实践记录
Pike Industries财务副总裁Niyi Oladepo撰文详述其团队如何基于新罕布什尔州和缅因州交通部的公开招标结果,开发一套AI驱动的定价情报工具。文章介绍了系统三层架构(历史基线定价、估算师动态判断、相关性去重逻辑),并强调早期失败迭代对系统最终价值的贡献。

本文为Pike Industries(CRH旗下公司)财务副总裁Niyi Oladepo的客座投稿,仅代表作者个人观点。
这一切始于一个假设,而非某项技术突破。
州交通部的招标结果属于公开记录。在新罕布什尔州或缅因州,任何参与公路项目竞标的承包商,其分项报价在中标后都会公之于众。动员费、排水管、热拌沥青、标线——所有项目,一个接一个,都以PDF形式挂在州交通局网站上。
我的假设是:如果历史投标结果能影响经验丰富的承包商对价格的判断,那么我应该能够以一定置信度对这类行为进行建模。验证这一假设花费了数月时间,而早期版本的表现并不理想。
最初的失败:模型为何频频出错
我最初使用的人工智能模型,在处理投标汇总数据的体量和一致性方面遇到困难。早期输出包括:不适用于特定项目类型的条目价格、归属到错误地理区域的竞争对手行为模式,以及听起来自信但在实践中毫无用处的分析。在一次回测中,工具给出的结果比实际中标价低52%——原因并非单价错误,而是它基于一份不完整的条目清单运行,且无法标记缺失项。
我花了数月时间拒绝这些输出,与模型反复“争论”,不断回溯、挑战其推理,坚持要求它基于数据实际显示的内容,而非它想要推断的内容。当早期输出到达估算团队时,我们的估算师Bethany评价说:“这挺有意思。”高级施工经理Greg则问我如何做到的。他们的反馈对工具的塑造作用,不亚于我有意构建的任何功能。一个始终未被忽视的关键点在于:低价并非目标。系统需要找到我们的定价定位能带来真正优势的地方,而不仅仅是能压价的地方。
系统真正需要知道什么
该工具分为三层运作,层间分工是经过深思熟虑的。
第一层:历史基线定价。基于56个新罕布什尔州交通部项目(合同总额3.94亿美元)和90个缅因州交通部项目(合同总额4.45亿美元)——合计146个项目、8.39亿美元合同、近4300个投标条目数据点——AI建立竞争对手在特定条目、项目类型和区域上的历史定价基准,覆盖四个维度:条目类型、项目规模、项目类别和地理区域。
条目类型之所以重要,是因为竞争对手在不同类别上的优势并不均匀。一家在热拌沥青厂产能上有优势的承包商,会在沥青吨位上积极报价,而在劳动密集型的排水工程上趋于保守。这种模式在单个项目中不可见,但在56个或90个项目中会清晰显现。项目规模之所以重要,是因为同一承包商在200万美元的项目(需填满施工班组)与2000万美元的项目(保函能力和现金流主导决策)上的定价策略截然不同。地理区域之所以重要,是因为NHDOT的六个区和Maine DOT的五个区各有不同的竞争格局。一家在波特兰附近主导路面重铺的承包商,可能在阿鲁斯图克县几乎缺席,因为运输经济性使其在该类工程上缺乏竞争力。
第二层:估算师完全接管。没有任何数据集能知道项目是否仅限夜间施工、护栏分包商在该市场是否可用,或某竞争对手刚赢得三个大项目而正采取保守报价以保护产能。估算师对五类动态因素进行评分(施工时间限制、现场与生产条件、分包商依赖度、技术复杂度、当前市场状况),每项对应一个价格调整。这一评分属于专业判断,而非数据检索。
第三层:AI重新介入。当多个动态因素被评分后,部分因素之间存在相关性,简单相加会产生误导。夜间施工与项目复杂度是最典型的例子:所有夜间施工本质上都引入项目复杂度,因此对每项各加5%并不代表额外成本为10%。AI内置了因素间已知关系,并应用混合调整——在该例中为7%而非10%,捕捉真实重叠,而非机械叠加独立调整。
任何构建过资本配置记分卡或收购定价模型的CFO都会遇到这一问题:对相关风险因素独立评分再相加,会高估总风险。将相关性逻辑构建进模型,能在不剥夺估算师对输入判断的前提下,产生一致输出。
我们学到的经验
我们做出的最关键决定,是从已存在的数据入手。DOT投标汇总表是公开的、结构化的,且直接关联我们每年数百次做出的决策。我们只是整理了已有的东西。大多数组织至少拥有一组符合该描述的数据,但尚未围绕它构建流程。
我未曾预料到的是,价值中有相当一部分来自失败期,而非侥幸避开失败。52%的范围偏差暴露了模型处理不完整输入时的特定缺陷;幽灵建议则指出了数据密度过薄、不足以支撑可靠推断的区域。一个模型在迭代期产生错误答案、由实践者质疑并纠正的过程,并非方法失效的信号——恰恰是方法在起作用。
AI与估算师之间的职责边界,最终被证明是整个系统最重要的设计决策,而且我们更多是出于必要性而非远见才做对的。估算师对竞争对手积压订单、分包商可用性和季节性市场状况的判断,无法从历史数据中提取,因为那些信息根本不存在于历史数据中。一旦我们接受这是永久性约束而非暂时性待解问题,架构便自然成形:AI处理历史,估算师处理当下,去重逻辑处理两者交互。这一分工并非妥协,而是输出值得使用的根本原因。