jeremylongshore/claude-code-plugins-plus-skills
juicebox-pack
plugins/saas-packs/juicebox-pack/skills/juicebox-migration-deep-dive/SKILL.md
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/juicebox-pack/skills/juicebox-migration-deep-dive/SKILL.md -a claude-code --skill juicebox-migration-deep-diveInstallation paths:
.claude/skills/juicebox-migration-deep-dive/# Juicebox Migration Deep Dive
## Overview
Advanced strategies for migrating data to Juicebox from other recruiting and people search platforms.
## Prerequisites
- Source data access and export capabilities
- Juicebox Enterprise plan (for bulk imports)
- Data mapping documentation
- Testing environment
## Migration Sources
| Source | Complexity | Common Issues |
|--------|------------|---------------|
| LinkedIn Recruiter | Medium | Rate limits, field mapping |
| Greenhouse | Low | Well-documented API |
| Lever | Low | Standard export format |
| Custom ATS | High | Custom transformation needed |
| CSV/Excel | Low | Data quality issues |
## Instructions
### Step 1: Data Assessment
```typescript
// scripts/assess-source-data.ts
interface DataAssessment {
totalRecords: number;
uniqueProfiles: number;
duplicates: number;
fieldCoverage: Record<string, number>;
dataQualityScore: number;
estimatedMigrationTime: string;
}
export async function assessSourceData(
source: string,
sampleSize: number = 1000
): Promise<DataAssessment> {
const sample = await loadSampleData(source, sampleSize);
const assessment: DataAssessment = {
totalRecords: sample.total,
uniqueProfiles: new Set(sample.records.map(r => r.email)).size,
duplicates: sample.total - new Set(sample.records.map(r => r.email)).size,
fieldCoverage: calculateFieldCoverage(sample.records),
dataQualityScore: calculateQualityScore(sample.records),
estimatedMigrationTime: estimateMigrationTime(sample.total)
};
return assessment;
}
function calculateFieldCoverage(records: any[]): Record<string, number> {
const fields = ['name', 'email', 'title', 'company', 'location', 'phone'];
const coverage: Record<string, number> = {};
for (const field of fields) {
const count = records.filter(r => r[field] && r[field].trim()).length;
coverage[field] = (count / records.length) * 100;
}
return coverage;
}
```
### Step 2: Schema Mapping
```typescript
// lib/migrati