{"id":5322,"plugin_id":"plugin_asdk_app_69e5f69b54d8819185e1638e73c15e3b","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:44:06.886Z","digest":"6d289055bc3be9e2f6d075a53009049026f506e7f79ae77215f25e1a8c41f60a","against":null,"payload":{"name":"prospect","description":"Build a targeted list of contacts or companies from Lusha and return verified phone numbers alongside emails. Use when the user says \"find me [title] at [company type]\", \"build a list of [ICP description]\", \"prospect [criteria]\", \"who should I be calling at [industry]\", or any request to generate a lead list from an ICP or persona description.","included_files":[{"relative_path":"references/filter-guide.md","size_in_bytes":2395}],"skill_md_contents":"---\nname: prospect\ndescription: >\n  Build a targeted list of contacts or companies from Lusha and return verified phone numbers\n  alongside emails. Use when the user says \"find me [title] at [company type]\",\n  \"build a list of [ICP description]\", \"prospect [criteria]\", \"who should I be calling at [industry]\",\n  or any request to generate a lead list from an ICP or persona description.\n---\n\n# Prospect\n\nGo from an ICP description to a ranked, phone-enriched lead list. Filters are resolved before search — never guess filter values.\n\n## Step 1 — Parse the ICP\n\nExtract structured filters from the user's natural language description. Some filters take free-form text directly; others must be resolved to canonical values first.\n\n**Contact filters (`prospecting_contact_search`):**\n- Job titles → pass directly as `jobTitles` (free-form strings, e.g. \"VP of Sales\"). No resolution call needed.\n- Department / seniority → resolve via `prospecting_contact_filters` (type: `departments`, `seniority`). Use these for broad role targeting when a specific title isn't given.\n- Country → resolve via `prospecting_contact_filters` (type: `all_countries`); Location → type: `locations` (requires `locationSearchText`).\n\n**Company filters (`prospecting_company_search`):**\n- Industry → resolve via `prospecting_company_filters` (type: `industries_labels`)\n- Size → resolve via `prospecting_company_filters` (type: `sizes`)\n- Revenue → resolve via `prospecting_company_filters` (type: `revenues`)\n- Location → resolve via `prospecting_company_filters` (type: `locations`, requires `q`)\n- Tech stack → resolve via `prospecting_company_filters` (type: `technologies`, requires `q`)\n- Buying intent → resolve via `prospecting_company_filters` (type: `intent_topics`)\n\nResolve every non-title filter to canonical values before searching — passing raw natural-language strings as structured filter values is the most common cause of search failures. Each `prospecting_*_filters` call resolves one filter type; run the independent lookups in parallel.\n\nIf the ICP is too vague to resolve (no title, no industry, no company size), ask one clarifying question before proceeding. At minimum, a title or department and at least one company-level constraint are required.\n\nSee `references/filter-guide.md` for filter resolution details.\n\n## Step 2 — Search Companies\n\nUse `prospecting_company_search` with resolved company filters. Request up to 25 results. This scopes the contact search to qualified accounts.\n\nIf the user only specified contact-level criteria (no company filters), skip this step and go directly to Step 3.\n\n## Step 3 — Search Contacts\n\nUse `prospecting_contact_search` with resolved contact filters. Scope to the company results from Step 2 where applicable. Request up to 25 results.\n\n## Step 4 — Enrich Top Results\n\nSearch results are previews — they carry no phones/emails but include a `canReveal[]` list per contact showing which fields can be revealed and the existing-account quota required in `canReveal[].credits`.\n\nUse `prospecting_contact_enrich` with the contact `id`s to reveal phones and email. Pass `reveal` set from the results' `canReveal[].field` to control exactly which fields use the user's existing-account quota. Up to **50** contacts per call — split larger sets across calls.\n\nBefore enriching, sum the `canReveal[].credits` for the fields you'll reveal, describe this as quota already included in the user's existing Lusha account, and wait for confirmation on large batches. This workflow cannot change the user's account entitlement. If the existing entitlement is insufficient, offer to continue with previews or a smaller batch.\n\n## Step 5 — Present the Lead List\n\n### Filters Applied\nShow the user exactly what was used so they can verify:\n\n| Filter | Value |\n|--------|-------|\n| ... | ... |\n\n### Lead List\n\n| # | Name | Title | Company | Industry | Size | Direct Phone | Mobile | Email | Intent Signal |\n|---|------|-------|---------|----------|------|-------------|--------|-------|---------------|\n\n- Surface direct phone and mobile as separate columns — do not merge or hide them\n- Mark missing phone numbers with `—` not blank cells\n- Include intent signal column only if `intent_topics` filter was used\n\n### Summary\n- Results found: X (showing top Y)\n- Contacts with verified phone: Z\n- Existing-account quota used: N\n\n## Step 6 — Offer Next Actions\n\n1. **Refine** — adjust filters and re-run\n2. **Add intent filter** — narrow to companies actively researching a topic\n3. **Add tech stack filter** — narrow to companies using a specific technology\n4. **Run signal-prospect** — cross this list against current buying signals\n5. **Export** — format as CSV for copy-paste\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}