bulk-enrichment
Skill1 starsChanged 9 days agoMITView on GitHub
Credit-safe CSV and list enrichment with LeadMagic bulk jobs — balance, preview, confirm, submit, watch, export, and recover failed rows. Use when the user has a CSV/JSON/JSONL file, more than 5 rows to enrich, or wants a local-business list built.
In this repository9 other files it gives its agents.
- account-researchSkill
- contact-lookupSkill
- credit-guardSkill
- decision-makersSkill
- get-startedSkill
- hiring-intentSkill
- market-searchSkill
- outbound-recipesSkill
- sheetsSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 9
Use this skill when the user:
- Very specific: line 15
If they want to see and iterate on the results in a grid, use the sheets skill instead.
- Very specific: line 18
Free first: Call check_credit_balance, then preview_cost once the product and row count are known.
- Very specific: line 19
Use bulk, never per-row loops: Never loop single-contact tools (find_work_email, enrich_contact, …) across a file.
- Distinctive: line 21
Report actuals: Don't re-run unchanged rows.
- Distinctive: line 39
Call again with the same arguments plus the token, only after the user approves.
- Very specific: line 46
If you poll get_bulk_job_status directly instead, wait at least 45 seconds between calls.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Bulk enrichment
Trigger
Use this skill when the user:
- has a CSV/JSON/JSONL file,
- has more than 5 rows to enrich,
- asks to queue bulk enrichment, or
- wants a list of local businesses.
If they want to see and iterate on the results in a grid, use the sheets skill instead.
Spend rules
- Free first. Call
check_credit_balance, thenpreview_costonce the product and row count are known. State the projected spend. - Use bulk, never per-row loops. Never loop single-contact tools (
find_work_email,enrich_contact, …) across a file. - Confirm with the token. Bulk submits, restarts, and resumes answer first with
needs_confirmation, a summary, and aconfirmation_token. Nothing has run yet. Show the summary, and repeat the identical call with the token only after the user agrees. Never invent a token. - Report actuals. Don't re-run unchanged rows. Misses are usually free.
Submit
- A file attached in Claude →
process_attached_csvonly. The widget uploads and submits on its own, so do not callresolve_bulk_upload_mappingorsubmit_*after it. - Inline CSV, rows, or an HTTPS
file_url→submit_detected_bulk_job.- Common enrichments:
work_email_finder,email_validation,mobile_finder(only when the user asks for phones),job_change,company_firmographics. - For profile URL → work email, pick the profile-to-email option from the tool's
enrichmentlist. - For larger files, prefer
file_urlwithformat: "auto"over pasting CSV text into the call.
- Common enrichments:
Local businesses (find_local_leads)
find_local_leads builds a list of local businesses for business types across cities or US ZIP codes. Example: keywords: ["dentist"], locations: ["Austin, TX", "78704"].
Cost:
- Each keyword × location pair is one search at 200 credits, charged up front.
- A run can have at most 100 searches.
Steps:
- The first call charges nothing. It resolves the locations and returns the search grid, the cost, and a
confirmation_token. Show the user the grid and the cost. - Call again with the same arguments plus the token, only after the user approves.
- Results arrive as a bulk job. Watch and read it the same way as any other bulk job (below).
Watch progress
After submitting:
- Call
get_bulk_job_statusonce. - Then use
watch_bulk_job_progress(timeout_secondsup to 30) instead of blind polling. It returns the latest status and whether the watch timed out; repeat it to keep watching. - If you poll
get_bulk_job_statusdirectly instead, wait at least 45 seconds between calls.
For history and diagnostics, use list_bulk_jobs, get_bulk_job_events, and get_bulk_job_logs.
Results
- Read rows with
get_bulk_job_rows: up to 500 rows per page, paged withoffset/cursor. Addstatus: "failed"to see only failures. - Error reasons come from
get_bulk_job_errors. - Export with
export_bulk_job, which returns CSV up to 4 MB. For bigger jobs, pageget_bulk_job_rows.
Control
pause_bulk_jobstops processing. It needs no approval.resume_bulk_jobprocesses the remaining rows and charges them, so it needs confirmation. If a job paused because credits ran out, top up (billing), then resume.restart_bulk_jobre-queues rows and charges them again, so it needs confirmation.- It defaults to
mode: "failed_only"; completed results are kept. - Restart only after the failed rows' inputs have been fixed.
- It defaults to
Output
- Job id, status, and rows processed / failed
- Credits: estimate vs actual
- A summary of row successes and errors, with the top error reasons
- The next action (fix and restart failures, export, or move the results into a sheet)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

