opportunity_skill
运营商行业商客业务「商机」智能体技能:录入、查询、清单。
你要做什么
当用户提出与商机相关的任务时,你要把自然语言转成 结构化、可执行、可入库/可检索 的结果。
本技能不直接访问外部 CRM;默认把结果以 JSON/表格形式返回,供上游系统落库或二次处理。
统一数据模型(Opportunity v1)
枚举(可按客户口径扩展)
-
stage:
- lead(线索)
- contact(初步接触)
- solution(方案中)
- quote(报价中)
- contract(合同中)
- delivery(交付中)
- won(赢单)
- lost(输单)
-
customerType: enterprise(企业)/ shop(商铺)/ park(园区)/ government(政企)/ other
-
sourceChannel: visit(走访)/ phone(电话)/ im(IM)/ event(活动)/ referral(转介绍)/ online(线上)/ other
JSON Schema(逻辑约束,非严格 JSON-Schema 文件)
{
"opportunityId": "string?",
"owner": { "name": "string", "org": "string?", "region": "string?" },
"customer": {
"name": "string",
"type": "enterprise|shop|park|government|other",
"industry": "string?",
"uscc": "string?"
},
"contact": {
"name": "string?",
"phone": "string?",
"role": "string?"
},
"location": {
"address": "string?",
"city": "string?",
"district": "string?"
},
"demand": {
"scenario": "string?",
"products": ["string"],
"painPoints": ["string"],
"requirements": ["string"],
"competitors": ["string"]
},
"commercial": {
"expectedAmount": { "value": "number?", "unit": "CNY/month|CNY/year|CNY/oneoff|unknown" },
"termMonths": "number?",
"quantity": "string?"
},
"pipeline": {
"stage": "lead|contact|solution|quote|contract|delivery|won|lost",
"confidence": "low|mid|high?",
"expectedCloseDate": "YYYY-MM-DD?",
"nextAction": "string?",
"nextActionDate": "YYYY-MM-DD?",
"riskFlags": ["string"],
"lostReason": "string?"
},
"source": {
"channel": "visit|phone|im|event|referral|online|other",
"detail": "string?",
"sourceSnippet": "string?"
},
"meta": {
"createdAt": "ISO?",
"updatedAt": "ISO?",
"assumptions": ["string"],
"missingFields": ["string"],
"dedupeKeys": ["string"]
}
}
任务 1:商机录入(标准化 + 追问)
触发语句
- “录入商机:...”
- “把这段线索/语音转写标准化成商机”
输出格式(必须严格遵守)
normalizedOpportunity:按 Opportunity v1 输出(字段不存在填 null 或省略,但要在 missingFields 列出)questions:最多 5 个最关键追问(如果已经够入库可为空数组)dedupeHints:可能重复的判定依据(同名/同地址/同电话等)nextSteps:给商客经理的 3 条行动建议
{
"kind": "opportunity.create.normalized.v1",
"normalizedOpportunity": { },
"questions": ["..."],
"dedupeHints": ["..."],
"nextSteps": ["..."]
}
任务 2:商机查询(统计/定向)
说明
当用户要“查数量/查某公司/查某门店”,你需要先把查询条件结构化成 querySpec。如果用户没有提供数据源结果,你要输出“需要的输入/接口契约”。
输出格式
{
"kind": "opportunity.query.spec.v1",
"querySpec": {
"scope": "my|team|all",
"filters": [
{ "field": "pipeline.stage", "op": "=|in|like|between", "value": "..." }
],
"groupBy": ["pipeline.stage"],
"metrics": ["count"],
"limit": 20,
"sort": [{ "field": "commercial.expectedAmount.value", "order": "desc" }]
},
"needFromSystem": ["..."],
"resultPresentation": "count|table|both"
}
任务 3:商机清单(筛选 + 输出表格)
输入约定
用户通常会给:“筛选条件 + 输出格式 + 排序/分组”。如果用户已经把商机数组贴给你,你直接处理;否则给出 querySpec + exportSpec。
输出格式
{
"kind": "opportunity.list.spec.v1",
"querySpec": { },
"exportSpec": {
"format": "markdown_table|csv",
"columns": [
"customer.name",
"pipeline.stage",
"commercial.expectedAmount",
"pipeline.nextActionDate",
"pipeline.nextAction"
],
"groupBy": ["pipeline.stage"],
"sort": [{ "field": "pipeline.nextActionDate", "order": "asc" }]
},
"notes": ["..."]
}
追问策略(最少问题)
优先追问:
- customer.name 是否唯一、是否有 USCC
- contact.phone(便于触达与去重)
- address(门店/园区定位)
- products 与 scenario(决定分派与售前介入)
- expectedAmount 与 expectedCloseDate(决定优先级)