← Back to Skills Marketplace
haroexplorium

b2b-sales-prospecting-agent

by haroExplorium · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
365
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install explorium-sales-prospecting
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...
README (SKILL.md)

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="\x3Cuser's original request>"

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 '\x3Cconfirmed 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
Usage Guidance
This skill is coherent with its stated purpose (it ships a CLI that calls Explorium's API), but note three things before installing: (1) Registry metadata incorrectly lists no required env vars — the CLI requires EXPLORIUM_API_KEY. Verify the source and only provide a key you trust. (2) The CLI writes API responses to /tmp with default file permissions; on multi-user systems those temp files may be readable by others. Consider inspecting/adjusting the code to write temp files to a secure directory or remove sensitive fields before writing. (3) The CLI supports an optional --call-reasoning argument which will send the user's query text to the remote API; only enable that with explicit user consent. Recommended actions: inspect bin/agentsource.py yourself, run setup.sh in a controlled environment, avoid saving your API key to disk on shared machines (use an env var instead), and confirm the plugin's provenance (homepage/owner verification) since the registry entry lists unknown source. If you want higher confidence, ask the publisher for a signed release or an authoritative homepage and/or for the skill registry to be updated to declare EXPLORIUM_API_KEY as a required credential.
Capability Analysis
Type: OpenClaw Skill Name: explorium-sales-prospecting Version: 1.0.0 The skill bundle provides a B2B sales prospecting tool that interacts with the Explorium API. All network communication is directed to the declared `https://api.explorium.ai/v1/` endpoint. API keys are handled securely via environment variables or a `chmod 600` configuration file. The core CLI tool (`bin/agentsource.py`) uses `pathlib` for file operations and `urllib.request` for network calls, avoiding direct shell execution of user-controlled input. Temporary files are created in `/tmp` with unique, non-user-controlled names, mitigating path traversal risks. The `SKILL.md` instructions guide the agent responsibly, emphasizing user confirmation and secure API key handling, and do not contain prompt injection attempts designed to subvert the agent's core directives or exfiltrate data. The ability to write to user-specified output paths (e.g., `~/Downloads/`) is a standard feature for a data export tool and not indicative of malicious intent.
Capability Assessment
Purpose & Capability
The skill's name/description match the included CLI and documentation (it queries https://api.explorium.ai/v1 for prospecting). However the registry metadata claims no required environment variables or credentials while SKILL.md and bin/agentsource.py clearly require an EXPLORIUM_API_KEY (env var or ~/.agentsource/config.json). That mismatch is an incoherence between declared registry requirements and the actual runtime needs.
Instruction Scope
Runtime instructions tell the agent to execute the bundled CLI and then read JSON temp files produced in /tmp. The CLI accepts an optional --call-reasoning/plan-id which (if supplied) will send the user's query text and plan id to the remote API as request metadata. The SKILL.md mentions this but the agent could still send user queries if the instruction uses --call-reasoning, which is a privacy risk if the user hasn't consented. Also writing potentially sensitive contact data to /tmp (default permissions) can expose results to other local users on multi-user systems.
Install Mechanism
No external downloads: setup.sh copies the included bin/agentsource.py into ~/.agentsource/bin and optionally saves the API key to ~/.agentsource/config.json (mode 600). This is low risk compared to fetching arbitrary remote code, but it does add files to the user's home directory and installs an executable Python script.
Credentials
Functionally the skill needs a single API credential (EXPLORIUM_API_KEY) which is appropriate for a third‑party data API. The problem is the registry metadata omitted that requirement. The CLI will read the env var or a config file and will include optional request metadata (user query) in calls if instructed, which increases data sent to the remote service beyond just filter parameters.
Persistence & Privilege
The skill does not request always:true or system-wide privileges. It installs to ~/.agentsource and may persist an API key to ~/.agentsource/config.json (setup.sh uses mode 600). It does not modify other skills or system-wide agent settings.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install explorium-sales-prospecting
  3. After installation, invoke the skill by name or use /explorium-sales-prospecting
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
- Initial release of the "B2B Sales Prospecting & Lead Discovery Agent" skill for automated, structured B2B lead generation. - Guides users through a step-by-step prospecting workflow, including ICP definition, buyer persona, scope confirmation, and filter selection. - Integrates with Explorium AgentSource via the agentsource CLI tool to search 200M+ companies and contacts, providing real-time market sizing, filtering, and enrichment. - Supports advanced filters (industry, size, geography, revenue, tech stack, intent, events) and facilitates data export to CSV. - Handles API key verification and CLI discovery automatically, with clear user prompts for each step. - Emphasizes user confirmation before fetching/exporting large lists, with transparent credit cost estimates and sample previews.
Metadata
Slug explorium-sales-prospecting
Version 1.0.0
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is b2b-sales-prospecting-agent?

Find and qualify B2B prospects instantly. Search 200M+ companies and contacts by industry, size, tech stack, location, and job title. Get verified emails and... It is an AI Agent Skill for Claude Code / OpenClaw, with 365 downloads so far.

How do I install b2b-sales-prospecting-agent?

Run "/install explorium-sales-prospecting" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is b2b-sales-prospecting-agent free?

Yes, b2b-sales-prospecting-agent is completely free (open-source). You can download, install and use it at no cost.

Which platforms does b2b-sales-prospecting-agent support?

b2b-sales-prospecting-agent is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created b2b-sales-prospecting-agent?

It is built and maintained by haroExplorium (@haroexplorium); the current version is v1.0.0.

💬 Comments