一、需求分析
业务背景
某建材批发贸易企业,年营收约 8000 万元,主营钢材、型材、五金等品类,客户以工程承包商、装修公司、二级经销商为主。
询价是这个行业最日常、也最消耗人的动作:客户发来一份询价单(有时是微信里一句话,有时是 Excel、图片、扫描件),业务员要人工识别型号、查库存、查价格、算折扣、编报价单、再发送回去。
原有流程的四个痛点:
| 痛点 | 现状描述 | 量化影响 |
|---|---|---|
| 响应慢 | 业务员手工查库存与价格,一份询价单平均 2–4 小时 | 客户比价期内易被同行截单 |
| 口径不统一 | 同一批货给不同客户的价格策略,全靠 3 名资深业务员的记忆 | 同客户不同价、同货不同利润 |
| 经验单点 | 报价决策集中在少数人手里 | 请假 / 离职 / 状态波动即出错 |
| 时段断档 | 夜间与周末的询价只能等到次日 | 工程客户常年赶工期,损失最直接 |
需求的两个层次
项目最初立项时,需求写得很清楚:做一个 AI 智能体,自动处理客户询价——识别型号、查库存与价格、生成报价单、自动发送。
这是表层需求。项目做到第 3 周测试阶段,客户的业务总监在与项目组复盘时说了一句话,把真实问题暴露了出来:
"你这个询价自动回复确实快了,但你知道吗,我们最大的痛点不是回复速度——**是报价决策**。"
报价为什么不是「查库存 → 报价格」
建材批发的报价是一个多因子决策,而不是一次查表:
现实是:这些判断全部装在那 3 名资深业务员的脑子里。报高了丢单,报低了亏利润,两个方向的损失都是真金白银。
这也是为什么「自动回复」只是表层——它让回复变快了,但并没有碰到利润是怎么被决定、又是怎么被漏掉的。
二、技术方案
前置判断:价格不能交给模型去算
立项后的第一个工程决策,不是选模型,而是划边界:
**涉及数字的地方归代码,涉及语义的地方归模型。**
理由很朴素:模型会算错数,而报错一个价格,损失的是客户真实的钱。这条边界一旦划错,整套系统在业务员心里的信任就没了——而信任没了,工具就等于不存在。
系统架构
客户询价(邮件 / 企业微信 / 图片 / Excel)
↓
① 询价解析(LLM + 结构化输出)
型号 · 数量 · 交期 · 客户身份 · 附加要求
↓
② 客户画像检索(CRM + 向量检索)
协议价档位 · 近 6 个月成交价 · 信用额度 · 历史偏好
↓
③ 定价因子计算(规则引擎 · 确定性)
成本线 → 协议价约束 → 库存周转系数 → 行情调整 → 竞品区间
↓
④ 报价建议生成(LLM)
建议价 + 可接受区间 + 逐条依据 + 风险提示
↓
⑤ 输出
建议模式:业务员确认 / 改价后发送
自动模式:低风险场景直接发送
↓
⑥ 回写
实际成交价 → CRM,成为下一轮的历史数据技术栈
LLM:GPT-4o(询价解析、依据说明、风险话术)
确定性计算:规则引擎服务(Python)
数据层:PostgreSQL(客户档案 / 成交历史)+ pgvector(历史报价单语义检索)
后端:FastAPI
系统集成:ERP(库存 / 成本)、CRM(客户 / 协议价)
触达渠道:邮件、企业微信三、实现细节
1. 把资深业务员的经验结构化成规则
这是整个项目最费力、也最不可替代的一步。做法不是「访谈一次写份文档」,而是陪跑记录:让业务员在处理真实询价时同步口述决策理由,累积一批真实报价案例,再从中归纳出可执行的因子与权重。
例如,把一句模糊的经验:
"这个客户是老客户了,可以给点优惠。"
翻译成可执行的规则:
IF 该客户近 6 个月成交单数 ≥ 5
AND 无逾期记录
THEN 折扣档位 = B(对应协议价区间)
且 报价不得低于成本线 × 1.03模糊经验变成规则后,才可能被系统复用、被新人理解、被数据检验。
2. 报价依据必须逐条可溯源
智能体输出的不是一个价格,而是这个价格是怎么来的:
建议报价:¥4,280 / 吨(可接受区间 ¥4,150 – ¥4,380)
报价依据:
· 该客户近 6 个月平均成交价 ¥4,240(协议价档位 A)
· 当前该规格库存周转天数 18 天(偏慢 → 走量系数 ×0.98)
· 同类产品当前市场均价 ¥4,320
· 该规格成本线 ¥4,050
风险提示:
⚠ 本报价毛利率 5.4%,低于该品类均值 8.2%
⚠ 若客户要求再让 3%,将触及成本线 ¥4,050
⚠ 该客户信用额度剩余 ¥12 万,本单金额 ¥34 万,建议先款后货(以上数值为格式示意。)
3. 风险提示比报价本身更值钱
业务方看到原型时的原话是:"这个不是询价回复系统,这是帮我管利润的。"
触发这句话的,不是「3 秒生成报价」,而是那一行「低于成本线,建议确认」。所以风险提示的设计要成体系:
| 触发条件 | 提示级别 | 处理 |
|---|---|---|
| 报价低于成本线 | 硬告警 | 阻断自动发送,必须人工确认 |
| 毛利率低于品类均值 | 软提示 | 附同类历史成交参考,供议价取舍 |
| 偏离该客户历史成交价 ±5% | 提示 | 请确认是否存在特殊商务背景 |
| 客户信用额度不足 | 提示 | 建议调整付款条件 |
4. 上线节奏:先建议,后自动
报价是要直接发给客户的,出错代价高,因此系统不一次性放开:
这条灰度设计还有一个副作用:它让业务员从「担心被替代」转成了「多了一个替我把关的助手」——工具的推行阻力,往往不在技术,在这里。
四、项目成果
业务指标
| 指标 | 上线前 | 上线后 | 变化 |
|---|---|---|---|
| 询价响应时间 | 2–4 小时 | 3 秒(生成建议) | ↓ 99%+ |
| 报价错误率 | 8% | 1% | ↓ 87% |
| 夜间 / 周末询价 | 无法处理 | 全时段可处理 | 从 0 到 1 |
| 资深业务员时间占用 | 大量用于查价与编单 | 释放回客户维护与商务谈判 | 结构性改善 |
(业务指标为项目方披露口径。)
报价逻辑的重构:从「卖时间」到「卖价值」
这段经历对交付方最大的影响,是报价逻辑本身被改掉了:
| 报价维度 | 传统软件逻辑 | AI 智能体逻辑 |
|---|---|---|
| 基础 | 人天投入 × 单价 | 创造的可量化价值 |
| 参考线 | 行业人天均价 | 客户年化收益的 10–20% |
| 议价空间 | ±10% | 取决于价值感知程度 |
| 运维费 | 通常不含 | 必含,按月持续收费 |
同一个项目,最初按「6 周 × 3 人 × 800 元人天」报了 8 万;而在原型演示、业务方看到报价决策与风险提示之后,客户主动提出把预算加到 25 万,并附带 3 个月的运维合约。
不是技术变强了,是价值被看见了。
五、可复用的经验
1. 表层需求是入口,深层需求才是价值。 客户说「帮我做个自动回复」时,真正的痛点往往在下一个问题里——他不会主动告诉你,因为连他自己都还没意识到这件事能被 AI 解决。要主动去挖,而不是等合同条款里写上。
2. 确定性归代码,语义归模型。 越靠近钱和合规的计算,越要交给确定性逻辑。模型的强项是理解与表达,不是算术与担责。
3. 可解释性不是加分项,是成交项。 一个数字不值钱,「这个数字怎么来的 + 风险在哪」才值钱。客户不为「快」买单,但会为「安全和利润」买单。
4. 先交付价值,再谈价格。 先提价再做,客户觉得你在坐地起价;先做出来再谈,客户觉得你在创造价值。同样的结果,顺序不同,感受完全不同。
5. 灰度上线不是技术妥协,是信任建设。 让使用者能干预、能回退、能看到系统学到了什么,比任何技术指标都更能推动落地。
写在最后
别急着报价。先搞清楚你帮客户解决了什么问题、这个问题值多少钱。搞清楚了,客户自己会告诉你他愿意付多少。
探索智能,酷在前沿