Interactive demo · all data fictional

Siryous CRM

A local-first, AI-native personal CRM for relationship-driven business development. One SQLite file, three doors in — a web app, Claude Desktop via MCP, and built-in AI features that draft the busywork while you keep the judgment.

Best experienced starting at the Dashboard — every page has an ⓘ explainer of what it does and how it works.

Local-first

Everything lives in one SQLite file on your own machine. No cloud, no accounts, no sync — the web app, the MCP server, and the AI features all read and write the same database, so nothing is ever stale.

AI where it pays

Claude runs headless with explicit read-only tool grants — web search for intake research, Zoom/Gmail readers for logging, Calendar+Gmail+web for meeting prep. It drafts; a human review screen approves. Nothing writes itself.

Opinionated about relationships

Not a sales pipeline with contacts bolted on: urgency buckets ask "whose move is it?", cadences keep warm relationships warm, and profiles capture relationship intelligence — origin, mutuals, strategy — in editable markdown.

Tour the features

The demo is the full app running on a fictional dataset — 16 people, 9 companies, 10 deals, and a month of activity. Click anything; changes are live and reset periodically. AI features are scripted simulations of the real flows.

Under the hood

The production app is Next.js (App Router) with React Server Components and server actions over better-sqlite3 — no client-side state libraries, no ORM, forms are plain HTML posting to server actions. The database is the single source of truth for three clients: this web UI, Claude Desktop (through a 16-tool MCP server), and Claude Code sessions in the repo.

The AI features spawn the locally installed Claude Code CLI in headless mode — same subscription as Claude Desktop, no API key — each with a minimal read-only tool grant. Every AI output lands on a review screen before anything is saved.

This demo swaps SQLite for an in-memory fictional dataset and the CLI calls for scripted simulations, so it deploys anywhere Node runs — but the pages, components, and flows are the real ones.

System shape
┌─────────────┐  ┌────────────────┐  ┌──────────────┐
│   Web app   │  │ Claude Desktop │  │ Claude Code  │
│  (Next.js)  │  │  (MCP server,  │  │  (sessions   │
│             │  │   16 tools)    │  │   in repo)   │
└──────┬──────┘  └───────┬────────┘  └──────┬───────┘
       │                 │                  │
       ▼                 ▼                  ▼
            ┌─────────────────────────┐
            │   data/crm.db (SQLite)  │
            │   single source of truth │
            └─────────────────────────┘
       ▲
       │ headless claude -p (read-only grants)
┌──────┴───────────────────────────────┐
│  ✨ Intake     ✎ Log      🗓 Prep     │
│  web search   Zoom/Gmail  Cal+Gmail  │
└──────────────────────────────────────┘