{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ironclaw-lead-enrichment",
    "name": "Ironclaw Lead Enrichment",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/aspenas/ironclaw-lead-enrichment",
    "canonicalUrl": "https://clawhub.ai/aspenas/ironclaw-lead-enrichment",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ironclaw-lead-enrichment",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ironclaw-lead-enrichment",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ironclaw-lead-enrichment"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ironclaw-lead-enrichment",
    "agentPageUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Lead Enrichment — Multi-Source Data Completion",
        "body": "Enrich CRM contact records by filling missing fields from multiple sources. Works with DuckDB workspace entries or standalone JSON data."
      },
      {
        "title": "Sources (Priority Order)",
        "body": "LinkedIn (via linkedin-scraper skill) — name, title, company, education, connections\nWeb Search (via web_search tool) — email patterns, company info, social profiles\nCompany Website (via web_fetch) — team pages, about pages, contact info\nEmail Pattern Discovery — derive email from name + company domain"
      },
      {
        "title": "Step 1: Assess What's Missing",
        "body": "-- Query the target object to find gaps\nSELECT \"Name\", \"Email\", \"LinkedIn URL\", \"Company\", \"Title\", \"Location\"\nFROM v_leads\nWHERE \"Email\" IS NULL OR \"LinkedIn URL\" IS NULL OR \"Title\" IS NULL;"
      },
      {
        "title": "Step 2: Prioritize by Value",
        "body": "High priority: Missing email (needed for outreach)\nMedium priority: Missing title/company (needed for personalization)\nLow priority: Missing education, connections count, about text"
      },
      {
        "title": "Step 3: Enrich Per Record",
        "body": "For each record with gaps:\n\nIf LinkedIn URL is known but other fields missing:\n\nUse linkedin-scraper to visit profile\nExtract: title, company, location, education, about\nUpdate DuckDB record\n\nIf LinkedIn URL is missing:\n\nSearch LinkedIn: {name} {company} or {name} {title}\nVerify match (name + company alignment)\nStore LinkedIn URL, then scrape full profile\n\nIf Email is missing:\n\nFind company domain (web search or LinkedIn company page)\nTry common patterns:\n\nfirst@domain.com\nfirst.last@domain.com\nflast@domain.com\nfirstl@domain.com\n\n\nOptionally verify with web search: \"email\" \"{name}\" site:{domain}\nCheck company team/about page for email format clues\n\nIf Company info is missing:\n\nWeb search: \"{name}\" \"{title}\" or check LinkedIn\nFetch company website for: industry, size, description, funding"
      },
      {
        "title": "Step 4: Update Records",
        "body": "-- Update via DuckDB pivot view\nUPDATE v_leads SET\n  \"Email\" = ?,\n  \"LinkedIn URL\" = ?,\n  \"Title\" = ?,\n  \"Company\" = ?,\n  \"Location\" = ?\nWHERE id = ?;"
      },
      {
        "title": "Bulk Enrichment Mode",
        "body": "For enriching many records at once:\n\nQuery all incomplete records from DuckDB\nGroup by company (scrape company once, apply to all employees)\nProcess in batches of 10-20 records\nReport progress after each batch:\nEnrichment Progress: 45/120 leads (38%)\n├── Emails found: 32/45 (71%)\n├── LinkedIn matched: 41/45 (91%)\n├── Titles updated: 38/45 (84%)\n└── ETA: ~15 min remaining\n\n\nSave checkpoint after each batch (in case of interruption)"
      },
      {
        "title": "Enrichment Quality Rules",
        "body": "Confidence scoring: Mark each enriched field with confidence (high/medium/low)\n\nHigh: Direct match from LinkedIn profile or company website\nMedium: Inferred from patterns (email format) or partial match\nLow: Best guess from web search results\n\n\nNever overwrite existing data unless explicitly asked\nFlag conflicts: If enriched data contradicts existing data, flag for review\nDedup check: Before inserting LinkedIn URL, check it's not already assigned to another contact"
      },
      {
        "title": "Email Pattern Discovery",
        "body": "Common corporate email formats by frequency:\n\nfirst.last@domain.com (most common, ~45%)\nfirst@domain.com (~20%)\nflast@domain.com (~15%)\nfirstl@domain.com (~10%)\nfirst_last@domain.com (~5%)\nlast.first@domain.com (~3%)\nfirst.l@domain.com (~2%)\n\nStrategy:\n\nIf you know one person's email at the company, derive the pattern\nSearch web for \"@{domain}\" email format\nCheck company team page source code for mailto: links\nUse the most common pattern as fallback"
      },
      {
        "title": "Output",
        "body": "After enrichment, provide a summary:\n\nEnrichment Complete: 120 leads processed\n├── Emails: 94 found (78%), 26 still missing\n├── LinkedIn: 108 matched (90%), 12 not found\n├── Titles: 115 updated (96%)\n├── Companies: 118 confirmed (98%)\n├── Locations: 89 found (74%)\n└── Avg confidence: High (82%), Medium (14%), Low (4%)\n\nTop gaps remaining:\n- 26 leads missing email (mostly small/stealth companies)\n- 12 leads missing LinkedIn (common names, ambiguous matches)"
      },
      {
        "title": "DuckDB Field Mapping",
        "body": "Standard field names for Ironclaw CRM objects:\n\nEnrichment DataDuckDB FieldTypeFull nameNametextEmail addressEmailemailLinkedIn URLLinkedIn URLurlJob titleTitletextCompany nameCompanytext / relationLocationLocationtextEducationEducationtextPhonePhonephoneCompany sizeCompany SizetextIndustryIndustrytextEnrichment dateEnriched AtdateConfidenceEnrichment Confidenceenum (high/medium/low)"
      }
    ],
    "body": "Lead Enrichment — Multi-Source Data Completion\n\nEnrich CRM contact records by filling missing fields from multiple sources. Works with DuckDB workspace entries or standalone JSON data.\n\nSources (Priority Order)\nLinkedIn (via linkedin-scraper skill) — name, title, company, education, connections\nWeb Search (via web_search tool) — email patterns, company info, social profiles\nCompany Website (via web_fetch) — team pages, about pages, contact info\nEmail Pattern Discovery — derive email from name + company domain\nEnrichment Pipeline\nStep 1: Assess What's Missing\n-- Query the target object to find gaps\nSELECT \"Name\", \"Email\", \"LinkedIn URL\", \"Company\", \"Title\", \"Location\"\nFROM v_leads\nWHERE \"Email\" IS NULL OR \"LinkedIn URL\" IS NULL OR \"Title\" IS NULL;\n\nStep 2: Prioritize by Value\nHigh priority: Missing email (needed for outreach)\nMedium priority: Missing title/company (needed for personalization)\nLow priority: Missing education, connections count, about text\nStep 3: Enrich Per Record\n\nFor each record with gaps:\n\nIf LinkedIn URL is known but other fields missing:\nUse linkedin-scraper to visit profile\nExtract: title, company, location, education, about\nUpdate DuckDB record\nIf LinkedIn URL is missing:\nSearch LinkedIn: {name} {company} or {name} {title}\nVerify match (name + company alignment)\nStore LinkedIn URL, then scrape full profile\nIf Email is missing:\nFind company domain (web search or LinkedIn company page)\nTry common patterns:\nfirst@domain.com\nfirst.last@domain.com\nflast@domain.com\nfirstl@domain.com\nOptionally verify with web search: \"email\" \"{name}\" site:{domain}\nCheck company team/about page for email format clues\nIf Company info is missing:\nWeb search: \"{name}\" \"{title}\" or check LinkedIn\nFetch company website for: industry, size, description, funding\nStep 4: Update Records\n-- Update via DuckDB pivot view\nUPDATE v_leads SET\n  \"Email\" = ?,\n  \"LinkedIn URL\" = ?,\n  \"Title\" = ?,\n  \"Company\" = ?,\n  \"Location\" = ?\nWHERE id = ?;\n\nBulk Enrichment Mode\n\nFor enriching many records at once:\n\nQuery all incomplete records from DuckDB\nGroup by company (scrape company once, apply to all employees)\nProcess in batches of 10-20 records\nReport progress after each batch:\nEnrichment Progress: 45/120 leads (38%)\n├── Emails found: 32/45 (71%)\n├── LinkedIn matched: 41/45 (91%)\n├── Titles updated: 38/45 (84%)\n└── ETA: ~15 min remaining\n\nSave checkpoint after each batch (in case of interruption)\nEnrichment Quality Rules\nConfidence scoring: Mark each enriched field with confidence (high/medium/low)\nHigh: Direct match from LinkedIn profile or company website\nMedium: Inferred from patterns (email format) or partial match\nLow: Best guess from web search results\nNever overwrite existing data unless explicitly asked\nFlag conflicts: If enriched data contradicts existing data, flag for review\nDedup check: Before inserting LinkedIn URL, check it's not already assigned to another contact\nEmail Pattern Discovery\n\nCommon corporate email formats by frequency:\n\nfirst.last@domain.com (most common, ~45%)\nfirst@domain.com (~20%)\nflast@domain.com (~15%)\nfirstl@domain.com (~10%)\nfirst_last@domain.com (~5%)\nlast.first@domain.com (~3%)\nfirst.l@domain.com (~2%)\n\nStrategy:\n\nIf you know one person's email at the company, derive the pattern\nSearch web for \"@{domain}\" email format\nCheck company team page source code for mailto: links\nUse the most common pattern as fallback\nOutput\n\nAfter enrichment, provide a summary:\n\nEnrichment Complete: 120 leads processed\n├── Emails: 94 found (78%), 26 still missing\n├── LinkedIn: 108 matched (90%), 12 not found\n├── Titles: 115 updated (96%)\n├── Companies: 118 confirmed (98%)\n├── Locations: 89 found (74%)\n└── Avg confidence: High (82%), Medium (14%), Low (4%)\n\nTop gaps remaining:\n- 26 leads missing email (mostly small/stealth companies)\n- 12 leads missing LinkedIn (common names, ambiguous matches)\n\nDuckDB Field Mapping\n\nStandard field names for Ironclaw CRM objects:\n\nEnrichment Data\tDuckDB Field\tType\nFull name\tName\ttext\nEmail address\tEmail\temail\nLinkedIn URL\tLinkedIn URL\turl\nJob title\tTitle\ttext\nCompany name\tCompany\ttext / relation\nLocation\tLocation\ttext\nEducation\tEducation\ttext\nPhone\tPhone\tphone\nCompany size\tCompany Size\ttext\nIndustry\tIndustry\ttext\nEnrichment date\tEnriched At\tdate\nConfidence\tEnrichment Confidence\tenum (high/medium/low)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/aspenas/ironclaw-lead-enrichment",
    "publisherUrl": "https://clawhub.ai/aspenas/ironclaw-lead-enrichment",
    "owner": "aspenas",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment",
    "downloadUrl": "https://openagent3.xyz/downloads/ironclaw-lead-enrichment",
    "agentUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ironclaw-lead-enrichment/agent.md"
  }
}