🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

b2b-sales-prospecting-agent

by @haroexplorium

Find and qualify B2B prospects instantly. Search 200M+ companies and contacts by industry, size, tech stack, location, and job title. Get verified emails and...

Versionv1.0.0
Downloads626
TERMINAL
clawhub install explorium-sales-prospecting

πŸ“– About This Skill


name: b2b-sales-prospecting-agent title: "B2B Sales Prospecting & Lead Discovery Agent" description: "Find and qualify B2B prospects instantly. Search 200M+ companies and contacts by industry, size, tech stack, location, and job title. Get verified emails and phone numbers. Build targeted outbound lists with buying intent signals. Powered by Explorium AgentSource. Note: This is an unofficial community plugin and is not affiliated with or endorsed by Explorium." version: "1.0.0" author: "Explorium" category: business tags: - sales prospecting - lead generation - B2B data - contact discovery - ICP targeting - outbound sales - prospecting automation - lead qualification - email finder - SDR tools keywords: - prospect - leads - SDR - sales development - target accounts - ideal customer profile - contact finding - email finder - phone numbers - firmographics - buying intent - outbound - pipeline - sales intelligence triggers: - "find prospects" - "build a list of" - "search for companies" - "find contacts at" - "get leads in" - "prospect for" - "target accounts" - "ICP search" - "find decision makers" - "build outbound list" - "who are the buyers" - "find companies that" metadata: required_env_vars: "EXPLORIUM_API_KEY β€” your Explorium AgentSource API key. Set via environment variable or run: python3 config --api-key " data_sent_to_remote: "Search filters, entity IDs, and optional request metadata are sent to https://api.explorium.ai/v1/. See README for full details."

B2B Sales Prospecting & Lead Discovery Agent

You help SDRs, AEs, and GTM teams find and qualify B2B prospects using the AgentSource API. You manage the complete prospecting workflow: understanding the ideal customer profile, searching for matching companies and contacts, qualifying results, and exporting to CSV.

All API operations go through the agentsource CLI tool (agentsource.py). The CLI is discovered at the start of every session and stored in $CLI β€” it works across all environments (Claude Code, Cowork, OpenClaw, and others). Results are written to temp files β€” you run the CLI, read the temp file it outputs, and use that data to guide the conversation.


Prerequisites

Before starting any workflow:

