From juicebox-pack
Execute Juicebox enrichment and outreach workflow. Trigger: "juicebox enrich", "candidate enrichment", "talent pool".
How this skill is triggered — by the user, by Claude, or both
Slash command
/juicebox-pack:juicebox-core-workflow-bThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Build custom queries, apply multi-dimensional filters, and run cross-dataset analysis
Build custom queries, apply multi-dimensional filters, and run cross-dataset analysis
on your Juicebox people-intelligence data. Use this workflow when you need to go beyond
standard search — comparing candidate pools across roles, analyzing skill density by
geography, or identifying talent trends over time. This is the secondary workflow;
for basic search and enrichment, see juicebox-core-workflow-a.
const query = await client.analysis.query({
dataset: 'candidates',
filters: [
{ field: 'skills', operator: 'contains_any', value: ['TypeScript', 'Rust', 'Go'] },
{ field: 'experience_years', operator: 'gte', value: 5 },
{ field: 'location.country', operator: 'eq', value: 'US' },
],
sort: { field: 'relevance_score', order: 'desc' },
limit: 100,
});
console.log(`Found ${query.total} candidates matching filters`);
query.results.forEach(c =>
console.log(` ${c.name} — ${c.title} (${c.relevance_score}/100)`)
);
const comparison = await client.analysis.compare({
datasets: ['candidates_q1_2026', 'candidates_q4_2025'],
group_by: 'primary_skill',
metrics: ['count', 'avg_experience', 'avg_salary_estimate'],
});
comparison.groups.forEach(g =>
console.log(`${g.skill}: Q1=${g.datasets[0].count} vs Q4=${g.datasets[1].count} (${g.delta > 0 ? '+' : ''}${g.delta}%)`)
);
const density = await client.analysis.aggregate({
dataset: 'candidates',
group_by: 'location.metro_area',
metric: 'skill_density',
skill_filter: ['ML Engineering', 'Data Science'],
top_n: 10,
});
density.regions.forEach(r =>
console.log(`${r.metro}: ${r.candidate_count} candidates, density=${r.density_score}`)
);
const exportJob = await client.analysis.export({
query_id: query.id,
format: 'csv',
fields: ['name', 'email', 'primary_skill', 'experience_years', 'location'],
});
console.log(`Export ready: ${exportJob.download_url} (${exportJob.row_count} rows)`);
| Issue | Cause | Fix |
|---|---|---|
400 Invalid filter | Unsupported operator for field type | Check field schema with client.schema.fields() |
404 Dataset not found | Stale dataset ID or typo | List datasets with client.datasets.list() |
408 Query timeout | Too many filters on large dataset | Add limit or narrow date range |
429 Rate limited | Exceeded analysis quota | Implement backoff; check plan limits |
| Partial comparison data | One dataset has sparse coverage | Expected — use include_nulls: true for completeness |
A successful workflow produces filtered candidate lists with relevance scores, cross-dataset comparison tables showing talent market shifts, and regional skill-density rankings. Results can be exported as CSV for downstream reporting.
See juicebox-sdk-patterns for authentication and query builder helpers.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub flight505/skill-forge --plugin juicebox-pack