A personal tool for product managers. All five tools ship in the current version, powered by the same plug-in feature architecture:
- Meeting Notes — extract decisions, action items, and open questions from raw transcripts (Claude).
- RICE Scorer — score and rank ideas by (Reach × Impact × Confidence) / Effort (local CRUD, no LLM).
- Feedback Themes — cluster raw user feedback into named themes with counts, sentiment, and example quotes (Claude).
- Competitor Tracker — log competitors and their moves (launches, news, updates); optionally paste text and let the AI summarize it into a structured entry (Claude).
- PRD Formatter — turn rough notes into a structured PRD with problem, goals, non-goals, solution, metrics, risks, and open questions (Claude).
- Client: React + Vite + TypeScript + Tailwind CSS
- Server: Node.js + Express + TypeScript
- Database: SQLite (via
better-sqlite3) — single file atserver/data/pm-buddy.sqlite - LLM: Anthropic Claude via
@anthropic-ai/sdk
Requires Node.js 20+.
# 1. Install dependencies for root, server, and client
npm run install:all
# 2. Configure your API key
cp .env.example .env
# then edit .env and set ANTHROPIC_API_KEY
# 3. Start both server and client with one command
npm run devThe client runs at http://localhost:5173 and proxies /api/* to the server at http://localhost:3001.
pm-buddy/
server/ Express + SQLite backend, feature-scoped modules under src/features/
client/ Vite + React frontend, feature-scoped modules under src/features/
shared/ Types shared between client and server
Each tool lives in its own features/<tool-id>/ folder on both client and server. Adding a new tool = drop in a new folder and register it in client/src/features/registry.tsx (and, on the server, server/src/features/index.ts).
All LLM-backed features use the shared server/src/llm.ts helper (callClaudeJson) so they stay consistent on model, error handling, and JSON parsing.
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
yes | API key for Anthropic Claude |
PORT |
no | Server port (default 3001) |