Skip to content

Repository files navigation

IR Kit

English · 繁體中文 · 日本語 · 한국어 · Español · Français

The agent-native IR system: run investor relations like you have a team of ten — even if it's just you and an AI agent.

Most founders learn IR by losing: a diligence that stalls on a messy SAFE stack, an update streak that dies the first bad month, a data room assembled in a panic the week a term sheet shows up. The founders who raise well aren't smarter — they run a system. IR Kit is that system, open-sourced: the tools and the operating doctrine of an A-class startup's investor relations, runnable by any founder, anywhere, for free.

IR Kit dashboard — burn, runway, traction, round progress, update cadence

▶ Try the live demo — sample company, your edits stay in your browser · see the cap table & SAFE ledger

  • 📊 Financial command center — monthly close, burn/runway/zero-cash date, KPI dashboard, runway scenarios for hiring decisions
  • 🧮 Cap table & SAFE math — SAFE ledger with implied ownership, a priced-round modeler using real post-money SAFE mechanics, founder dilution walk to Series A, exit waterfall
  • 🤝 Investor CRM — round commitments with weighted pipeline, interaction log, asks tracker, update distribution segments
  • ✉️ Update composer — monthly updates in the TL;DR-first format tier-1 investors (YC, a16z, Sequoia) expect, metrics auto-filled from your financials, plus the archive a future lead will read back-to-back
  • 📚 Playbooks — update doctrine, batch fundraising process, tiered data-room checklists (interactive), board pack structure, hard-question FAQ frames, diligence-grade metric definitions
  • 🤖 Agent harness — prompt sets and a private workspace scaffold so your coding agent (Claude Code, Cursor, …) operates the whole system with you
  • 🌐 Six languages — the dashboard switches between English, 繁體中文, 日本語, 한국어, Español, and Français (sidebar picker); CI enforces full locale coverage on every contribution

Quickstart

git clone https://github.com/howieyoung/ir-kit && cd ir-kit
node server.js                      # Node 18+, zero dependencies — that's the whole install
# → http://127.0.0.1:2330
node scripts/init-workspace.js      # scaffold your private data room / board / CRM folders
./bin/ir.js status                  # the same system, from the command line
# then hand your agent prompts/onboard.md — it populates the system with your real data

Explore with the built-in sample company, then replace it with yours (Settings → profile, or hand your agent prompts/monthly-close.md).

Learn it in 10 minutes

→ The tutorial — also built into the app as the Get started page:

  • Use it with your agent — onboarding in one conversation, the prompt rituals, and putting your agent on a schedule so the update draft is waiting for you on update day
  • Use it yourself — the first-30-minutes walkthrough and the monthly rhythm
  • Cap table 101 — never seen a SAFE? Ten minutes to using the modeler confidently
  • Glossary — every term in the kit, one line each

The kit also tracks your cadence: the dashboard shows when the next update is due (and your streak), and Updates → Schedule exports a recurring calendar file for update day + quarterly board packs.

Your data stays yours — by architecture

This is the part that matters, so it's not a policy, it's the design:

Where your data lives What the public sees
Self-hosted (default) Plain JSON in data/ + files in ir-workspace/ — both gitignored, both local Nothing
Static demo hosting Each visitor's browser localStorage only The fictional sample company
  • The repo ships only a fictional sample company ("Protico" is used as the sample brand; every number, investor, and contact is invented).
  • data/ and ir-workspace/ are gitignored, so a fork can't accidentally publish a cap table.
  • The server binds to 127.0.0.1 by default and has no accounts to breach — there's nothing to sign up for and no one else's infrastructure holding your SAFEs. It's hardened against the classic local-service attacks (DNS-rebinding, clickjacking, path traversal), verified by a smoke test in CI — see SECURITY.md.
  • Back up by making data/ + ir-workspace/ a separate private repo, or export everything as one JSON from Settings.
  • One honest caveat about AI agents: IR Kit itself never sends your data anywhere, but a cloud-backed agent (Claude, Codex, Cursor…) processes what it reads through its provider. That's a trust boundary you control — use a local model for fully-offline operation. Details in SECURITY.md.

Operate it with your agent

This is the part no other IR tool has: a first-class programmatic surface, so your coding agent (Claude Code, Codex, Cursor, …) is a peer of the browser UI — not a hack on top of it.

Day one is two words: tell your agent "ir start".

  1. git clone + node server.js — the app runs immediately with a sample company.
  2. Open your coding agent in the repo folder — it reads AGENTS.md automatically.
  3. Say: "ir start". The agent scaffolds everything (including a document inbox folder), states the ground rules, and guides you from there.
  4. Drop every financial/company document into the inbox — SAFEs, bank statements, cap tables, decks, completely unsorted is fine. (Docs scattered across your disk? It can ir scan folders you appoint instead — filenames only, nothing opened without your OK.)
  5. ir sort files everything into the right data-room categories — re-runnable any time you add more documents; it's a standing filing service, not a one-off.
  6. With your consent it reads the sorted documents and extracts your real cap table, SAFEs, and monthly financials — every number cited to a source document; ambiguities go to an open-questions list, never guessed.
  7. ir check passes, it walks you through the dashboard, you confirm → your company, real data. Provided nothing? The dashboard simply keeps its sample data. Nothing uploaded anywhere, ever.
