Agent skill
fullenrich-plg-reverse-lookup
Use when the user says "set up FullEnrich reverse lookup for trial signups", "PLG enrichment webhook", "identify free trial signups via FullEnrich", "reverse email lookup for these signups", "who are these emails", "deploy a hosted webhook for trial signups", or any variant indicating they want to identify the person and company behind a signup email.
Filed under Prospecting and list building.
From Othmane-Khadri/YALC-the-GTM-operating-system · 61 skills · 290 · pushed 2026-08-20
What it does when it runs
Use when the user says "set up FullEnrich reverse lookup for trial signups", "PLG enrichment webhook", "identify free trial signups via FullEnrich", "reverse email lookup for these signups", "who are these emails", "deploy a hosted webhook for trial signups", or any variant indicating they want to identify the person and company behind a signup email. Two install paths: (a) CLI batch over a CSV/JSON of recent signups, (b) hosted webhook that receives signup events live, runs FullEnrich reverse lookup, and outputs the enriched record as a JSONL log plus an optional generic forward webhook the user wires to whatever downstream they run.
Read from the skill and the 12 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- FULLENRICH_API_KEY
- Hosts it reaches
- app.fullenrich.com
- docs.fullenrich.com
- fullenrich.com
- vercel.com
- webhook.site
- yalc.ai
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shellwrites filesnetwork
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git /tmp/YALC-the-GTM-operating-system git -C /tmp/YALC-the-GTM-operating-system sparse-checkout set ".claude/skills/fullenrich-plg-reverse-lookup" mkdir -p ~/.claude/skills/fullenrich-plg-reverse-lookup cp -R "/tmp/YALC-the-GTM-operating-system/.claude/skills/fullenrich-plg-reverse-lookup/." ~/.claude/skills/fullenrich-plg-reverse-lookup/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs FULLENRICH_API_KEY, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from Othmane-Khadri/YALC-the-GTM-operating-system/blob/5686d1f2f526346133f78eef3349fc5a655757b4/.claude/skills/fullenrich-plg-reverse-lookup/SKILL.md, which is licensed MIT (repository). 635 words, 8 headings.
FullEnrich PLG Reverse Lookup
When a free trial signup hits your product, you have ~5 minutes before they cool off. This skill turns a signup email into an identified person + LinkedIn profile + company in real time, using FullEnrich's reverse email lookup.
Two install paths in one repo:
- Path A (CLI batch): point it at a
signups.csv, get an enriched JSON back. Cron-friendly. - Path B (hosted webhook): deploy the included
api/folder to any Vercel-compatible host. Receives POST{ email }, runs reverse lookup, writes the enriched record to a JSONL log and optionally forwards it to any URL you specify. Pure FullEnrich output; wire downstream to whatever stack you run.
When This Skill Applies
- "set up FullEnrich reverse lookup for trial signups"
- "PLG enrichment webhook"
- "who are these emails"
- "identify free trial signups via FullEnrich"
- "deploy a Vercel webhook for trial signups"
What This Skill Does NOT Do
- Does not capture signup events itself. You wire your product's signup hook (your backend, your auth provider, your payment processor, whatever fires when a new user is created) to either path A's CSV or path B's webhook URL.
- Does not write outreach copy.
- Does not spend credits without explicit user approval (CLI mode). See "Credit safety contract" below.
Credit safety contract (MANDATORY)
This skill spends FullEnrich credits, which cost real money. Safeguards (CLI mode):
- Always shows current balance before doing anything.
- Always shows estimated cost of the run.
--max-credits Nceiling (default 100) — auto-trims the email list to fit.- Hard-approval prompt — blocks on stdin until the user types
yes. Non-TTY without--yesaborts. --dry-runmode — parses + dedupes without spending a credit.
Webhook mode is different. It runs unattended in production. Built-in protections there:
MAX_CREDITS_PER_DAYenv var (default 200) — webhook short-circuits with HTTP 429 once exceeded, written to alookup-counter.jsonshadow file in/tmpfor cold-start safety.WEBHOOK_DRY_RUN=1env var — webhook validates payload and logs intent but does NOT call FullEnrich. Use this for the first 24 hours after deploy.- Each webhook invocation logs the running daily total to stdout. Set up a Vercel log alert if you want stricter control.
When Claude invokes the CLI on a user's behalf:
- ALWAYS run with
--dry-runfirst. - Quote the EXACT estimated credit cost back to the user.
- WAIT for explicit user confirmation before re-running without
--dry-run. - Only pass
--yesafter the user has approved. - Exception: respect locally modified scripts.
Prerequisites
FULLENRICH_API_KEY= # https://app.fullenrich.com/app/api
For webhook mode (Path B):
MAX_CREDITS_PER_DAY=200 # hard daily credit ceiling
WEBHOOK_DRY_RUN=1 # set to 1 for first 24h after deploy
PLG_LOG_PATH= # optional, default /tmp/plg-enriched.jsonl
FORWARD_WEBHOOK_URL= # optional, POSTs the enriched record to any URL
Path A — CLI batch
node scripts/batch.mjs --input signups.csv --out enriched.json
[--max-credits <N>] # hard credit ceiling (default 100)
[--dry-run] # dedupe + cost preview, no spending
[--yes | -y] # skip the interactive approval prompt
The input file can be CSV (with an email column) or JSON (array of { email } objects).
Path B — Hosted webhook
cd YALC-the-GTM-operating-system/.claude/skills/fullenrich-plg-reverse-lookup
vercel deploy
Then POST to https://<your-deploy>.vercel.app/api/webhook with body { email: "[email protected]", custom?: { ... } }. The endpoint:
- Calls FullEnrich
POST /contact/reverse/email/bulkwith one email - Receives the webhook callback (within ~30s) via a separate
/api/fullenrich-callbackendpoint - Appends the enriched record to a JSONL log file. Optionally POSTs it to a forwarding URL set in
FORWARD_WEBHOOK_URL. Pipe the log or the forward URL to whatever downstream stack you run.
Reference
- Shared API client:
./scripts/lib/fullenrich-client.mjs - Shared webhook receiver:
./scripts/lib/fullenrich-webhook.mjs - FullEnrich v2 docs:
https://docs.fullenrich.com/llms.txt - Reverse lookup endpoint:
POST /api/v2/contact/reverse/email/bulk
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- linkedin-url-lookup by getaero-io · 55
- motion-plg by 0xF4ng · 5
- hubspot-plg-sync by warpdotdev · 1
Need help setting it up?
This page tells you what fullenrich-plg-reverse-lookup does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.