upio.ai / Akke / 用户案例 / 闽D想家(二次加微)
想
USER JOURNEY · 重新加微 → 代码报价一次算对 → 第二天约到店

闽D想家(二次加微)
同一个窗台柜,这次 AI 一次报对 1817.6,第二天客户要定位到店

10 月 9 日 17:46,销售 A 的个人微信号重新加上这位厦门客户。客户通过验证后问的还是那个窗台柜:"做一个窗台收纳柜 3.2/0.87/0.4 一个要多少钱"。
9 月 21 日他问过几乎一样的问题,当时 AI 报了 1581(漏了"不足 1 米按 1 米算"),销售撤回改口,客户问"怎么涨价了"(见 9-21 那一页)。这次报价由代码算:0.87 米不到 1 米按 1 米算,1,817.6 元,和 9-21 销售人工核出来的数一致,没有改口。之后客户问材料、问店在哪,第二天早上 08:51 发来"定位发一下今天过去看看"。

1 条 AI 回复(金额由代码算)0 次 改口15 小时 加微 → 约到店⚠ 首问约 82 分钟后才进系统⚠ 到店结果待回填
1
重新加好友
10-9 17:46
2
通过并问价
10-9 17:46
4
问材料 / 测量
10-9 19:11
5
人工答板材
10-9 19:31
6
问店在哪 · 人工给地址
10-9 19:38
7
"今天过去看看"
10-10 08:51
8
转人工 · 到店
10-10 09:03 发定位 · 到店待回填
00 · Full transcript

完整聊天记录与逐句标注

按"谁说的"逐条标注。AI 那条是数据库原文(一字不差),下面附当时那一次调用的真实记录。销售手打的不经过系统,标为人工。两张原始截图放在本节末尾,点击放大。

系统
个人微信单聊 · 客户备注 闽D******想家138******38。执行器跑在销售 A 的 Windows 电脑上,销售号 wx_pc_54335e50cd。
这位客户 9 月 21 日在另一个会话里聊过(会话 adae1b28…,见那一页),备注和手机尾号一致;这次是重新加好友,系统开了新会话 2dd3cb34…,两段历史没有接上。
会话 2dd3cb34…积木:无 · 会话信息
销售(加好友招呼语)
我们是有大有小全屋定制,兔宝宝ENF多层实木原价868现在征集样板房,每平方补贴300只要568,加微申领补贴
10-09 17:46 前(截图)👤 加好友时填的验证语,不经过 AI。⚠️ 库里在 19:11:28 多了一行 role=ai、内容和这句一字不差,但那一刻没有任何模型调用记录,截图里 19:11 之后也没有再出现这句——判断为执行器读屏时把这条招呼语回读成了"我方新消息",客户并没有再收到一次(见 04.1)
系统
以上是打招呼的消息
10-09 17:46积木:无 · 微信系统提示。weixin_friend_lifecycle.accepted_at = 17:46
闽D想家
我通过了你的朋友验证请求,现在我们可以开始聊天了
10-09 17:46(库里落库 19:08:35)积木:不适用 · 客户消息
闽D想家
做一个窗台收纳柜3.2/0.87/0.4一个要多少钱
10-09 17:46 后(库里落库 19:08:36)积木:不适用 · 客户消息 · 尺寸齐全 + 明确问价。⚠️ 这两句在微信里 17:46 就到了,19:08 才进系统。19:08:50 的告警卡写的是"客户这 1 句端上读到了、当时没进代回(已补落库)"——中间约 82 分钟客户在等
AI 自动回复
收纳柜高0.87米不到1米按1米算,3.2×1=3.2㎡,按568一平算是1,817.6元,板材五金柜门安装全包。
10-09 19:09:20(落库后 44 秒)💡 这句话的骨架不是模型自己写的:它和 src/lib/wecom/cabinet-dimension-quote.ts 里 buildDimensionQuote 的单柜句式逐字一致("…不到1米按1米算…按568一平算是…元,板材五金柜门安装全包。")。这是 9-24 合并的 #1656——客户按尺寸问价时,金额由代码算好、作为本轮指令插进提示词;出门闸再按同一尺寸算一遍,回复里的金额对不上、或没给金额,就整条换成代码算的这句。出门闸那段代码的注释里写的就是"2026-09-24 想家案例:模型拿 0.87 当投影高报 1581"。
📚 真实调用:wecom.nurture.rules v33 · 模型 qwen3-235b-a22b-2507 · 读入 22,403 token · 输出 52 token · 9.2s · $0.0020
📖 命中知识文档 1 篇:《阳台改造常见做法》(相关度 0.44,文中也写着"柜体高度不足 1m 的按延米算");另有 2 条知识条目(相似度 0.66 / 0.64)
闽D想家
材料怎么样
10-09 19:11:25积木:不适用 · 客户消息 · 价格接受了,转问材料
闽D想家
你们过来测量
板面好不好
10-09 19:12:44积木:不适用 · 客户消息 · 要上门量尺——比问价更进一步的信号
销售(手打)
板材是兔宝宝、莫干山、千年舟的 ENF 级多层实木,具体品牌和配置到店结合方案确认会更清楚。
10-09 19:31(截图)👤 人工手打 · 库里没有这一条,也没有对应的模型调用。19:11 和 19:12 两条客户消息之后,系统一次 chatReply 都没发起(见 04)
闽D想家
店在哪里
10-09 19:32:52积木:不适用 · 客户消息 · 第一个到店信号
销售(手打)
我们在厦门市思明区台北路海西金谷广场 T1-11 楼,有大有小。您看这两天哪天方便过去?
10-09 19:38(截图)👤 人工手打 · 库里没有。给地址的同时追了一句"哪天方便"——这正是 9-21 那次缺的一步。20:20 运营在系统里登记了"今天已人工补发"(weixin_manual_reply_audit)
闽D想家
定位发一下今天过去看看
10-10 08:51(库里落库 09:01:36)积木:不适用 · 客户消息 · 到店承诺:今天。09:01:40 系统判定"客户给出了到店时间"→ 会话转人工(stage=handed_off、store_visit_committed_at 写入),09:01:41 推了转人工卡
销售(手发位置)
10-10 09:03(截图)👤 人工发送 · 自动化发不出微信原生位置卡片,转人工后由销售发
01 · Customer context

