@buzzlead/campaign-builder
v0.1.0
Published
Drop your URL and a CSV of prospects. Get a research brief + 2 personalized cold emails for each. Free BYOL (bring-your-own-list) CLI from BuzzLead.
Maintainers
Readme
Campaign Builder
Drop your URL and a CSV of prospects. Get a research brief + 2 personalized cold emails for each. BYOL — bring your own list. Free CLI from BuzzLead.
The same engine that powers the free web tool — but you can throw an unlimited prospect list at it from your terminal.
npx @buzzlead/campaign-builder \
--my-site mycompany.com \
--input prospects.csv \
--out campaign.csvFor each row in your CSV, you get back:
- A short research brief (what they do, growth signal, main challenge, best angle)
- Email 1 — 4T framework, under 70 words
- Email 2 — tight problem-frame follow-up, under 90 words
No DiscoLike, no AI Ark, no contact lookup. You already have the list. This is the tool that turns your list into copy.
What it does
For each prospect in your input list:
- Crawl their website via Jina Reader
- Build a research brief — Claude extracts what they do, their growth signals, their likely main challenge, and the best cold-outreach angle
- Write Email 1 — 4T framework (Trigger / Think / Bridge / Talk), peer-to-peer voice, under 70 words
- Write Email 2 — problem-frame + mechanism + soft CTA, under 90 words, different angle from Email 1
Combined with a one-time analysis of your own site (the sender context), every email is personalized to the prospect's actual business.
Input format
Prospect list as CSV or JSON. Required columns/keys:
| Column | Required | Notes |
|---|---|---|
| first_name | ✓ | |
| last_name | | Optional but recommended |
| email | | Carried through to output unchanged |
| job_title | ✓ | E.g. "VP Sales", "Head of Operations" |
| company | ✓ | Display name |
| website_url | ✓ | The site we crawl for research |
| linkedin_url | | Carried through |
CSV example:
first_name,last_name,email,job_title,company,website_url,linkedin_url
Jane,Smith,[email protected],VP Sales,Initech,https://initech.com,https://linkedin.com/in/jane
John,Doe,[email protected],Head of Growth,Umbrella Corp,https://umbrella.io,JSON example:
[
{ "firstName": "Jane", "lastName": "Smith", "jobTitle": "VP Sales", "company": "Initech", "websiteUrl": "https://initech.com" }
]Header aliases are accepted: firstname / first_name / First Name, title / role / job_title, website / url / domain / website_url, etc.
Install
# One-shot via npx
npx @buzzlead/campaign-builder --my-site mycompany.com --input prospects.csv
# Or install globally
npm install -g @buzzlead/campaign-builder
campaign --my-site mycompany.com --input prospects.csv
# Or as a library
import { runCampaign } from "@buzzlead/campaign-builder";
const result = await runCampaign({
mySiteUrl: "mycompany.com",
prospects: [/* ProspectInput[] */],
});API keys
Just one required.
| Key | Why | Where |
|---|---|---|
| ANTHROPIC_API_KEY | Site analysis + research + email generation | https://console.anthropic.com |
Optional:
JINA_API_KEY— faster site scraping (anonymous works)
Cost per run
Approximate, at 10 prospects:
| Provider | Calls | ~Cost | |---|---|---| | Anthropic | 1 (your site) + 3 × 10 (per prospect) = 31 calls | $0.20–0.50 | | Jina | 11 scrapes | ~$0.01 | | Total | | ~$0.20–0.50 |
Scales linearly. For 100 prospects: ~$2–5.
CLI usage
Usage: campaign [options]
Required:
-m, --my-site <url> Your company URL (sender context)
-i, --input <path> Path to prospect CSV or JSON
Optional:
-o, --out <path> Output CSV path. Default: ./campaign.csv
--silent Suppress progress output
--json Print full result as JSON to stdoutExamples
Standard run from CSV:
campaign --my-site mycompany.com --input prospects.csvFrom JSON, pipe to JSON output:
campaign --my-site mycompany.com --input prospects.json --json > result.jsonCSV output
Columns:
first_name, last_name, email, job_title, company, website_url, linkedin_url,
research_summary, email_1, email_2, skipped, skip_reasonEvery text field is double-quoted. Newlines inside cells are escaped as \n. Skipped rows include the reason so you can audit.
How it differs from the web tool
| | Web tool | CLI | |---|---|---| | Prospect cap | 10 | Unlimited (your wallet's the limit) | | Lead gate | Required | None | | Auth | Shared keys | Your keys | | Input | Manual table entry | CSV or JSON file | | Library API | No | Yes |
Library API
import {
runCampaign, // end-to-end pipeline
scrapeWebsite, // step 1 helper
consolidateCompanyProfile, // your-site analysis
consolidateProspectProfile, // per-prospect research brief
generateEmail1, // 4T framework
generateEmail2, // problem-frame follow-up
buildCsv, // CSV output
parseProspectsCsv, // input parsers
parseProspectsJson,
} from "@buzzlead/campaign-builder";Want this run continuously, on auto-pilot?
Campaign Builder turns your existing list into copy. BuzzLead the agency runs the whole motion: sourcing new lists, sending the campaigns, handling replies, booking meetings. 10M+ cold emails sent. $8M+ in client revenue.
If you want the version with humans behind it, talk to us at buzzlead.io.
License
MIT. Use it however you want.
