Skip to content

hcassar93/open-sdr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open SDR

v0.01

An agentic Sales Development Representative that works with you to build enriched lists for outbound prospecting, manage pipeline, or pair with channel partners. Runs entirely locally for data security. Uses CSVs as state and Git as history.

Designed to be operated by a professional — not to produce AI outbound slop. The agent handles the grunt work so you can focus on the go-to-market experience.

Philosophy

This is designed to be operated by an AI agent.

The CLI exposes tools that an agent can call to build and manage your outbound operation. You can use any agentic coding tool:

  • GitHub Copilot CLI
  • Claude Code CLI
  • Codex CLI
  • Gemini CLI
  • OpenCode CLI
  • Aider CLI
  • Cursor CLI
  • OpenClaw CLI (Particularly good)

The agent reads AGENT.md for instructions, discovers available tools via the skill registry, and uses the CLI to persist data. You have a conversation, the agent does the work.

You can also run CLI commands directly as a human — useful for checking status, resetting data, or viewing the portal.

The Workflow

  1. Product — Define what you're selling
  2. Personas — Define who you're targeting
  3. Regions — Segment your market into territories
  4. Targets — Identify specific companies in each region
  5. Contacts — Find decision makers at target companies

Quick Start

npm install
npm run dev -- start

Using with an Agent

  1. Open this folder in your agentic tool of choice
  2. The agent will read AGENT.md for instructions
  3. Start chatting — the agent drives the process interactively
  4. Run npm run dev -- portal to visualize progress

Playwright CLI With A Chrome Profile

If you want Playwright CLI or an agent to use a specific local Chrome profile, store the real path in .env.local. That file is ignored by git in this repo.

Example .env.local:

OPEN_SDR_CHROME_PROFILE_PATH="/Users/hayden/Library/Application Support/Google/Chrome/Profile 1"
OPEN_SDR_CHROME_USER_DATA_DIR="/Users/hayden/Library/Application Support/Google/Chrome"
OPEN_SDR_CHROME_PROFILE_DIR="Profile 1"

If you need to derive those values manually, open the target Chrome profile and check chrome://version.

  1. Copy the Profile Path value.
  2. Use the parent folder as OPEN_SDR_CHROME_USER_DATA_DIR.
  3. Use the last path segment as OPEN_SDR_CHROME_PROFILE_DIR.

Example:

/Users/you/Library/Application Support/Google/Chrome/Profile 1

From that path:

  • the user data dir is /Users/you/Library/Application Support/Google/Chrome
  • the profile directory is Profile 1

Before running Playwright CLI from your shell, load the local env file:

set -a
source .env.local
set +a

For Playwright CLI, the important part is the user data dir:

npx playwright codegen --user-data-dir="$OPEN_SDR_CHROME_USER_DATA_DIR" https://example.com

If you need a specific profile inside that directory, launch Chrome yourself with that profile first:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
	--user-data-dir="$OPEN_SDR_CHROME_USER_DATA_DIR" \
	--profile-directory="$OPEN_SDR_CHROME_PROFILE_DIR"

Then use Playwright against that browser session or the same user data directory. An agent can also reference the same values from .env.local instead of storing your real Chrome path in git.

CLI Commands

These commands can be run by you or by the agent:

npm run dev -- start    # Interactive start menu
npm run dev -- status   # Show summary
npm run dev -- portal   # Open web dashboard
npm run dev -- skills   # List available tools
npm run dev -- reset    # Clear all data
npm run dev -- mock     # Demo with sample data

Architecture

├── AGENT.md              # Agent instructions
├── src/
│   ├── cli.ts            # CLI interface
│   ├── core/
│   │   ├── agent_state.ts    # State tracking
│   │   └── skill_registry.ts # Tool discovery
│   ├── skills/
│   │   └── sdr_skills.ts     # SDR tools
│   └── tools/
│       └── csv_manager.ts    # CSV operations
├── data/                 # All data (CSV files)
│   ├── product.csv
│   ├── personas.csv
│   ├── regions.csv
│   └── regions/{region_id}/
│       ├── targets.csv
│       └── targets/{target_id}/
│           └── contacts.csv
└── index.html            # Web portal

Data Model

All data is stored in CSVs for transparency:

Product (1) → Personas (N) → Regions (M) → Targets (K) → Contacts (2-5 per target)

Contacts are stored per-target to keep files small and focused.

Future Tools

Everything is a tool the agent can use via CLI. Planned additions:

  • Outreach drafting — Generate personalized email sequences
  • Email integration — Send directly from the agent
  • Research tools — Web scraping, LinkedIn enrichment
  • CRM sync — Push data to Salesforce, HubSpot, etc.
  • Data export — CSV/JSON export for other systems
  • Scheduling — Book meetings directly

About

Agentic SDR for outbound prospecting. Build enriched lists, manage pipeline, and pair with channel partners.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors