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

alignmink-investor-crm

v0.1.1

Published

Investor CRM for fundraising founders. Local-first. Captures pitch context from your deck, drafts outreach emails with your LLM key, and tracks the pipeline.

Readme

alignmink-investor-crm

Run a fundraise from your laptop. Your data, your AI key, your terminal.

A founder-grade investor CRM that runs on localhost. Captures the core message of your pitch from your deck, drafts warm intros / cold pitches / follow-ups with your own LLM key, and tracks the pipeline through to commitment. Schema mirrors the Alignmink Strategy Spine, so the pitch context you build here ports cleanly into the full product later.

Nothing leaves your machine. No accounts, no analytics, no relay.


60-second quickstart

npx alignmink-investor-crm start

That's it. The CRM builds on first run and opens at http://localhost:3838. You'll be walked through a 3-step setup:

  1. Connect an LLM — paste your OpenRouter or Anthropic key. Skippable; CRM still works for tracking without a key.
  2. Capture your pitch — upload a PDF / PPTX / DOCX deck or paste pitch text. The model summarises into a structured spine you can edit.
  3. Add investors — drop a CSV from the investor-researcher skill or any list with Firm/Name + Country.

Each step is optional. Skip what you don't have ready and complete it from Settings later.

Prefer a one-time install? See Updating.


Three commands

The CLI does three things. If you only learn one, learn doctor.

| Command | What it does | |---|---| | alignmink-investor-crm start | Launches the CRM at http://localhost:3838. Use --port N to change, --no-open to skip the browser pop. | | alignmink-investor-crm doctor | Reports package version, data dir, LLM key status, and passcode status. Run this when anything looks off. | | alignmink-investor-crm (no args) | Same as doctor. Designed so a CEO who types just the package name gets actionable status, not a wall of help. |


What you get

  • 3-step onboarding wizard — connect LLM, capture pitch, import investors. Persistent across reloads, resumable.
  • Deck → pitch context — PDF, PPTX, DOCX, ODT, ODP, RTF, TXT, or MD. LLM extracts mission, one-liner, differentiator, traction, ask, priorities, key bets, scope boundaries, and metrics. Editable review before save.
  • Email drafter — three tones (warm intro / cold pitch / follow-up). Uses your saved pitch context as the system prompt for every draft.
  • Pipeline tracking — 7 stages from Not Contacted to Committed, with signal characters (○ ◐ → ← ◉ ✕ +).
  • CSV / XLSX import — flexible column matching, automatic dedup. Compatible with the investor-researcher skill output.
  • Per-investor notes + drafts — quick-capture notes, drafts archived per investor.
  • Keyboard-firstj / k navigation, / search, n note, e draft, Esc deselect.
  • Dark + light themes — both WCAG 2.1 AA verified.
  • Local-first storage — everything in ~/.alignmink-crm/ (data, settings, cookie secret). No telemetry.

Where your data lives

~/.alignmink-crm/
├── data.json         # investors, notes, drafts, imports
├── settings.json     # llm provider, key, model, onboarded flag (mode 0600)
└── cookie-secret     # auto-generated session secret (mode 0600)

To use a different directory, set CRM_HOME in your environment.


Getting an LLM key

The CRM uses your key. Nothing routes through Alignmink.

| Provider | Why pick this | Get a key | |---|---|---| | OpenRouter | One key gets Claude, GPT-4, Gemini, Llama. Free credit on signup. | https://openrouter.ai/keys | | Anthropic | Direct line to Claude. No middleman. | https://console.anthropic.com/settings/keys |

In the Settings screen, paste the key, pick a model, click Test connection. Saved to ~/.alignmink-crm/settings.json with file mode 0600.

Don't have a key yet? Skip step 1 in the wizard. The CRM still works for tracking — drafts and deck parsing unlock the moment you add a key.


Getting an investor list

Use the investor-researcher skill inside Claude or ChatGPT with your targeting notes. It outputs a CSV in the exact shape this CRM imports — column names match by substring, so formatting is forgiving.

Example prompt:

Run the investor-researcher skill. Find 25 pre-seed/seed VCs in the US focused on AI memory, decision intelligence, or vertical SaaS for CEOs.

Drop the returned CSV into the Investors step of the wizard (or the Sidebar later).


Updating

If you used npx:

npx alignmink-investor-crm@latest start

If you installed globally:

npm install -g alignmink-investor-crm@latest

Not sure which you used? Run alignmink-investor-crm doctor — it'll tell you.


Configuration

All in-app via the Settings screen. For headless / CI setups, env vars take effect when no settings.json key is present:

| Variable | Purpose | |---|---| | PASSCODE | Single-user passcode. Empty = open access on localhost. | | OPENROUTER_API_KEY / OPENROUTER_MODEL | LLM fallback (when settings.json has no key). | | ANTHROPIC_API_KEY / ANTHROPIC_MODEL | LLM fallback (Anthropic provider). | | PORT | Server port. Default 3838. | | HOST | Bind interface. Default 127.0.0.1. Use 0.0.0.0 to expose on LAN — set a passcode first. | | COOKIE_SECRET | Session cookie signing key. Auto-generated if omitted. | | CRM_HOME | Override the data directory. |

See .env.example for the full template.


Why port 3838?

Common dev defaults (3000, 3001, 4000, 5000, 5173, 8000, 8080) collide with everything. 3838 is short, memorable, and unused by mainstream tooling. Override with --port N when you need to.


Develop locally

git clone https://github.com/rajconnects/alignmink-investor-crm.git
cd alignmink-investor-crm
npm install
npm run dev

Vite on 5839, Express API on 3838 (proxied). HMR for the client; tsx --watch for the server.


Stack

| Layer | Tech | |---|---| | Frontend | Vite + React 18 + TypeScript | | Backend | Express + TypeScript | | Storage | JSON file (~/.alignmink-crm/data.json) | | Deck parsing | officeparser (PDF/PPTX/DOCX/ODT/RTF) | | LLM providers | OpenRouter, Anthropic direct | | Styling | direction-a-v3 design tokens, IBM Plex Sans + Mono |


License

Apache-2.0. See LICENSE and NOTICE.


Links

  • Alignmink — https://alignmink.ai
  • Issues — https://github.com/rajconnects/alignmink-investor-crm/issues