Outreach CLI is a lightweight, fully automated command-line utility designed to orchestrate top-of-funnel outbound campaigns. Built with Node.js and TypeScript, it connects multiple data enrichment APIs to construct a seamless pipeline from seed domain to dispatched email.
The application is designed to operate autonomously with zero manual intervention required until the final safety checkpoint. By providing a single seed domain, the CLI will:
- Source lookalike companies.
- Identify target decision-makers (C-Level and VP).
- Resolve verified B2B email addresses.
- Dispatch personalized, transactional email batches.
- Lookalike Discovery: Integrates with the Ocean.io API to identify companies sharing similar firmographic traits with the provided seed domain.
- Decision-Maker Sourcing: Utilizes the Prospeo API to locate key executives within target organizations.
- Email Resolution: Leverages the Prospeo's Enrich Person API to resolve LinkedIn profiles to verified corporate email addresses.
- Automated Dispatch: Uses Brevo (Sendinblue) to execute batch email dispatch using dynamically injected templates.
- Resilient Architecture: Implements robust error handling, cross-stage data deduplication (using strict
Setevaluations), and payload chunking (respecting Brevo's 1,000 recipient per-request limit) to ensure API stability and preserve credits.
- Runtime: Node.js (ESM)
- Language: TypeScript
- HTTP Client: Axios
- Testing Framework: Vitest
Ensure you have Node.js installed (v18 or higher recommended). You will also require active API credentials for the integrated services:
- Ocean.io API Token
- Prospeo API Token
- Brevo API Key
-
Clone the repository:
git clone https://github.com/RanXom/outreach-cli.git cd outreach-cli -
Install dependencies:
npm install
-
Global Link (Optional): To execute the CLI system-wide without prefixing
npm run, compile the TypeScript source and link the executable:npm run build sudo npm link
The application relies on environment variables for secure credential management. Create a .env file in the project root:
OCEANIO_API_TOKEN="your_ocean_token_here"
PROSPEO_API_TOKEN="your_prospeo_token_here"
EAZYREACH_CLIENT_ID="your_eazyreach_id" # Not needed unless using Eazyreach for fetching email
EAZYREACH_CLIENT_SECRET="your_eazyreach_secret" # Not needed unless using Eazyreach for fetching email
BREVO_API_KEY="your_brevo_api_key_here"If the package is linked globally, execute the pipeline by passing the target seed domain:
outreach-cli <company.domain>Alternatively, use the local npm script:
npm start <company.domain>:: Starting pipeline for subspace.money
:: Sourcing lookalike companies via Ocean.io...
Utterbond Inc (utterbond.com)
Rekart (rekart.io)
-> 2 companies
:: Finding decision-makers via Prospeo...
Tyler Durden, Chief Executive Officer at Fight Club Inc
-> 1 prospects
:: Resolving work emails...
Tyler Durden -> tyler@fc.com
-> 1/1 resolved
:: Outreach preview (1 recipients)
Name Title Company Email
--------------------------------------------------------------------------------------------------
Tyler Durden Chief Executive Officer Fight Club Inc tyler@fc.com
:: Send 1 email(s)? [y/N]
The repository includes a comprehensive test suite covering data transformation, deduplication logic, and resilience strategies. All network requests are mocked to ensure zero impact on API quotas during testing.
npm testThis project is licensed under the MIT License.