十分钟休息结束,转化曲线仍停在屏幕上,像一道横在所有人面前的墙。
陈海把排序日志重新拉开:“库存权重一加,临期饼干和纸巾套装就冲上去;权重一降,库存压力又压不下去。南城要清货,可用户不买,我们夹在中间。”
年轻测试低声说:“要不先把库存最重的商品强推一轮?至少数据上能看到点击。”
林川看了他一眼,没有责备,只问:“点击变高,退货也变高,南城会给钱吗?”
会议室安静下来。
他们不是在做漂亮报表。七天后,邵明看的是有效订单毛利,李萍看的是仓库有没有少压货。把没人要的东西推到用户面前,只会把上一家服务商走过的坑再踩一遍。
林川端起已经凉透的咖啡,目光落在白板上“库存压力”和“用户偏好”两行字之间。他第一次很想让系统直接给出答案。
念头刚起,熟悉的提示便浮了出来。
【系统提示:当前问题属于真实经营与技术决策,不提供算法答案。可核验异常方向:样本分层错误。请宿主基于真实数据自行判断,系统不会替代研发、管理与商业责任。】
林川握着纸杯的手顿了一下。
不是公式,不是模型,也不是一段可以复制的代码。
系统像是在提醒他:钱能买来时间、团队和一次试错机会,却不能替他承担判断。
他把纸杯放下,重新拿起白板笔,在“用户”下面划出三栏:“可靠老客、价格敏感、低可信冷启动。”
陈海抬头:“这是按用户分?”
“不止。”林川又在“商品”下面写:“刚需补货、清仓临期、小家电决策。”
他转身看向屏幕:“我们刚才把库存压力当成一层,把用户偏好当成另一层,然后硬往一起压。问题是,南城的数据本来就不干净。三套用户编号只能合并六成,活动流量又混着手动置顶。所有人、所有商品放在一锅里算,当然互相打架。”
周野的视频还挂着,医院走廊那头传来护士推车的声音。他看了几秒白板,声音哑却清楚:“按层跑,先别追全量最优。可靠老客用购买偏好,价格敏感用户看清仓响应,冷启动只给低风险刚需品。”
陈海很快接上:“库存压力不能直接顶到总排序前面,只能在同层候选里做调权。”
“对。”林川点头,“还有一条,退货原因不清的商品,先别进灰度。”
后端皱眉:“可那两个SKU库存最多,南城最想清。”
林川把李萍发来的表格打开。临期饼干库存一千一百件,退货原因备注里写着“口味差异、日期敏感、破损包装”。另一款小电锅库存三百多台,售后记录里连续出现“插头松”“加热慢”。
他把两行圈出来:“推荐解决不了质量和预期问题。硬推它们,短期订单可能起来,退货会把毛利吃掉。把这两个从第一轮灰度池剔除,明早给南城写清楚原因。”
年轻测试忍不住说:“他们会不会觉得我们不帮他们清最急的货?”
“会。”林川说,“所以我们要拿数据说话。星川不是仓库甩货工具,我们卖的是有效转化。”
这句话一落,会议室里那点被困住的焦躁终于有了出口。陈海把排序规则拆成三份,后端重写权重入口,测试重新抽样退货原因。周野只留在线上看关键节点,林川每隔二十分钟就让负责人报一次卡点。
第一次卡点很快来了。
后端把新入口接上后,系统直接报错。可靠老客样本太少,价格敏感用户又被两次清仓活动污染,低可信冷启动池更像一团散开的线头。陈海盯着报错日志,额头上冒出细汗:“如果再分细,训练样本不够;如果不分,刚才的问题又回来。”
林川没有看报错本身,而是把三张抽样表摊在桌上:“先别想着一步跑成模型。我们只需要七天灰度第一版。可靠老客不足,就只做规则排序;价格敏感被污染,就先剔除手动置顶那两晚;冷启动不判断偏好,只给低退货刚需品。”
年轻测试迟疑道:“这样会不会太保守?”
“保守不是问题。”林川说,“在客户快断现金流的时候,最怕的是看起来很激进,实际把退货和投诉推高。”
他让陈海把“目标”重新写到白板最上面:不是清掉所有库存,而是在约定商品池里找到第一批真实能卖出去的货。
这行字写出来,团队的动作明显稳了些。后端不再试图把所有权重揉在一个公式里,改成三段候选池;测试把退货备注一条条核对,遇到“物流压坏”“日期不满意”“功能不符”就单独标色;前端临时做了一个极简页面,把每个商品被推荐的理由列在后面,方便明早给李萍确认。
林川在旁边看着,没有把手伸进每一处细节。他看得出来,陈海的技术判断不差,差的是以前被老板催着交付时养成的习惯:先把东西跑起来,再去解释为什么。南城这一单反过来要求他们先把边界讲清楚,再决定怎么跑。
凌晨一点零五分,李萍又发来一份补充表。她没有多说,只把那两个高库存SKU的售后照片附了进来。临期饼干外箱受潮,包装边角软塌;小电锅的插头问题已经在评论区出现过三次,只是之前被客服备注成“用户误用”。
陈海看完,脸色更沉:“如果这些还进推荐池,真卖出去也可能退回来。”
“所以它们不能算有效库存压力。”林川说,“库存是压力,质量风险也是压力。前者能靠推荐缓一口气,后者要靠运营、售后和供应链解决。”
他把这句话写进说明草稿,语气没有指责南城,也没有替星川揽下不该揽的责任。邵明需要结果,但林川不能为了拿下第一个案例,答应把一个电商平台的旧伤全包下来。
第二次卡点出现在价格敏感人群。清仓活动剔除后,样本曲线变得难看,原本看似活跃的一批用户突然少了一大半。年轻测试低声骂了一句,又赶紧闭嘴。
林川看着曲线,反而点了点头:“这才是干净后的真实情况。”
陈海苦笑:“真实得有点寒酸。”
“寒酸也能做。”林川说,“小客户的问题本来就不是一夜变成大客户。先找到十个能成交的人,比把一千个不买的人骗进页面更有用。”
这句话不响,却让几个低头敲键盘的人都停了一下。被云盛封杀后,星川最缺的不是漂亮数字,而是一组自己能解释、客户也愿意承认的结果。
凌晨两点十六分,第二版离线排序跑完。
这一次,点击预测只比第一版高一点,屏幕上的数字并不夸张。可订单转化模拟终于动了,退货风险也从红色区间降了下来。
陈海盯着结果看了半分钟:“提升不够二十,但方向对了。”
“方向对,比假高潮重要。”林川把结果存档,“把可解释原因写出来。为什么推,为什么不推,为什么剔除,都要让李萍看得懂。”
周野那边低低应了一声:“我先下线,病区叫人。”
“去吧。”林川说,“剩下的星川自己扛。”
视频断开后,办公室只剩键盘声和空调的低响。林川看着白板上密密麻麻的分层规则,心里的急躁反而沉了下去。系统没有给答案,甚至把边界划得更冷。但也正因为这样,他第一次清楚地感觉到,星川不能靠某个神秘提示活下去。
这家公司要靠每个人把脏数据拆干净,把责任边界写清楚,把客户真正的问题解决掉。
凌晨三点,陈海把第二版报告初稿发到公司邮箱。林川正准备逐项审核,角落里一直负责抽样的实习生忽然举起手。
“林总,我能说一句吗?”
所有人都看过去。那男生戴着黑框眼镜,胸牌上写着“叶辰”,声音有些紧,却没缩回去。
他把一张异常订单表推到大屏上:“这几条被我们剔除的低可信用户,行为轨迹好像不正常。不是噪声,像是同一类人被拆成了不同编号。”