Curtis.

Curtis AI CRM.

A CRM that lives in your vault. 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.

CURTIS AI CRM — ONE CONTACT, AS KEPT
MARKDOWN + FRONTMATTER · UNDER CURTIS CRM/ (CONFIGURABLE)
nameAda Lovelace
stageactive
last interactioncall — 2026-10-08, pricing discussed
follow-updue 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.

Read the guide on GitHub

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.

release0.2.0 — built; release pending live-install verification
datamarkdown + YAML frontmatter — Contacts/ · Deals/ · Interactions/
viewsPipeline.base · Follow-ups.base — native Obsidian Bases
packs4 built-in · your own is a note under Libraries/
aiBYOK — OpenAI-compatible, Anthropic, Gemini · every write reviewed
keysObsidian secret storage (1.11.4+) — never in plugin data
platformsObsidian desktop + mobile · min app 1.9.10 (Bases mobile)
tests61 vitest cases
licenseMIT — local-first, no telemetry
NOT YET — STATED PLAINLY

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.

CURTIS AI CRM — CHANGELOG EXCERPT
0.1.0 → 0.2.0 · THE FULL LEDGER LIVES IN THE REPOSITORY
foundation0.1.0 — contacts, deals, interactions as markdown; store, dashboard, capture URI
ai layerlog with ai · ask the crm · draft follow-up · dedupe — on your key, behind review
library packsthe CRM's shape becomes data — four packs, or your own as a note
onboardingdashboard empty state, one-click setup, MIT license, user guide