Curtis AI CRM
A CRM that lives in your notes.
Contacts, deals, and interactions are notes with YAML frontmatter — read by Obsidian's native Bases, portable forever, no lock-in.
What a contact looks like.
- name
- Ada Lovelace
- stage
- active
- last interaction
- call — 2026-10-08, pricing discussed
- follow-up
- due 2026-10-15 — the engine reminds you
There is no database. The scaffold command writes the folders and two Bases views — Pipeline.base and Follow-ups.base — over notes that any text editor can read, and anything can back up.
Shaped like your work.
Stages, pipeline, and interaction kinds are data, not code. Four library packs ship — sales, recruiting, real estate, freelance — and a pack is itself a note: duplicate one into Libraries/, edit its frontmatter, and the CRM re-shapes live. Sharing a CRM design is sharing a note.
The follow-up engine watches overdue and upcoming dates and scans for stale contacts, with reminders in-app. Quick capture works from anywhere — obsidian://curtis-crm?text=… from a mobile share sheet lands in Inbox.md for triage.
AI that does the upkeep.
Bring your own key — OpenAI-compatible endpoints, Anthropic, or Gemini, stored in Obsidian's secret storage, never in plugin data. One sentence becomes a contact, an interaction, and a follow-up date on a review screen; nothing is written until you approve. Ask the CRM questions in plain language. Draft a follow-up from the contact's own history — copy it or append it, never auto-sent. Duplicates are caught deterministically and merged only after review.
Under the hood.
The specification of record, straight from the manifest, the checklist, and the changelog.
- release
- 0.2.0 — built; release pending live-install verification
- data
- markdown + YAML frontmatter — Contacts/ · Deals/ · Interactions/
- views
- Pipeline.base · Follow-ups.base — native Obsidian Bases
- packs
- 4 built-in · your own is a note under Libraries/
- ai
- BYOK — OpenAI-compatible, Anthropic, Gemini · every write reviewed
- keys
- Obsidian secret storage (1.11.4+) — never in plugin data
- platforms
- Obsidian desktop + mobile · min app 1.9.10 (Bases mobile)
- tests
- 303 vitest cases
- license
- MIT — local-first, no telemetry
Not yet in the Obsidian community directory. v0.2.0 is built; what remains is live-install verification and the submission PR — until it merges, installing means copying files from the repository by hand.
The AI layer needs your key. Without one, everything else still works — capture, pipeline, follow-ups — the AI-assisted paths just wait. And duplicate detection is deterministic: same email, normalized name, or name plus company. Fuzzy near-matches pass through unflagged.
The record.
What has shipped so far, excerpted from the repository's changelog.
- foundation
- 0.1.0 — contacts, deals, interactions as markdown; store, dashboard, capture URI
- ai layer
- log with ai · ask the crm · draft follow-up · dedupe — on your key, behind review
- library packs
- the CRM's shape becomes data — four packs, or your own as a note
- onboarding
- dashboard empty state, one-click setup, MIT license, user guide