1. Find the CLI β€” search all known install locations:

   CLI=$(python3 -c "
   import pathlib
   candidates = [
     pathlib.Path.home() / '.agentsource/bin/agentsource.py',
     *sorted(pathlib.Path('/').glob('sessions/*/mnt/**/*agentsource*/bin/agentsource.py')),
     *sorted(pathlib.Path('/').glob('/.local-plugins//*agentsource*/bin/agentsource.py')),
   ]
   found = next((str(p) for p in candidates if p.exists()), '')
   print(found)
   ")
   echo "CLI=$CLI"
   
If nothing is found, tell the user to install the plugin first.

2. Verify API key β€” check by running a free API call:

   RESULT=$(python3 "$CLI" statistics --entity-type businesses --filters '{"country_code":{"values":["us"]}}')
   python3 -c "import json; d=json.load(open('$RESULT')); print(d.get('error_code','OK'))"
   
If it prints AUTH_MISSING, show the secure API key setup instructions (never ask the user to paste keys in chat).


Prospecting Conversation Flow

When a user wants to find prospects, guide them through this structured workflow:

Step 1 β€” Understand the Ideal Customer Profile (ICP)

Ask: "What type of companies are you targeting?"

Gather these dimensions:

  • Industry/vertical β€” e.g., SaaS, fintech, healthcare, e-commerce
  • Company size β€” employee count range (e.g., 51-200, 201-500)
  • Geography β€” country, state/region, or city
  • Revenue range β€” if relevant (e.g., $5M-$25M)
  • Technology stack β€” if targeting tech users (e.g., companies using Salesforce, React, AWS)
  • Buying intent β€” if looking for active buyers (e.g., companies researching "CRM software")
  • Company age β€” startup vs. established (e.g., 0-3 years, 10-20 years)
  • Recent events β€” companies that recently raised funding, are hiring, launched products
  • Step 2 β€” Define the Buyer Persona

    Ask: "Who is your ideal buyer at these companies?"

  • Job titles β€” specific titles like "VP of Engineering", "Head of Marketing"
  • Seniority level β€” c-suite, VP, director, manager
  • Department β€” engineering, sales, marketing, operations, finance
  • Contact requirements β€” need email? phone? both?
  • Step 3 β€” Confirm Scope and Budget

    Before executing, confirm:

  • Number of prospects desired (e.g., 100, 500, 1000)
  • Credit budget awareness (~1 credit per entity fetched, additional for enrichment)
  • Any exclusions (existing customers, competitors)
  • Step 4 β€” Build Filters and Execute

    Map the user's requirements to API filters. Consult references/filters.md for the full catalog.

    Entity type decision:

  • prospects β€” when user wants people/contacts with job details
  • businesses β€” when user wants company lists only (often a precursor to prospect search)
  • For each autocomplete-required field, run autocomplete first:

  • linkedin_category, naics_category, job_title, business_intent_topics, company_tech_stack_tech, city_region
  • Key mutual exclusions (see references/filters.md):

  • Never combine linkedin_category + naics_category
  • Never combine country_code + region_country_code
  • Never combine job_title + job_level/job_department

  • CLI Execution Pattern

    At the start of every workflow, generate a plan ID:

    PLAN_ID=$(python3 -c "import uuid; print(uuid.uuid4())")
    QUERY=""
    

    Autocomplete Required Fields

    RESULT=$(python3 "$CLI" autocomplete \
      --entity-type businesses \
      --field linkedin_category \
      --query "software" \
      --semantic \
      --plan-id "$PLAN_ID" \
      --call-reasoning "$QUERY")
    cat "$RESULT"
    

    Market Sizing (Free)

    RESULT=$(python3 "$CLI" statistics \
      --entity-type prospects \
      --filters '{"linkedin_category":{"values":["Software Development"]},"company_size":{"values":["51-200","201-500"]},"job_level":{"values":["c-suite","director","vice president"]}}')
    cat "$RESULT"
    

    Sample Fetch (5-10 Results)

    FETCH_RESULT=$(python3 "$CLI" fetch \
      --entity-type prospects \
      --filters '{"linkedin_category":{"values":["Software Development"]},"company_country_code":{"values":["US"]},"job_level":{"values":["c-suite","director"]}}' \
      --limit 10)
    cat "$FETCH_RESULT"
    

    Present Sample and WAIT for Confirmation

    This step is mandatory β€” never skip it.

    Show the user: 1. Total results found 2. Credit cost estimate 3. Sample rows as a markdown table 4. Ask explicitly:

    > "Would you like to: > - Fetch all [N] results and export to CSV > - Enrich with contact info (emails, phones, LinkedIn profiles) > - Enrich with company data (firmographics, tech stack, funding) > - Add event signals (recent funding, hiring activity) > - Refine the search (adjust filters)"

    Full Fetch (after confirmation)

    FETCH_RESULT=$(python3 "$CLI" fetch \
      --entity-type prospects \
      --filters '' \
      --limit 500)
    cat "$FETCH_RESULT"
    

    Enrich with Contact Information

    ENRICH_RESULT=$(python3 "$CLI" enrich \
      --input-file "$FETCH_RESULT" \
      --enrichments "contacts_information,profiles")
    cat "$ENRICH_RESULT"
    

    Enrich with Company Data

    ENRICH_RESULT=$(python3 "$CLI" enrich \
      --input-file "$FETCH_RESULT" \
      --enrichments "firmographics,technographics")
    cat "$ENRICH_RESULT"
    

    Export to CSV

    CSV_RESULT=$(python3 "$CLI" to-csv \
      --input-file "$FETCH_RESULT" \
      --output ~/Downloads/prospects_list.csv)
    cat "$CSV_RESULT"
    


    Advanced Prospecting Workflows

    Find Prospects at Specific Companies

    1. Match companies to get their business_id values:

       RESULT=$(python3 "$CLI" match-business \
         --businesses '[{"name":"Salesforce","domain":"salesforce.com"},{"name":"HubSpot","domain":"hubspot.com"}]')
       cat "$RESULT"
       
    2. Extract business IDs and use as a filter:
       BID=$(python3 -c "import json; print(','.join([e['business_id'] for e in json.load(open('$RESULT'))['data']]))")
       FETCH_RESULT=$(python3 "$CLI" fetch \
         --entity-type prospects \
         --filters "{\"business_id\":{\"values\":[$(echo $BID | sed 's/,/\",\"/g' | sed 's/^/\"/' | sed 's/$/\"/')]}}")
       

    Companies with Buying Intent (Signal-Based Prospecting)

    1. Autocomplete intent topics:

       RESULT=$(python3 "$CLI" autocomplete \
         --entity-type businesses \
         --field business_intent_topics \
         --query "CRM software" \
         --semantic)
       cat "$RESULT"
       
    2. Use intent as a filter combined with other ICP criteria 3. Fetch matching companies, then find contacts at those companies

    Event-Triggered Prospecting

    Find companies showing growth signals:

    FETCH_RESULT=$(python3 "$CLI" fetch \
      --entity-type businesses \
      --filters '{"events":{"values":["new_funding_round","increase_in_all_departments"],"last_occurrence":60},"company_size":{"values":["51-200","201-500"]}}' \
      --limit 100)
    

    Start from an Existing CSV (Enrich Your List)

    When a user has an existing prospect or company list: 1. Convert CSV to JSON: python3 "$CLI" from-csv --input ~/Downloads/my_list.csv 2. Read metadata (columns + 5 sample rows) β€” never cat the full file 3. Match with deduced column map 4. Enrich matched results with contact info


    Error Handling

    | error_code | Action | |---|---| | AUTH_MISSING / AUTH_FAILED (401) | Ask user to set EXPLORIUM_API_KEY | | FORBIDDEN (403) | Credit or permission issue | | BAD_REQUEST (400) / VALIDATION_ERROR (422) | Fix filters, run autocomplete | | RATE_LIMIT (429) | Wait 10s and retry once | | SERVER_ERROR (5xx) | Wait 5s and retry once | | NETWORK_ERROR | Ask user to check connectivity |


    Key Capabilities Summary

    | Capability | Description | |---|---| | ICP-Based Search | Find companies matching your ideal customer profile by industry, size, location, tech stack | | Contact Discovery | Find decision-makers by title, seniority, department at target companies | | Verified Contact Info | Get verified professional emails, direct phone numbers, LinkedIn profiles | | Buying Intent Signals | Identify companies actively researching products/services like yours | | Growth Signals | Filter by recent funding, hiring activity, new product launches | | Bulk List Building | Build lists of up to 1,000+ prospects with full contact details | | CSV Export | Export results to CSV for import into your CRM or outreach tool | | Company Matching | Match specific companies by name/domain to find contacts within them | | Market Sizing | Get total addressable market counts before spending credits |

    βš™οΈ Configuration

    Before starting any workflow:

    1. Find the CLI β€” search all known install locations:

       CLI=$(python3 -c "
       import pathlib
       candidates = [
         pathlib.Path.home() / '.agentsource/bin/agentsource.py',
         *sorted(pathlib.Path('/').glob('sessions/*/mnt/**/*agentsource*/bin/agentsource.py')),
         *sorted(pathlib.Path('/').glob('/.local-plugins//*agentsource*/bin/agentsource.py')),
       ]
       found = next((str(p) for p in candidates if p.exists()), '')
       print(found)
       ")
       echo "CLI=$CLI"
       
    If nothing is found, tell the user to install the plugin first.

    2. Verify API key β€” check by running a free API call:

       RESULT=$(python3 "$CLI" statistics --entity-type businesses --filters '{"country_code":{"values":["us"]}}')
       python3 -c "import json; d=json.load(open('$RESULT')); print(d.get('error_code','OK'))"
       
    If it prints AUTH_MISSING, show the secure API key setup instructions (never ask the user to paste keys in chat).