$ ./bin/ir.js start
✓ workspace scaffolded (18 files) — inbox: ir-workspace/inbox
stage: collect · SAMPLE data · inbox 0 · data room 0
NEXT: drop every financial/company document into the inbox, then run: ir sort
Ground rules: consent before reading contents · originals read-only · every number cited · nothing leaves this machine.

$ ./bin/ir.js safe add "Meridian Capital" --principal 50000 --cap 8000000 --status Wired
✓ SAFE recorded — Meridian Capital $50,000 · implied 0.6%
✓ total SAFE overhang 4.8% (guardrail <15%)
✓ CRM reconciled — commitment → Wired · added to update distribution
round: $50,000 of $750,000 signed/wired
→ same-day ritual: countersign + send executed doc + thank-you note

$ ./bin/ir.js check
✓ ok — 0 errors, 0 warning(s)

$ ./bin/ir.js status --json | jq .financials.runwayMonths
22.0

Three layers make it agent-native:

  • The ir CLI — a verb for every ritual, humans welcome too. Full reference with examples: docs/CLI.md.

    Command What it does
    ir start begin here — guided-setup state machine: scaffolds everything (incl. the document inbox), detects your stage, prints the next step; safe to re-run
    ir sort file inbox documents into data-room categories by filename — re-runnable any time; a standing filing service
    ir status every derived metric in one call (burn, runway, round, SAFE overhang)
    ir check validate schemas + invariants — the post-edit test suite (exit 1 on violations)
    ir close-month 2026-07 --saas … --ads … --fde … --other-rev … close the books with the four-way revenue split; flags >20% MoM moves and short runway
    ir safe add "Fund X" --principal … record a SAFE and reconcile cap table + CRM + distribution in one pass
    ir prospect add "Fund Y" --fit … --source … log a sourced investor safely: inactive nurture row + no-ticket pipeline entry, so unqualified names never inflate your numbers
    ir update draft / mark-sent metrics-filled draft from actuals (blocked if month isn't closed) / archive + streak
    ir scan <folders> onboarding: find candidate financial docs by filename only — contents never read
    ir model round --pre … --new … priced-round conversion with post-money SAFE mechanics
    ir export board-pack|tearsheet|captable board pack, one-pager, diligence CSV — generated from actuals
    ir schedule show cron lines for the monthly rituals

    All commands take --json; errors exit 1. One safe add keeps four collections consistent — the invariants live in code, not in a prompt's good intentions.

  • ir check — the agent's test suite: schema validation + cross-collection invariants (ledger↔CRM reconciliation, month continuity, the 15% SAFE-overhang guardrail). Any agent that edits JSON directly verifies its own work.

  • AGENTS.md — the vendor-neutral contract every agent reads on arrival: capability map, schemas, privacy rules, and the prompt rituals in prompts/ (monthly close, SAFE signed, meeting prep, data-room audit, round kickoff, scheduling).

That's the "IR team of ten": the system remembers the cadence and enforces the invariants, the agent does the clerical work, you make the calls.

Deploying

  • For yourself: it's a local app; you're done. On a server (Fly/Railway/VPS/Docker): HOST=0.0.0.0 node server.js — ⚠️ no built-in auth; put it behind Cloudflare Access/Tailscale/basic auth. Your cap table is on this thing.
  • Public demo for others: host public/ on any static host (this repo auto-deploys it to GitHub Pages). No server → demo mode → visitors' edits stay in their own browsers.

What this is not

Not legal advice (conversion math is a planning tool; counsel and the instruments decide), not a Carta/Pulley replacement (no 409A, no share issuance — export to those when you price a round), and deliberately not a multi-tenant SaaS — hosting strangers' cap tables is an auth/encryption/compliance product; this kit's answer is that nobody should have to upload their cap table to use good IR tooling.

Contributing / roadmap

Small, dependency-free PRs welcome. Wanted next: configurable traction-metric columns (currently sample-company-shaped: traffic/pages/platforms), CSV import for financials, opt-in scheduled sending via bring-your-own SMTP, priced-round (non-SAFE) ledger entries, more playbooks (debt, bridge, secondaries), localization. Keep the promises: zero deps, no build step, local-first, agent-editable JSON. See SECURITY.md for the security model.

MIT © Howie Young

About

Run investor relations like you have an IR team of ten. Open-source, local-first IR system for founders: cap table & SAFE math, financial dashboard, investor CRM, update composer, data-room playbooks — built to be operated with your AI agent.

Topics

Resources

Contributing

Security policy

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages