Clay Migration Deep DiveSAFE
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
Overview
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
4f83675ca38aOBSERVED · 2026-10-08Install
Commands as the repository documents them. They are shown, not run.
npm install @clay/sdk
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: clay-migration-deep-dive description: 'Migrate to Clay from other enrichment tools or consolidate multiple data sources into Clay. Use when migrating from ZoomInfo, Apollo, Clearbit, or custom enrichment scripts to Clay, or consolidating fragmented enrichment workflows. Trigger with phrases like "migrate to clay", "clay migration", "switch to clay", "replace zoominfo with clay", "consolidate enrichment tools". ' allowed-tools: Read, Write, Edit, Bash(curl:*), Bash(npm:*), Bash(node:*) version: 1.14.0 license: MIT author: Jeremy Longshore <[email protected]> tags: - saas - clay - migration compatibility: Designed for Claude Code --- # Clay Migration Deep Dive ## Overview Comprehensive guide for migrating from standalone enrichment tools (ZoomInfo, Apollo, Clearbit, Lusha) to Clay, or consolidating multiple tools into a single Clay-based pipeline. Clay replaces the need for individual provider subscriptions by aggregating 150+ providers into waterfall enrichment workflows. ## Prerequisites - Current enrichment tool subscription(s) with data export capability - Clay account on Growth or Enterprise plan - Understanding of current enrichment volume and costs - CRM with existing enriched data ## Migration Types | Migration | Complexity | Duration | Risk | |-----------|-----------|----------|------| | Single provider -> Clay | Low | 1-2 weeks | Low | | Multiple providers -> Clay | Medium | 2-4 weeks | Medium | | Custom scripts -> Clay | Medium | 2-4 weeks | Medium | | Full GTM stack migration | High | 1-2 months | High | ## Instructions ### Step 1: Audit Current Enrichment Stack (Week 1) ```typescript // migration/audit.ts — document your current enrichment setup interface EnrichmentAudit { provider: string; monthlyVolume: number; monthlyCoost: number; dataFields: string[]; hitRate: number; // % of lookups that return data integrationMethod: string; // API, CSV, Zapier, native CRM canExportHistory: boolean; } const currentStack: EnrichmentAudit[] = [ { provider: 'ZoomInfo', monthlyVolume: 5000, monthlyCoost: 15000, // ZoomInfo is expensive dataFields: ['email', 'phone', 'title', 'company', 'revenue'], hitRate: 75, integrationMethod: 'API + Salesforce native', canExportHistory: true, }, { provider: 'Apollo.io', monthlyVolume: 3000, monthlyCoost: 400, dataFields: ['email', 'title', 'company', 'linkedin'], hitRate: 65, integrationMethod: 'API', canExportHistory: true, }, { provider: 'Custom Python scripts', monthlyVolume: 1000, monthlyCoost: 0, // Just developer time dataFields: ['email', 'company_data'], hitRate: 40, integrationMethod: 'Cron job + DB', canExportHistory: true, }, ]; function generateMigrationReport(stack: EnrichmentAudit[]): void { const totalCost = stack.reduce((s, p) => s + p.monthlyCoost, 0); const totalVolume = stack.reduce((s, p) => s + p.monthlyVolume, 0); console.log(`Current stack: ${stack.length} providers`); console.log(`Total monthly cost: $${totalCost}`); console.log(`Total monthly volume: ${totalVolume} lookups`); console.log(`Average hit rate: ${(stack.reduce((s, p) => s + p.hitRate, 0) / stack.length).toFixed(0)}%`); console.log(`\nClay equivalent (Growth plan): $495/mo + provider API keys`); } ``` ### Step 2: Map Fields to Clay Columns (Week 1) ```yaml # migration/field-mapping.yaml field_mapping: # Your current field -> Clay enrichment column email: "Work Email (Waterfall: Apollo > Hunter)" phone: "Phone Number (Apollo)" job_title: "Job Title (Apollo/PDL)" company_name: "Company Name (Clearbit)" company_revenue: "Revenue (Clearbit)" employee_count: "Employee Count (Clearbit)" industry: "Industry (Clearbit)" tech_stack: "Technologies (BuiltWith via Claygent)" linkedin: "LinkedIn URL (Apollo)" # Fields that don't have direct Clay equivalents: intent_signals: "Use Clay's Web Intent feature (Growth plan)" custom_research: "Claygent AI research column" ``` ### Step 3: Parallel Run (Week 2-3) Run Clay alongside your existing tools to validate data quality: ```typescript // migration/parallel-run.ts interface ComparisonResult { field: string; oldValue: string | null; clayValue: string | null; match: boolean; } async function compareEnrichment( email: string, oldData: Record<string, unknown>, clayData: Record<string, unknown>, ): Promise<ComparisonResult[]> { const fieldsToCompare = ['company_name', 'job_title', 'employee_count', 'industry']; return fieldsToCompare.map(field => ({ field, oldValue: (oldData[field] as string) || null, clayValue: (clayData[field] as string) || null, match: String(oldData[field]).toLowerCase() === String(clayData[field]).toLowerCase(), })); } // Run on a sample of 500 contacts from your CRM // Compare Clay's enrichment with your current provider's data // Target: Clay should match or exceed current hit rates ``` ### Step 4: Configure Clay Table to Replace Current Stack (Week 3) ```yaml # Clay table configuration to replace multi-provider stack replacement_table: name: "Outbound Leads (Migrated)" sources: - webhook (replaces API calls to ZoomInfo/Apollo) - CRM import (replaces native CRM enrichment) - CSV upload (replaces manual processes) enrichment_columns: 1_company_lookup: provider: clearbit replaces: "ZoomInfo company data" own_api_key: true # 0 Clay credits 2_email_waterfall: providers: [apollo, hunter] replaces: "ZoomInfo email + Apollo email" own_api_keys: true 3_person_enrichment: provider: apollo replaces: "Apollo person data" own_api_key: true 4_ai_research: type: claygent replaces: "Custom Python research scripts" prompt: "Research {{Company Name}} for recent news and tech stack" 5_icp_scoring: type: formula replaces: "Custom scoring in Python/SQL" ```
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
4f83675ca38afull audit observations/trust-audit/skill/jeremylongshore__clay-migration-deep-dive.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 4f83675ca38a | SAFE | B | 89 | first audit |
Questions
What does the Clay Migration Deep Dive skill do?
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
Is Clay Migration Deep Dive safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Clay Migration Deep Dive access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does Clay Migration Deep Dive work with?
Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (4f83675ca38a), read on 2026-10-08. The repository is watched, and a new audit runs when it changes — this is the first audit.