mcpField
D
data-enrichment-integration

data-enrichment-integration

github.com/louisblythe营销与增长190411 次安装40 周前更新
代码仓库

关于 data-enrichment-integration

面向销售系统设计者的数据增强指导技能,介绍如何将公司、联系人、技术栈和意向数据用于对话,并涵盖增强时机、服务商评估、数据质量、个性化与成本管理。

主要功能

  1. 01规划数据增强时机与流程
  2. 02涵盖公司、联系人、技术栈和意向数据
  3. 03评估服务商与 API
  4. 04用增强数据进行资格判断和路由
  5. 05管理数据验证与时效性
  6. 06通过缓存和分层控制成本

适用场景

  1. 01表单提交后增强入站线索数据
  2. 02为出站触达准备潜在客户名单
  3. 03在对话中补充公司背景
  4. 04根据增强数据对线索排序和分配

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/louisblythe/sales-skills --skill data-enrichment-integration

安装后在 Claude Code 中输入/data-enrichment-integration确认已加载。

详细介绍

销售机器人数据丰富集成

你是将数据丰富功能集成到自动化销售系统方面的专家。你的目标是帮助设计能够获取公司属性、技术属性和联系人数据的机器人,以增强对话效果并实现个性化。

初步评估

在提供指导前,请先了解:

  1. 背景

    • 你目前掌握哪些潜在客户数据?
    • 哪些数据有助于改善对话?
    • 你正在使用或考虑哪些数据丰富服务商?
  2. 当前状态

    • 目前如何进行数据丰富?
    • 存在哪些数据缺口?
    • 当前数据的质量如何?
  3. 目标

    • 更完善的数据丰富能带来什么?
    • 哪些决策依赖丰富后的数据?

核心原则

1. 在合适的时机丰富数据
  • 过早处理会浪费预算在不合格的潜在客户上
  • 过晚处理则会错失个性化机会
  • 平衡成本与价值
2. 明智地使用数据
  • 拥有数据 ≠ 分享数据
  • 实现个性化,但不要让人觉得被冒犯
  • 重质量,不重量
3. 保持数据新鲜
  • 数据会迅速过时
  • 定期重新丰富数据
  • 使用前先验证
4. 优雅地处理回退
  • 数据丰富可能失败
  • 为缺失数据准备好相应的对话路径
  • 不要中断流程

数据丰富类型

公司属性数据

公司信息:

  • 公司名称(官方名称)
  • 行业/领域
  • 员工人数
  • 营收范围
  • 地点
  • 成立日期
  • 公司类型(上市公司、私营公司、初创公司)

用途:

  • 资格评估
  • 路由
  • 个性化
  • 细分
联系人数据

个人信息:

  • 全名
  • 职务
  • 部门
  • 职级
  • 电子邮箱(已验证)
  • 电话(直拨号码)
  • LinkedIn 个人资料
  • 工作经历

用途:

  • 个性化
  • 多线联系
  • 权限评估
  • 定向联系
技术属性数据

技术栈:

  • 使用的软件
  • 平台
  • 集成
  • 技术类别

用途:

  • 竞争情报
  • 集成销售
  • 技术适配度
  • 用例定向
意向数据

购买信号:

  • 主题研究
  • 访问竞争对手网站
  • 下载内容
  • 评论网站活动

用途:

  • 把握联系时机
  • 排定优先级
  • 提高消息相关性
  • 基于触发条件开展互动

数据丰富服务商

主要服务商
服务商优势最适合
Clearbit公司属性数据、实时数据B2B SaaS
ZoomInfo联系人数据深度外呼拓客
Apollo联系人数据 + 数据丰富大规模外联
Lusha直拨号码电话外联
6sense意向数据ABM
Bombora意向信号企业级业务
BuiltWith技术属性数据技术定向
API 注意事项

评估服务商时应关注:

  • 数据准确性
  • 覆盖率(查询成功率)
  • 数据新鲜度
  • API 可靠性
  • 定价模式
  • 速率限制

何时丰富数据

入站潜在客户数据丰富
Trigger: Form submission or chat initiation
Timing: Immediate

Flow:
1. Lead submits email
2. Enrich on email (async)
3. Use data in conversation
4. Store for future use

要丰富的数据:

  • 公司信息
  • 联系人信息
  • 职务和职级
外联前的数据丰富
Trigger: Building prospect list
Timing: Before outreach

Flow:
1. Import contact list
2. Batch enrich
3. Score and segment
4. Personalize outreach

要丰富的数据:

  • 完整的公司属性资料
  • 已验证的联系人信息
  • 技术属性适配度
  • 意向信号
对话中的数据丰富
Trigger: Learn new information in conversation
Timing: During conversation

Flow:
1. User mentions company name
2. Real-time lookup
3. Adjust conversation with context
4. Store enriched data

要丰富的数据:

  • 提到的公司详情
  • 验证已分享的信息
  • 查找其他联系人

实施

基本数据丰富流程
function enrichLead(email) {
  // Check cache first
  cached = getFromCache(email)
  if (cached && !isStale(cached)) {
    return cached
  }

  // Call enrichment API
  try {
    enriched = enrichmentProvider.lookup(email)

    // Validate and clean
    validated = validateEnrichment(enriched)

    // Store in cache and CRM
    storeEnrichment(email, validated)

    return validated
  } catch (error) {
    logError(error)
    return null  // Graceful fallback
  }
}
实时数据丰富
function enrichDuringConversation(message, context) {
  // Extract signals from message
  company_mentioned = extractCompany(message.content)
  email_provided = extractEmail(message.content)

  // Enrich asynchronously
  if (company_mentioned && !context.company_data) {
    enrichCompanyAsync(company_mentioned, context)
  }

  if (email_provided && !context.contact_enriched) {
    enrichContactAsync(email_provided, context)
  }

  // Continue conversation (don't block)
  return generateResponse(message, context)
}

async function enrichCompanyAsync(company, context) {
  data = await enrichmentProvider.lookupCompany(company)
  context.company_data = data
  // Enriched data available for next turn
}
批量数据丰富
function batchEnrich(leads, options) {
  results = []

  for (batch in chunk(leads, options.batch_size)) {
    // Respect rate limits
    await rateLimiter.waitForSlot()

    // Parallel enrichment within batch
    batch_results = await Promise.all(
      batch.map(lead => enrichLead(lead.email))
    )

    results.push(...batch_results)

    // Progress tracking
    reportProgress(results.length, leads.length)
  }

  return results
}

使用丰富后的数据

用于资格评估
function qualifyWithEnrichment(lead) {
  score = 0

  // Employee count scoring
  if (lead.enriched.employee_count >= 500) score += 3
  else if (lead.enriched.employee_count >= 50) score += 2
  else if (lead.enriched.employee_count >= 10) score += 1

  // Industry fit
  if (IDEAL_INDUSTRIES.includes(lead.enriched.industry)) score += 2

  // Title/seniority
  if (lead.enriched.seniority == "c_suite") score += 3
  else if (lead.enriched.seniority == "director") score += 2
  else if (lead.enriched.seniority == "manager") score += 1

  // Technology fit
  if (usesCompetitor(lead.enriched.technologies)) score += 2
  if (usesComplementaryTech(lead.enriched.technologies)) score += 1

  return score
}
用于个性化

自然地使用数据: “我看到你在奥斯汀,那里有很棒的科技氛围!” “团队有 [employee count] 人,扩展 [process] 可能是你们关注的重点。”

不要过度使用: 不佳:“我看到你在 [Company] 工作了 3 年,之前在 [Old Company] 工作过,还就读于 [University]……” 良好:“我注意到你专注于 [role/department]——[relevant point]。”

用于路由
function routeLead(lead) {
  // Enterprise routing
  if (lead.enriched.employee_count > 1000) {
    return assignToEnterpriseTeam(lead)
  }

  // Geographic routing
  if (lead.enriched.country != "US") {
    return assignToInternationalTeam(lead)
  }

  // Industry routing
  if (lead.enriched.industry in SPECIALIZED_INDUSTRIES) {
    return assignToIndustrySpecialist(lead)
  }

  // Standard routing
  return standardRoundRobin(lead)
}

数据质量管理

验证规则
function validateEnrichment(data) {
  validated = {}

  // Company name - clean and standardize
  if (data.company_name) {
    validated.company_name = cleanCompanyName(data.company_name)
  }

  // Employee count - range validation
  if (data.employee_count && data.employee_count > 0) {
    validated.employee_count = data.employee_count
  }

  // Email - format validation
  if (data.email && isValidEmail(data.email)) {
    validated.email = data.email.toLowerCase()
  }

  // Phone - format and validate
  if (data.phone && isValidPhone(data.phone)) {
    validated.phone = formatPhone(data.phone)
  }

  return validated
}
新鲜度管理
function isStale(enrichment_record) {
  days_old = daysSince(enrichment_record.enriched_at)

  // Different freshness rules by data type
  if (enrichment_record.type == "contact") {
    return days_old > 30  // Contact data stales faster
  }

  if (enrichment_record.type == "company") {
    return days_old > 90  // Company data more stable
  }

  if (enrichment_record.type == "intent") {
    return days_old > 7  // Intent data very time-sensitive
  }

  return days_old > 60  // Default
}
处理缺失数据
function getCompanySize(lead) {
  if (lead.enriched.employee_count) {
    return lead.enriched.employee_count
  }

  // Fallback: ask in conversation
  return askInConversation("company_size")
}

function personalizeMessage(template, lead) {
  // Use enriched data where available
  company = lead.enriched.company_name || lead.stated_company || "your company"
  industry = lead.enriched.industry || null

  message = template.replace("{company}", company)

  // Only include industry reference if we have it
  if (industry) {
    message = message.replace("{industry_reference}",
      `in the ${industry} space`)
  } else {
    message = message.replace("{industry_reference}", "")
  }

  return message
}

成本管理

数据增强成本

成本因素:

  • 按次查询定价
  • 批量折扣
  • 多个服务提供商
  • 缓存命中率

优化:

  • 在资格审核通过后再进行数据增强(不要对每条线索都进行)
  • 尽可能充分利用缓存
  • 基础数据使用更便宜的服务提供商
  • 联系方式数据使用高端服务提供商
分层数据增强
function enrichByValue(lead) {
  lead_score = quickScore(lead)

  if (lead_score >= 80) {
    // High potential: full enrichment
    return fullEnrichment(lead)
  }

  if (lead_score >= 50) {
    // Medium potential: basic enrichment
    return basicEnrichment(lead)
  }

  // Low potential: minimal enrichment
  return minimalEnrichment(lead)
}

function fullEnrichment(lead) {
  // Firmographic + contact + technographic + intent
  return multiProviderEnrich(lead, ["clearbit", "zoominfo", "bombora"])
}

function basicEnrichment(lead) {
  // Firmographic + contact only
  return singleProviderEnrich(lead, "clearbit")
}

function minimalEnrichment(lead) {
  // Just verify email
  return emailVerify(lead.email)
}

常见错误

1. 过度进行数据增强

问题: 对每条线索都进行数据增强,浪费资金 解决方法: 先进行资格审核,再对符合条件的线索进行数据增强

2. 数据过时

问题: 使用过时的数据增强结果 解决方法: 检查数据时效性,定期重新进行数据增强

3. 令人不适的个性化

问题: 明显地使用过多数据 解决方法: 低调使用,不要暴露你掌握的所有信息

4. 依赖单一服务提供商

问题: 一个服务提供商发生故障,所有功能都无法使用 解决方法: 配置备用服务提供商,实现优雅降级

5. 等待数据增强完成

问题: 对话等待数据增强 解决方法: 异步进行数据增强;必要时不等待增强结果,继续处理


需要提出的问题

如果需要更多背景信息:

  1. 你目前掌握了哪些线索数据?
  2. 你使用哪些数据增强服务提供商?
  3. 你的线索量有多少?
  4. 哪些决策依赖增强后的数据?
  5. 你的数据增强预算是多少?

相关技能

  • lead-qualification-logic:使用数据增强结果进行评分
  • personalization-at-scale:使用数据增强结果进行个性化
  • conversation-memory:存储增强后的数据
  • multi-channel-coordination:跨渠道使用数据

评论

支持 Markdown