npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

sales-recon

v0.2.0

Published

Pre-call company intelligence briefing. BYOK. 60 seconds. Terminal.

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-recon

Requires Node.js 18+.

Setup (2 minutes)

sales-recon init

The wizard walks you through picking your LLM and search providers and entering API keys. You need:

  1. An LLM API keyAnthropic (recommended) or OpenAI
  2. A search API keyTavily (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 research

Meeting Prep (Person-Focused)

sales-recon prep "Jane Smith" --at mercury.com
sales-recon prep "Jane Smith" --at mercury.com --deep

Output 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 briefing

LinkedIn 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:

  1. Open their LinkedIn profile in your browser
  2. Select AllCtrl+A (Windows/Linux) or Cmd+A (Mac)
  3. CopyCtrl+C (Windows/Linux) or Cmd+C (Mac)
  4. 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)
  5. 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/janesmith

Note: 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 context

This 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

  1. Resolve — Identifies the company from a name or domain using a quick search
  2. Search — Runs multiple targeted queries across your chosen search provider (person + company + industry + news)
  3. Enrich — Optionally pulls LinkedIn profile data via file or API
  4. Synthesize — Feeds all sources to your LLM with a structured prompt and anti-hallucination rules
  5. 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