sales-recon
v0.2.0
Published
Pre-call company intelligence briefing. BYOK. 60 seconds. Terminal.
Maintainers
Readme
sales-recon
Pre-call company intelligence briefing. BYOK. 60 seconds. Terminal.
Stop Googling your prospects for 20 minutes before every call. sales-recon pulls web search results, LinkedIn profile data, and company intel — then synthesizes it into a structured meeting dossier with talking points, icebreakers, and topics to avoid.
Bring your own API keys. No SaaS subscription. Runs in your terminal.
$ sales-recon prep "Kyle Hackbarth" --at semomilling.com --linkedin-file profile.txt
✔ Identified: SEMO Milling | Quality Dry Yellow Corn Mill (semomilling.com)
✔ Found 51 sources
✔ LinkedIn profile loaded from file
✔ Dossier complete
┌──────────────────────────────────────────────────────────┐
│ MEETING PREP: KYLE HACKBARTH @ SEMO MILLING │
└──────────────────────────────────────────────────────────┘
PERSON PROFILE [VERIFIED]
Name: Kyle Hackbarth
Title: Senior Manager, Sales
Background: Kyle is a U.S. Army veteran and EMBA-trained executive with 15+
years in B2B physical product sales. He co-founded and scaled Cartridge
Brewing from concept to multi-million-dollar regional distribution...
Tenure: 5 months (joined October 2025)
Recent Activity:
• Posted about attending PLMA trade show in Chicago — collected 62 business
cards through genuine conversations rather than badge scanning
• Documented a 3-day, 5-state sales road trip emphasizing the importance
of in-person visits in physical product manufacturing
...
MEETING STRATEGY [GENERATED]
Icebreakers:
1. I saw your post about collecting 62 business cards at PLMA versus the
usual badge-scanning approach — what surprised you most about the quality
of conversations when the friction was higher?
2. Your background is fascinating — Army platoon leader, brewery co-founder,
malt sales to Fortune 500 distillers, now building a sales function at a
regional corn mill. How has leading soldiers informed how you approach
building sales systems in traditional manufacturing?
...Real output from Kyle Hackbarth's profile. The icebreakers reference his actual LinkedIn posts because the tool was fed his real profile data.
Why This Exists
Every sales rep does the same thing before a call: Google the person, skim their LinkedIn, check the company website, maybe look at recent news. It takes 15-20 minutes and the results are scattered across browser tabs.
sales-recon does all of that in one command and returns a structured dossier with:
- Person Profile — title, career background, tenure, recent activity, topics of interest
- Company Context — what they do, HQ, headcount, stage, recent news
- Role Insights — likely priorities and pain points specific to this person in this role
- Meeting Strategy — talking points with reasoning, personalized icebreakers, topics to avoid
Every section is confidence-tagged: [VERIFIED] from authoritative sources, [ASSESSED] inferred from evidence, [GENERATED] AI-created.
Install
npm install -g sales-reconRequires Node.js 18+.
Setup (2 minutes)
sales-recon initThe wizard walks you through picking your LLM and search providers and entering API keys. You need:
- An LLM API key — Anthropic (recommended) or OpenAI
- A search API key — Tavily (1,000 free/month), Serper (2,500 free/month), or Brave (2,000 free/month)
Cost per briefing: ~$0.03-0.07 depending on model and depth.
Usage
Company Briefing
sales-recon "Stripe"
sales-recon "mercury.com" # Domain input works too
sales-recon "Stripe" --deep # More search queries, deeper research
sales-recon "Stripe" --person "Patrick C." # Add person-specific researchMeeting Prep (Person-Focused)
sales-recon prep "Jane Smith" --at mercury.com
sales-recon prep "Jane Smith" --at mercury.com --deepOutput Options
sales-recon "Stripe" --json # Raw JSON (pipe to jq, save to file, etc.)
sales-recon "Stripe" --md # Markdown
sales-recon "Stripe" --save # Save to ~/.sales-recon/briefs/
sales-recon --cost # Show cost of last briefingLinkedIn Profile Enrichment
This is the difference between a decent dossier and a great one. Without LinkedIn data, the tool relies on web search snippets. With it, you get verified career history, recent posts, and icebreakers that reference things the person actually said.
| Without LinkedIn | With LinkedIn | |---|---| | Generic title guess | Exact current title and tenure | | "Limited public information" | Full career history with companies and dates | | Generic icebreakers | References to their actual LinkedIn posts | | Broad pain points | Pain points specific to their role and situation |
Copy-Paste from LinkedIn (Free, Recommended)
No API key needed. Works for any profile you can view. Takes 30 seconds.
Step by step:
- Open their LinkedIn profile in your browser
- Select All —
Ctrl+A(Windows/Linux) orCmd+A(Mac) - Copy —
Ctrl+C(Windows/Linux) orCmd+C(Mac) - Paste into a text file:
- Open any text editor (VS Code, Notepad, TextEdit, nano, etc.)
- Paste everything — it doesn't need to be clean
- Save as
profile.txt(or any filename)
- Run with the file:
sales-recon prep "Jane Smith" --at mercury.com --linkedin-file profile.txt
The LLM extracts what it needs from the raw copy-paste. You can reuse the same file — just overwrite it with the next person's profile before each run.
Auto-Fetch via Proxycurl API (Optional)
If you have a Proxycurl API key, the tool can fetch profiles automatically from a URL:
# One-time setup
sales-recon config set proxycurl_api_key YOUR_KEY
# Fetch automatically
sales-recon prep "Jane Smith" --at mercury.com --linkedin https://linkedin.com/in/janesmithNote: Proxycurl can't reach every profile (some have restricted visibility). When it fails, the tool warns you and suggests the copy-paste approach, then continues with web search so you still get a dossier.
Seller Context
Tell the tool what you sell and it will tailor talking points and pain points to your offering:
sales-recon contextThis opens an interactive editor where you describe your product, ideal customer, and value props. Once saved, every briefing is automatically personalized.
Configuration
sales-recon init # Interactive setup wizard
sales-recon config show # View current config (keys are masked)
sales-recon config set <key> <value> # Update a single value| Key | Description |
|---|---|
| llm_provider | anthropic or openai |
| llm_api_key | Your LLM provider API key |
| llm_model | Model override (e.g., claude-sonnet-4-5-20250929, gpt-4o) |
| search_provider | tavily, serper, or brave |
| search_api_key | Your search provider API key |
| output_format | Default output format: terminal, json, or md |
| proxycurl_api_key | (Optional) For --linkedin auto-fetch |
Config is stored in ~/.sales-recon/config.json.
How It Works
- Resolve — Identifies the company from a name or domain using a quick search
- Search — Runs multiple targeted queries across your chosen search provider (person + company + industry + news)
- Enrich — Optionally pulls LinkedIn profile data via file or API
- Synthesize — Feeds all sources to your LLM with a structured prompt and anti-hallucination rules
- Output — Returns a confidence-tagged dossier in your chosen format
All data stays between you, your search provider, and your LLM. Nothing is stored or sent to third parties.
License
MIT