用户背景与核心需求

这是一位回头客:18 天前他就带着同一个窗台柜来问过价,被一次改口吓了一下,说过"那天有时间我去看一下样品",之后没有到店记录。这次他换了个说法重新问价,价格对上之后,一晚上就从问材料走到了"今天过去看看"。

📏

需求没变

9-21 问的是 3.2/0.87/0.5,这次是 3.2/0.87/0.4——同一个窗台柜,深度改了 5 厘米(深度不计价,金额不受影响)。

💰

先核价

通过验证后的第一句就是问价。这次拿到的数和上次销售人工核的一致(1817.6),他没有再追问价格。

🧪

再问材料

"材料怎么样""板面好不好"——价格过关后马上转去确认东西值不值这个价。

📐

想要上门量

"你们过来测量"——比问价更深一步,说明他已经在想落地。

📍

到店意向落成了"今天"

"店在哪里" → 销售给地址并追"哪天方便" → 第二天早上"定位发一下今天过去看看"。

◐

决策阶段

约到店(今天)。本页截稿时(10-10 上午)还没有到店回填,不写成"已到店"。

02 · Conversion timeline

完整转化时间线

从加好友(10-9 17:46)到客户说"今天过去看看"(10-10 08:51)约 15 小时,中间隔了一夜。真正花在对话上的时间不到一小时;最长的一段空白是开头那 82 分钟。

17:46

销售重新加好友,客户通过后立刻问价

截图 + friend_lifecycle

招呼语是加好友时填的模板。客户通过后直接给尺寸问价,没有寒暄。

17:46 – 19:08

两句客户消息在端上停了约 82 分钟才进系统

告警卡 19:08:50

告警原文:"客户这 1 句端上读到了、当时没进代回(已补落库,本轮回复会一并参考)"。这段等待是本案最大的时效损失;客户没有流失是运气,不是机制。

19:09:20

代码算价,AI 一次报对 1,817.6 元

messages + provenance

"收纳柜高 0.87 米不到 1 米按 1 米算,3.2×1=3.2㎡,按 568 一平算是 1,817.6 元"。算式写明了口径,客户能自己核。和 9-21 销售人工核出的数一致。

19:11 – 19:12

客户转问材料、要上门量——系统没有再发起回复

messages + provenance

"材料怎么样""你们过来测量 / 板面好不好"都进了库,但 19:00–19:45 整个个微通道只有一次 chatReply(19:08:48,就是上面那条报价),这两句没有触发任何模型调用。原因待查(见 04)。

19:31

销售手打答板材

截图·未入库

"兔宝宝、莫干山、千年舟的 ENF 级多层实木,具体品牌和配置到店结合方案确认会更清楚"——答了材料,并把"板面好不好"引向到店。上门测量那句没有正面回应。

19:32 – 19:38

"店在哪里" → 地址 + "您看这两天哪天方便过去?"

截图·未入库

给地址的同一句里追了时间。9-21 那次客户也问过"在哪里看样板",当时只发了位置卡片、没有追时间,后来停在"那天有时间我去看一下"。

10-10 08:51 – 09:03

客户:"定位发一下今天过去看看"——系统转人工,销售发定位

conversations + 告警 + 截图

消息 09:01:36 落库(端上又晚了约 10 分钟),4 秒后系统判"客户给出了到店时间"、会话转人工并推卡;09:03 销售手发位置卡片。到店是否发生、谁接待,本页截稿时还没有回填。

03 · Conversation strategy

每个阶段是怎么推进的

阶段销售 / 自动化动作解决的顾虑结果信号归类
重新加微加好友验证语(868→568 补贴)凭什么加你通过,直接问价人工 · 非 AI
问价应答代码按尺寸算价、写明口径,AI 照指令发出 + 环保海报到底多少钱、会不会变客户不再追价,转问材料代码报价(#1656) · 真实调用
材料 / 测量销售手打品牌 + "到店确认更清楚"东西值不值客户问店在哪人工 · AI 未发起回复
到店邀约地址 + "这两天哪天方便过去?"去哪、什么时候次日"今天过去看看"人工 · 本案最该复用的一句
到店转人工系统判到店承诺 → 转人工推卡;销售发定位怎么找过去到店待回填系统判定 + 人工发位置
03.1 · Reply pipeline

那条 1,817.6 是怎么生出来的

格子里的数字取自 19:09 那一次的真实调用记录。和 9-21 那条 1581 比,变的是第 04 格:金额不再靠模型自己乘。

01 发现
读微信窗口
17:46 到达
19:08 才读到
02 落库
写 messages
客户两条
19:08:35–36
03 检索
知识 / 示例 / 规则
知识 1 篇(0.44)
示例 3 条 · 规则 11 条
04 组装
插报价指令
代码算好 1,817.6
v33 · 22,403 token
05 生成
模型推理
qwen3-235b
9.2s → 52 token
06 过闸
核对金额
按尺寸复算
不符即整条替换
07 发送
配素材 + 发出
env-test-price
19:09:20

第 06 格:出门闸用 dimensionQuoteForGate 按同一尺寸再算一遍,回复里的金额对不上或没给金额,就整条换成代码算的那句。9-21 那次的价格闸只看单价在不在授权区间,所以 1581 能过;这次闸看的是总价本身。本条实发文字和代码句式一字不差,是模型照指令写的、还是被闸整条替换的,调用记录里分不出来——两种情况客户收到的都是对的数。

03.2 · What it cited

这条回复引用了什么

这一轮模型拿到的三类东西都摊开在下面。本案报价对不对,已经不取决于它们——金额是代码给的。

命中知识文档《阳台改造常见做法》· 相关度 0.44 · 本轮唯一命中的知识文档(另有 2 条知识条目)

文中【怎么算】一段:按柜体投影面积(宽×高)算……柜体高度不足 1m 的按延米算(1m 单价=1 平方单价)。

这次命中的是另一篇,但写着同一条口径。9-21 那次命中《预报价算例》也写着它,模型仍然漏了;所以这次算对,不能归功于知识检索。

命中示例 3 条 · 和本句关系不大

8fdef3ca(q9)"主要想做衣柜和橱柜";315d7bb0(q9)"想用生态板做柜门便宜点";5de32005(q10)"你这价太高了"。都不是"按尺寸问价"。

决策规则 11 条 · 每轮按置信度注入,不按这句话检索

与本句相关的是一条 conf=10 的规则:客户问的那句答完就停,再用一句自然的话把客户往到店上带。这条回复答完就停了,但没有往到店上带——往到店上带的那句是 19:38 销售手打的。

04 · Friction map

核心卡点

本案最重要的一条

9-21 那页的建议"金额不由模型算",这次在同一位客户身上兑现了

9-21:AI 用 3.2×0.87 算出 1581,销售撤回改口 1817.6,客户"怎么涨价了"。那页的 07 行动建议第一条是"金额不由模型算"。三天后 #1656 合并(09-24)。10-09 同一位客户问同一个柜子,回复里的金额由代码算出,一次就是 1,817.6,口径写在句子里,没有改口。

能说的:报价这一步不再是这条链路的风险点。不能说的:客户这次到店"是因为"报价对了——他也可能本来就打算来,没有对照组。

时效卡点

开头 82 分钟,客户的第一句话没进系统

客户 17:46 通过并问价(问价那句在微信里和 17:46 归在同一个时间分组下,到达时刻按此推算),19:08 才落库。告警说的是"端上读到了、当时没进代回"。本页没有查到这 82 分钟具体卡在哪一步,只知道不是服务端慢(落库后 44 秒就发出了)。

⚠️ 未查明

19:11 之后的三句客户消息,系统一次都没发起回复

"材料怎么样""你们过来测量 / 板面好不好""店在哪里"都在库里,但 19:00–19:45 整个个微通道只有一次 chatReply(19:08:48,就是 1817.6 那条)。一个可疑点:19:11:25 客户问材料,3 秒后库里多了一行 role=ai(招呼语被回读),会话"最后一条"变成了我方。它能不能解释 19:12 和 19:32 两句也没触发,现有记录答不上来。验证方法写在 09。

人工补位

销售两句话把节奏接住了

19:31 答板材时顺手把"板面好不好"引向"到店结合方案确认";19:38 给地址时追"这两天哪天方便过去"。9-21 那次停在"那天有时间",就差这一句。

未回应

"你们过来测量"没有被接住

客户主动要上门量尺,回复里没有正面回应。按店长口径,量尺要先交定金(算进总价)、交定后才安排——这句话本可以顺势讲清,也可以作为到店的理由。

04.1 · Technical blockers

技术卡点

技术卡点 01

加好友招呼语被回读成一条"AI 消息"

库里 19:11:28 有一行 role=ai,内容是加好友验证语原文。那一刻没有任何模型调用;截图里 19:11 之后也没有再出现这句话。也就是说客户没收到第二次,但系统以为我方又说了一句。后果有两个:会话历史里多了一条假的"我方发言";如果回复逻辑看"最后一条是不是我方",客户下一句可能被当成已回复。

判据没有对应 chatReply / 指令记录的 role=ai 行,不是 AI 发的。
待查执行器读屏时如何区分"以上是打招呼的消息"之上的验证语与新发出的消息。
技术卡点 02

客户消息在端上延迟落库(82 分钟、10 分钟)

两次都是"微信里已经到了、系统晚了才知道":17:46 → 19:08、08:51 → 09:01。第二次 10 分钟问题不大(客户说的是"今天"),第一次 82 分钟是新客户的首问。

待查那台电脑 17:46–19:08 的执行器本地日志:新好友会话有没有进轮询列表。
技术卡点 03

代码报价句式里的"全包",和 10-09 晚上上线的用词规则冲突

本案那句报价末尾是"板材五金柜门安装全包"。10-09 21:08 合并的 #2043 规定客户话术不许出现"全包",统一改成"包含板材、柜门、基础五金和安装",做法是在模型回复收尾时把"全包"二字替换掉。但代码报价句式本身没改,于是下一位按尺寸问价的客户:模型照抄指令时,替换后变成"板材五金柜门安装包含板材、柜门、基础五金和安装"这种重复句;被出门闸整条换成代码句时,"全包"原样发出。

修法把代码报价句式源头改成新口径,替换兜底不再碰到它。
技术卡点 04

重新加好友开了新会话,18 天前的历史没接上

9-21 会话 adae1b28… 和这次 2dd3cb34… 是同一个人(备注、手机尾号一致),系统当成了新客户。这次碰巧没出事;如果客户说"上次你们说过……",AI 是看不到的。

05 · Trigger model

这次为什么走到了"今天过去看看"

具备的条件

  1. 老需求、老意向:9-21 就说过要去看样品,需求没变。
  2. 价格一次对上:口径写明、没有改口,客户问完价就转问材料。
  3. 材料问题被引向到店:"到店结合方案确认会更清楚"。
  4. 给地址时追了时间:"您看这两天哪天方便过去?"

和 9-21 那次的差别(只列可核对的)

  • 报价:1581 → 改口 1817.6 / 这次直接 1817.6
  • 到店邀约:只发位置卡片 / 这次地址 + "哪天方便"
  • 结果:停在"那天有时间" / 这次"今天过去看看"
  • 没有对照组:不能证明是哪一项起的作用
06 · Review

案例复盘:做对什么,还能改什么

GOOD

做对的

报价由代码算、口径写进句子,这一条 9-21 暴露的硬伤在同一位客户身上验证修好了;销售在客户问店时同一句里追了时间;客户说出"今天"后系统 4 秒内转人工推卡,销售 2 分钟内发了定位。

BAD

这条链路上的短板

首问晚了约 82 分钟才进系统;19:11 之后三句客户消息没有触发任何 AI 回复,全靠人工;招呼语被回读成一条假"AI 消息";"你们过来测量"没有接;同一个人重新加好友后历史没接上;报价句式里的"全包"会和新规则撞出重复句。

如果重新跟进

更合理的推进方式

首问能在几分钟内回(端上读到即落库);报价后紧跟一句往到店带("样柜和板材在店里都能摸到,您这两天哪天方便?");客户说"你们过来测量"时讲清量尺流程(交定后安排、定金算进总价)并顺势约到店;识别出是 9-21 的老客户,把上次的尺寸和报价带进上下文。

07 · Action plan

后续动作

回填

到店结果

今天到店后回填:实际到店时间、谁接待、方案和预算、下一步。回填后本页第 8 步改成"已到店"。

排查

19:11 之后为什么没回

按 09 的两步查:服务端日志看这三句是被哪道判断跳过的;对照假 role=ai 行出现的时刻。

排查

首问晚 82 分钟

取那台电脑的执行器本地日志,看新好友会话何时进入轮询。

修复

报价句式去掉"全包"

源头句式改成新口径,避免替换后出现重复句。

话术

"过来测量"要接住

把量尺流程(交定后安排)写进到店邀约的理由里。

数据

老客户识别

重新加好友时按备注 / 手机号认出老客户,接上历史会话。

08 · Reusable SOP

回头客按尺寸问价 → 约到店

价由代码算

客户报尺寸问价,金额走计价函数,回复里写明口径(不足 1 米按 1 米)。

报完价往到店带

答完就停,再加一句到店理由和时间问题。

问材料给可核对的

品牌 + 环保等级,细节引向到店摸样板。

要上门量就讲流程

量尺交定后安排、定金算进总价;顺势约到店先看样。

给地址同时追时间

"您看这两天哪天方便过去?"——不只发地址。

说出日期即转人工

系统判到店承诺 → 转人工;销售发定位、安排接待。

到店后回填

到店时间、接待人、方案、预算、下一步。

09 · Evidence & gaps

证据边界与待补充信息

数据库可核验的部分

会话 2dd3cb34… 的 8 行 messages(6 客户 / 2 记为 AI,其中 1 行无模型调用);19:08:48 那次 chatReply 的提示词版本、模型、token、耗时、成本、命中知识与规则;weixin_friend_lifecycle.accepted_at 17:46;conversations 的转人工时间与到店证据;19:08:50 与 09:01:41 两张告警卡原文。

只有截图、没有库记录的部分

19:31、19:38 两条销售手打消息;09:03 的位置卡片;加好友验证语的发送时间(截图只显示 17:46 这个分组时间)。

未查明

① 17:46–19:08 客户首问卡在端上的原因。② 19:11、19:12、19:32 三句为什么没触发 chatReply——查法:服务端 /api/wecom/chat/reply 在 19:11–19:40 对本会话的请求与跳过原因;对照 19:11:28 那行假 role=ai。

仍需补充

客户今天是否到店、接待人、方案与预算、有无交定。

本页不断言的

不断言"报价对了所以客户来了"(没有对照组);不断言 19:11 之后没回是被假 role=ai 行挡住的(只是时间上相邻);不断言客户已到店。

← 同一位客户的上一段:9-21 AI 报了 1581,销售撤回改成 1817.6
→ 对照:汤圆,客户给出"两点半到三点"后转人工到店