MQL(营销合格线索)是一件 2010 年代的产物。它假设漏斗是线性的、几个 opt-in 动作和购买意向之间存在确定性关系、销售团队有足够耐心去追市场扔过来的任何东西。这些假设在 2026 年没有一个成立。今年我们在 Anvil 内部把评分系统重写了一遍,我想分享一下我们手里积累了足够成交数据、能对自己诚实之后,真正与 closed-won pipeline 相关的信号到底是什么。
先说一下框架。我们的评分引擎每条 lead 大约会摄入 200 个原始信号,但只有少数几个对预测收入真正有用。绝大多数信号是背景噪声 — 它们让模型保持校准。下面这 8 个,是在我们的历史数据里,出现与否能让 win rate 移动 8 个百分点以上的信号。如果你只能上 8 个特征,我会选这 8 个。
1. 融资事件 + 角色匹配
当目标账户完成 Series B,并且新闻稿里招聘的角色正是你的 buyer persona(Head of Revenue、VP Eng、CISO,随便哪个),win rate 是基线的 4.2 倍。这不是"新融资 = 暖线索"那种偷懒做法,那只会制造噪音。真正起作用的是合取关系:资金进来了 AND 买家角色被授权了或者正在被招募。我们每 6 小时拉一次 Crunchbase 增量,在 30 天窗口内交叉比对 LinkedIn 的角色变动,然后发出一个 `funding_role_match` 事件,把融资金额和角色 token 一起带在 metadata 里。
我们吃了 6 个月的误报:创始人主导型公司,CEO 拿了钱,但买决策一直是他自己。角色匹配返回空,但买家就是 CEO。我们加了一个 `founder_buyer` 启发式(公司年龄 < 4 年 AND 员工数 < 50 AND CEO seniority = founder)把这一类回捞回来。
2. 竞品 churn 抱怨
一条对你直接竞品的公开抱怨 — 来自 Twitter、Reddit、行业 Slack 导出、G2 评价、LinkedIn 帖子 — 是我们手里精度最高的信号。在 48 小时内接触,closed-won 率是 27%,而冷启动 outbound 的基线是 1.8%。诀窍在于"竞品提及"本身的精度只有 4%,真正有用的是抱怨的措辞。我们的 DeepSeek-flash 分类器会看续约语言("contract ends"、"looking for alternatives"、"anyone tried")、churn 挫败感("their support is gone"、"outage again")、迁移意图("migrating off X")。
误报集中在竞品自己的员工在公开吐槽自家产品。我们后来用 Enrichment 服务做 LinkedIn 富化,过滤 `employer != competitor_name`,噪音降了 60% 而召回基本没掉。
3. 产品发布 + 技术栈里已经有相邻厂商
当一个账户公开发布产品更新,而他们已经在用与我们相邻的厂商(比如他们上线了客户门户、并且在用 Segment — 那说明他们关心身份路由),我们看到 3.1 倍的 lift。机制是意向泄露:发布产品意味着内部 roadmap 有压力,相邻厂商意味着这个类目已经有预算。
实现上:爬虫盯着 changelog、新闻稿、BuiltWith 增量。我们为每个账户算一个 `adjacent_vendor_score`,把他们的技术栈 join 到一个手工维护的 graph 上,这个 graph 描述"哪些厂商意味着 Anvil 形状的预算"。graph 大约 140 个节点,每月更新一次足够。
4. 特定角色的招聘 spike
60 天内某个角色家族开了 3 个以上岗位是强信号 — 但只对某些角色家族成立。"Account Executive"招聘 spike 关联的是该公司业务在增长,跟我们能不能成单没关系。"RevOps Manager"或"Marketing Operations"招聘 spike 才跟我们相关。我们把这个信号限定在 4 个角色家族,每个按历史转化率加权。
一个我们最后决定接受的误报:Agency 和咨询公司因为高 churn 会重复发同一个职位。当 `industry IN (agency, staffing, consulting)` 时我们衰减这个信号。
5. 公开 support 板的竞品抱怨
与第 2 条不同:这一条特指在公开 support board 或社区论坛上的抱怨 — 竞品自己的社区、Discord、GitHub issue。这是音量最大的 churn 信号,因为用户已经走过官方渠道、并且选择公开升级。接触后 7 天内 win rate:31%。代价是量小 — 我们在所有监控的竞品上每周大概只看到 40 条。这是好事;它们都转化。
实现细节:我们把这些塞进 task-queue 服务(Go + RabbitMQ)里一个单独的优先队列,outreach 的 SLA 是 1 小时。60 分钟内没被接触的,会在分配 rep 的 Slack DM 里报警。
6. 会议出席重叠
当目标买家出现在你的买家历史上常去的会议(我们维护一个约 80 场会议的清单),并且他们在 LinkedIn 或 X 上发了相关帖子,接下来 14 天是开放期。这个窗口内 win rate 是基线的 2.8 倍。原因很朴素:他们正在 research mode,正在跟厂商聊,你的名字在会议胸牌还在他们包里时落进来,不会显得太冷。
误报:会议演讲者,通常不是买家。我们会事先抓公开演讲者列表,把 `is_speaker = true` 过滤掉。
7. 垂直社群里的热门产品提及
某个产品类目变成垂直社群(私密 Slack、subreddit、行业 Discord、我们有读取权限的微信群)里讨论的话题,并且目标账户的人正在参与那条讨论 — 我们就有了一个 2.4 倍基线的购买模式信号。这一条最难落地,因为需要进入封闭社群。Anvil 把它做成 opt-in 功能,让客户用自己的 API token 接入自己的社群身份。我们绝不抓我们道德上无法触达的内容。
8. 重复匿名流量 + 同 IP 段的邮件打开
不性感的经典,但仍然是最具预测力的之一:一个匿名访客 14 天内回访 3 次以上,而我们发给对应公司的邮件,从同一个 /24 IP 段打开。我们用反向 DNS 加 ASN 查询来去重。两个条件同时满足时,win rate 是基线的 4.7 倍。它好用是因为买家的旅程仍然主要是双通道 — 他们做调研,他们回邮件 — 两个通道同时亮起来基本就锁死了。
我们怎么打分:衰减加权 × 乘性,而不是加性
这一节是整篇文章里最重要的观点。不要把信号分数相加,要相乘。加性评分(signal_a + signal_b + signal_c)是 2008 - 2020 之间所有 marketing automation 平台的原罪。它会让"很多弱信号的账户"得分超过"一个强信号的账户",而事实正好相反。一条竞品 churn 抱怨(信号 #2)应该每一次都赢过 14 次 page view 加一次 webinar 注册。
我们实际的打分函数大致是 `score = base_score * product(1 + signal_weight_i * decay(age_i))`。每个信号贡献一个乘子,每个乘子按时间衰减。融资事件 90 天衰减,竞品 churn 抱怨 14 天衰减,会议出席 21 天衰减。每种信号的衰减函数都是用我们 closed-won 数据 empirically 拟合的。
乘性评分还有一个好性质:信号会交互。融资事件 + 角色匹配 + 技术栈相邻厂商,得到的分数会显著大于这三个信号单独累加。这正是有经验的销售凭直觉做的事 — 他们看的是星座,不是单颗星星。我们只是让模型也这么做。
我们停止追踪的信号
一些我们以前打分、现在不再打分的信号,因为它们就是噪音:通用 page view(除了定价页都不算)、没有 IP 匹配的邮件打开(Apple Mail Privacy Protection 在 2021 年就把这条干掉了,我们假装到 2025 年才承认)、webinar 注册(衡量的是 marketing 触达,不是意向)、gated 内容下载(人们下载东西只是让老板开心)、企业邮箱表单填写(衡量的是 marketing 投广告的能力,不是买家意向)。
如果你的评分模型建立在这 5 个输入上,你打的不是买家的意向分,而是你 marketing 团队的绩效分。这就是 MQL 的核心失败模式。
自己落地这套
你不需要 Anvil 也能做。你需要三样东西:能从自家漏斗以外摄入信号的途径(爬虫、第三方 API、social listening)、一个带 per-signal decay 的乘性评分函数、以及把不能提升 win rate 的信号删掉的自律。第三件最难。每个信号在公司里都有人替它站台。砍掉那些不能交差的。
想走捷径,Anvil 把这 8 个信号开箱即用,衰减曲线在聚合 B2B 数据上预拟合,每个 workspace 可调。你可以把它作为 enrichment 层接到现有 CRM,不需要推倒重来。