Jev Recipe / 销售流程
AI 线索评分实战:用 Jev 构建类型化评分与 CRM 分流
把紧凑的线索记录转成有顺序的优先级评分、高意向(hot lead)标记与 CRM 分层,阈值始终由你的业务代码掌控。
广告
实施 AI 线索评分的 6 个步骤
01只保留真正影响优先级的字段:公司规模、行业等企业属性,联系人职务,留言正文、定价页访问等意图信号;剔除与判断无关的隐私数据。
02把 Score criteria 设计成有序的 ICP 阶梯——1(低匹配)到 4(立即跟进),每一档都只对应一个明确的销售动作。
03在一次 evaluate 调用里组合多个问题:priority Score、is_hot_lead Noul(是否呼叫销售)、segment Choice(CRM 分层)。
04阈值写在业务代码里:priority ≥ 3 且 confidence ≥ 0.85 自动写入 CRM 并通知销售,其余进入 SDR 人工复核队列。
05用已成交与流失的历史线索回测,按真实转化率校准分档定义和阈值,并随 ICP 变化定期重调。
06接入 CRM:priority 映射线索状态,segment 映射客户分层字段,低于阈值的 confidence 自动生成人工跟进任务。
schema / 线索评分决策契约
{
"priority": {
"type": "score",
"instructions": "评估这条线索的销售跟进优先级",
"criteria": {
"1": "匹配度低:客群不符,没有预算信号",
"2": "可能匹配:痛点真实,需要培育",
"3": "匹配度高:符合 ICP 且有明确意向",
"4": "立即跟进:匹配度与意向都高"
}
},
"is_hot_lead": {
"type": "noul",
"instructions": "是否应在一个工作小时内通知销售负责人?"
},
"segment": {
"type": "choice",
"instructions": "判定 CRM 客户分层",
"criteria": {
"enterprise": "500 人以上或企业域名",
"mid_market": "50-499 人",
"smb": "50 人以下",
"self_serve": "个人或试用注册"
}
}
} 把一条真实线索记录作为 state 发送,检查模型返回的 priority、is_hot_lead 与 segment。
实时交互体验 / 线索评分沙盒
Jev AI 线索评分与 CRM 分流模拟器
选择一条样例线索并运行 Score schema,看置信度如何决定谁先看到它:
校准置信度已启用
priority / is_hot_lead / segment
companyAcme Cloudtitle工程副总裁 employees800 pricing_page_views_7d6 message“我们 Q4 上线前需要 SSO 和安全评审,400 个席位的报价能发我吗?”
Jev 决策输出
~95ms / $0.00004priority · scoreconfidence
4 / 497.0%
is_hot_lead · noul true
segment · choice企业级
分流决策(策略在代码里)
PAGE_REP_NOW(立即呼叫销售)
Hot lead:priority 4 且高置信度——一个工作小时内通知负责人。
代码中的策略:priority ≥ 3 且 confidence ≥ 0.85 → 自动写入 CRM(is_hot_lead = true 时立即呼叫销售)· 其余 → SDR 人工复核队列 · priority 1 → 培育序列
线索评分基准对比:Jev 类型化评分 vs 生成式 LLM 评分
METRIC
Jev
生成式 LLM 评分
中位延迟 (P50)
~95ms
单次前向推理,无 token 生成
1500~3000ms
逐 token 生成 JSON
千条线索成本
~$0.05
仅输入计费,0 输出 token
$0.30~$1.20
输入与生成 token 双向计费
输出确定性
确定性
同一条线索每次都落在同一档
随机性
采样波动让边界线索在不同运行间换档
置信度质量
校准概率
阈值可直接驱动自动化分流
模型自报
未校准,需额外接入 logprob
格式错误率
0%
Score / Noul / Choice 为原生输出
2~8% 非法 JSON,需要解析重试循环
读懂自由文本意图
留言正文与行为信号在同一前向中评分
可行,但在线索规模下又慢又贵
生产代码:线索评分与 CRM 分流
typescript / jev 线索评分与 CRM 分流
type LeadState = {
company: string;
employees: number;
title: string;
message: string;
pricing_page_views_7d: number;
};
// 策略写在应用代码里,而不是 prompt 中
const AUTO_ROUTE_MIN_SCORE = 3;
const AUTO_ROUTE_MIN_CONFIDENCE = 0.85;
export async function scoreLead(lead: LeadState) {
const response = await fetch("https://api.typesafe.ai/v1/jev/evaluate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
state: lead,
questions: {
priority: {
type: "score",
instructions: "评估销售跟进优先级",
criteria: {
"1": "匹配度低",
"2": "可能匹配",
"3": "匹配度高",
"4": "立即跟进",
},
},
is_hot_lead: {
type: "noul",
instructions: "是否应在一个工作小时内通知销售?",
},
segment: {
type: "choice",
instructions: "判定 CRM 客户分层",
criteria: {
enterprise: "500 人以上",
mid_market: "50-499 人",
smb: "50 人以下",
},
},
},
}),
});
if (!response.ok) throw new Error("Jev evaluate failed");
const data = await response.json();
const { priority, is_hot_lead, segment } = data;
const confident = priority.confidence >= AUTO_ROUTE_MIN_CONFIDENCE;
if (priority.answer >= AUTO_ROUTE_MIN_SCORE && confident) {
return {
route: is_hot_lead.answer ? "page_rep_now" : "crm_auto",
priority: priority.answer,
segment: segment.answer,
confidence: priority.confidence,
};
}
// 评分或置信度低于阈值 → 进入 SDR 人工复核队列
return {
route: "sdr_review",
priority: priority.answer,
segment: segment.answer,
confidence: priority.confidence,
};
}
// 典型路径:单条线索 ~95ms,仅输入计费,0% schema 错误python / jev 批量线索评分
import requests
JEV_ENDPOINT = "https://api.typesafe.ai/v1/jev/evaluate"
AUTO_ROUTE_MIN_SCORE = 3
AUTO_ROUTE_MIN_CONFIDENCE = 0.85
QUESTIONS = {
"priority": {
"type": "score",
"instructions": "评估销售跟进优先级",
"criteria": {
"1": "匹配度低",
"2": "可能匹配",
"3": "匹配度高",
"4": "立即跟进",
},
},
"is_hot_lead": {
"type": "noul",
"instructions": "是否应在一个工作小时内通知销售?",
},
}
def score_lead(lead: dict) -> dict:
resp = requests.post(
JEV_ENDPOINT,
json={"state": lead, "questions": QUESTIONS},
timeout=5,
)
resp.raise_for_status()
result = resp.json()
priority = result["priority"]
hot = result["is_hot_lead"]
if (
priority["answer"] >= AUTO_ROUTE_MIN_SCORE
and priority["confidence"] >= AUTO_ROUTE_MIN_CONFIDENCE
):
route = "page_rep_now" if hot["answer"] else "crm_auto"
else:
route = "sdr_review"
return {
"lead_id": lead.get("id"),
"priority": priority["answer"],
"confidence": priority["confidence"],
"route": route,
}
def score_batch(leads: list[dict]) -> list[dict]:
# ~95ms/条:夜间同步 1 万条线索约 16 分钟跑完,
# 且远低于 CRM API 速率限制。
return [score_lead(lead) for lead in leads]