跟进关键词打标
灵感:能力工具箱 keyword-tags(自研词典,纯前端)。
对跟进笔记做本地包含匹配,命中词归到业务标签(报价、合同、回款、异议等),按命中数排序。无 NLP 服务依赖。
何时使用
- 跟进保存时自动建议标签
- 列表筛「提到合同的跟进」
硬约束
- 词典可配置:
{ tag, words[] };空文本返回[]。 - 匹配默认子串
includes(中文场景够用);输出tag / hits / score。 - 多标签可并存;按
score降序。 - 不调用云端分类 API;误杀靠改词典,不靠静默丢弃。
- 隐私:示例文本用占位,勿塞真实客户原话进模板。
推荐实现要点
export type TagLexicon = { tag: string; words: string[] }
export const DEFAULT_CRM_LEXICON: TagLexicon[] = [
{ tag: '报价', words: ['报价', '价格', '费用', '佣金'] },
{ tag: '合同', words: ['合同', '协议', '签约', '盖章'] },
{ tag: '回款', words: ['回款', '付款', '到账', '发票', '开票'] },
{ tag: '竞品', words: ['竞品', '同行', '另外一家'] },
{ tag: '异议', words: ['太贵', '再考虑', '暂时', '再看看'] },
{ tag: '意向强', words: ['尽快', '马上', '可以签', '没问题'] },
]
export function tagFollowupText(text: string, lexicon = DEFAULT_CRM_LEXICON) {
const t = String(text || '')
if (!t.trim()) return [] as Array<{ tag: string; hits: string[]; score: number }>
return lexicon
.map((item) => {
const hits = item.words.filter((w) => t.includes(w))
return { tag: item.tag, hits, score: hits.length }
})
.filter((x) => x.score > 0)
.sort((a, b) => b.score - a.score)
}
Agent 步骤
- 提供默认可扩展词典;行业词(如并购买卖)可追加。
- 接入跟进保存钩子;UI 展示可点选确认的标签芯片。
- 自测:含「合同」「太贵」的句子应打出对应标签。
附加
- README.md · reference.md · templates/usage.md