How to Build an AI-Powered CRM Inside Your Second Brain
Learn how to add a personal CRM to your AI second brain using Claude Code and Obsidian to track contacts, meetings, and conversations.
Why Your Second Brain Needs a Contact Layer
Most people who build a second brain focus on notes, ideas, and projects. They capture everything — meeting notes, book highlights, half-formed thoughts — but the people those ideas connect to stay scattered across email threads, LinkedIn, and a phone contacts app that never gets updated.
That’s a real gap. Relationships are context-heavy. Knowing what someone cares about, what you last discussed, and what you promised to follow up on is the difference between a warm conversation and starting from scratch every time.
An AI-powered CRM built inside your second brain solves this by keeping contact information where your thinking already lives. Using tools like Obsidian and Claude Code, you can build a personal relationship system that surfaces context automatically, drafts follow-ups, and connects people to the projects and notes that mention them — without paying for Salesforce or managing yet another app.
This guide walks through exactly how to build one.
What a Personal AI CRM Actually Does
Before getting into setup, it helps to be clear about what you’re actually building — because “CRM” means something different at the personal level than it does for a sales team.
A personal AI CRM does a few specific things:
- Stores structured contact profiles — name, role, company, how you met, what you talked about
- Links people to related notes — meeting notes, project files, email summaries
- Surfaces relevant history — before a call, you get a digest of everything you know about that person
- Drafts follow-ups — after a meeting, AI helps you write the email or next action
- Reminds you to stay in touch — with people you haven’t contacted in a while
Remy doesn't build the plumbing. It inherits it.
Other agents wire up auth, databases, models, and integrations from scratch every time you ask them to build something.
Remy ships with all of it from MindStudio — so every cycle goes into the app you actually want.
The “second brain” framing matters here. This isn’t a standalone database. It lives inside your existing note-taking system, so contact context flows naturally into how you think and work.
Obsidian is the most popular tool for this because it stores everything as local Markdown files, supports backlinks, and has a rich plugin ecosystem. Claude Code — Anthropic’s agentic coding environment — provides the AI reasoning layer that makes the system feel alive rather than static.
Setting Up Obsidian as Your CRM Foundation
Obsidian doesn’t have a built-in CRM mode, but its structure makes it well-suited for one. Here’s how to set it up.
Create a Dedicated People Vault Folder
Start by creating a /People folder inside your Obsidian vault. Every contact gets their own Markdown file. A consistent file naming convention helps — something like FirstName LastName.md.
Each contact file should have a YAML frontmatter block at the top for structured metadata. This is what lets you query, filter, and sort contacts later.
---
name: Sarah Chen
company: Meridian Labs
role: Head of Product
email: sarah@meridianlabs.com
met: 2024-11-12
last_contact: 2025-03-04
tags: [product, SaaS, warm]
---
Below the frontmatter, keep free-form sections:
## Background
Sarah leads product at Meridian. Previously at Stripe for 4 years.
Interested in AI-native workflows and async communication tools.
## Meeting Notes
- [[2025-03-04 Sarah Chen - Product Strategy Call]]
- [[2024-11-12 Sarah Chen - Intro Call]]
## Follow-ups
- [ ] Send her the Figma prototype by Friday
- [ ] Intro her to Marcus (overlap on AI tooling)
Install the Dataview Plugin
Dataview is a community plugin that lets you query your vault like a database. Once installed, you can create dynamic views like:
TABLE company, role, last_contact
FROM "People"
WHERE last_contact < date(today) - dur(30 days)
SORT last_contact ASC
This gives you a live “who haven’t I talked to recently” list — one of the most useful features in any CRM.
Set Up Meeting Note Templates
Create a /Templates folder with a meeting note template:
---
date: {{date}}
people: []
project:
type: meeting
---
## Attendees
-
## Key Points
## Action Items
- [ ]
## Follow-up Email Draft
The people field becomes the link between meeting notes and your contact profiles. When you add [[Sarah Chen]] to that field, Obsidian’s backlink system automatically shows that meeting on Sarah’s page.
Using Claude Code to Power the AI Layer
Obsidian gives you structure. Claude Code gives you intelligence. Here’s how to connect them.
What Claude Code Can See
Claude Code runs in your terminal and has access to your local file system. That means it can read and write your Obsidian vault directly — no API integration required, no third-party sync.
You point Claude at your vault directory and it can:
- Read all your contact files
- Read linked meeting notes
- Write new content back to those files
- Create new notes from a template
- Run structured tasks on demand
Setting Up Claude Code for Vault Access
First, make sure you have Claude Code installed and configured. Open a terminal session in your Obsidian vault directory:
cd ~/Documents/ObsidianVault
claude
From there, you can start giving Claude tasks that involve your people files. The key is giving Claude a clear understanding of your vault structure upfront.
Create a file called CLAUDE.md in your vault root — Claude Code reads this automatically as project context:
# Vault Structure
This is an Obsidian vault. Key folders:
- /People — one .md file per contact, with YAML frontmatter
- /Meetings — meeting notes, linked to contacts via [[wikilinks]]
- /Templates — note templates
## CRM Tasks I'll Ask You to Do
- After a meeting: update last_contact date, add meeting link, draft follow-up email
- Before a meeting: pull a contact brief from their file and linked notes
- Weekly: list contacts I haven't reached out to in 30+ days
- New contact: create a People file from minimal input
Core Claude Code Tasks
Task 1: Create a New Contact
After meeting someone, run:
Create a new People file for David Okafor. He's a VC at Sequoia,
focused on B2B SaaS. Met him at SaaStr on March 15.
His email is david@sequoia.com.
Claude reads your existing contact files to match the format, creates David Okafor.md with the right frontmatter, and places it in /People.
Task 2: Pre-Meeting Brief
Before a call, ask:
I have a call with Sarah Chen in 20 minutes. Pull together a brief
from her contact file and any linked meeting notes.
Highlight what we last talked about and any open action items.
Claude reads Sarah Chen.md, follows the backlinks to her meeting notes, and generates a clean summary — all from your local vault.
Task 3: Post-Meeting Update
After a meeting:
Just finished a call with Sarah Chen. We discussed her team's
migration to an AI-native workflow. I promised to send her
the Meridian case study. Update her contact file with today's date,
add a new meeting note from the template, and draft a follow-up email.
Claude handles all three steps: updates the last_contact field in frontmatter, creates a new meeting note in /Meetings, and drafts the email in the meeting note file.
Task 4: Weekly Relationship Review
Set up a weekly reminder to run:
Show me all contacts in /People where last_contact is more than
30 days ago. Group them by tag (warm, cold, investor, etc.)
and suggest a short outreach message for each.
This is your relationship maintenance list, generated from your own notes.
Automating the Workflow: Scripts and Scheduled Tasks
Running Claude manually works, but you can push this further with lightweight automation.
Shell Scripts for Common Tasks
Create a crm-brief.sh script:
#!/bin/bash
CONTACT="$1"
cd ~/Documents/ObsidianVault
claude --print "Generate a pre-meeting brief for $CONTACT.
Read their file in /People and any linked meeting notes.
Format as: Background, Last Discussed, Open Items."
Run it as ./crm-brief.sh "Sarah Chen" and get your brief in seconds.
Scheduled Weekly Reviews
Use a cron job to run your weekly relationship review automatically:
# Run every Monday at 8am
0 8 * * 1 cd ~/Documents/ObsidianVault && claude --print \
"List contacts in /People with last_contact > 30 days ago.
Output as a markdown table with name, company, days since contact." \
>> ~/CRM-Weekly-$(date +\%Y-\%m-\%d).md
Built like a system. Not vibe-coded.
Remy manages the project — every layer architected, not stitched together at the last second.
The output lands in a weekly review file you can open in Obsidian.
Connecting Email and Calendar
If you want to pull meeting data from your calendar or email automatically, this is where the system needs a bit more infrastructure. You can use AppleScript or Python scripts to export calendar events, then pass them to Claude for processing.
A simple approach: export your daily agenda as a text file each morning, then have Claude cross-reference it with your /People folder to surface relevant contact context for each meeting.
Where MindStudio Fits In
The Obsidian + Claude Code setup works well for individuals who are comfortable in the terminal. But if you want to extend this CRM to work across your team, or connect it to real business tools like Gmail, HubSpot, or Notion — that’s where MindStudio becomes useful.
MindStudio’s Agent Skills Plugin is an npm SDK (@mindstudio-ai/agent) that lets Claude Code call 120+ typed capabilities as simple method calls. Instead of building your own email integration or Google Calendar connector, Claude Code can call methods like agent.sendEmail() or agent.searchGoogle() directly — with MindStudio handling authentication, rate limiting, and retries in the background.
In practice, this means your personal CRM can do things like:
- Send the follow-up email Claude drafts, directly from your inbox
- Look up a contact’s LinkedIn before a meeting to pull fresh context
- Log a note to HubSpot or Notion for contacts that live in team systems too
- Trigger a Slack message to a colleague when you agree to make an intro
Here’s what a MindStudio-connected post-meeting task looks like from Claude Code:
import MindStudio from '@mindstudio-ai/agent';
const agent = new MindStudio();
// Send the follow-up email Claude drafted
await agent.sendEmail({
to: 'sarah@meridianlabs.com',
subject: 'Following up from our call',
body: draftedFollowUp
});
// Log the contact update to Notion
await agent.runWorkflow('update-contact-crm', {
contact: 'Sarah Chen',
lastContact: new Date().toISOString(),
notes: meetingSummary
});
This bridges the gap between a local knowledge system and the broader tools your work actually runs through. You can try MindStudio free at mindstudio.ai.
For teams that want to build a fully shared AI-powered CRM — one that multiple people can query and update — MindStudio’s no-code workflow builder also lets you create agents that do this without any code at all. The workflow automation capabilities connect directly to 1,000+ tools, so you can build a shared relationship intelligence system that works across a whole organization.
Common Mistakes to Avoid
Overcomplicating the Contact Schema
The temptation is to build an elaborate system with dozens of frontmatter fields. Resist it. Start with six to eight fields you’ll actually update. An empty field in a perfectly designed system is useless.
Not Linking Meeting Notes to Contacts
The whole point of doing this in Obsidian is the backlink graph. If you don’t add [[Contact Name]] to your meeting notes, the system stays siloed. Make it a habit — add it to your meeting note template so it’s impossible to forget.
Relying Only on Claude for Data Entry
Claude is great at processing and generating. It’s slower at replacing the habit of capturing. The best setups use Claude to handle the tedious parts — formatting, drafting, surfacing — while you handle the raw capture quickly in the moment.
Treating This Like a Traditional CRM
You don’t need to log every touchpoint or score every contact. Personal CRMs work best when they’re lightweight. Use yours to surface context before important interactions, not to track activity metrics.
Frequently Asked Questions
What is a second brain CRM?
A second brain CRM is a personal relationship management system that lives inside your note-taking vault — tools like Obsidian, Notion, or Roam. Instead of a separate app, contacts and conversation history sit alongside your notes, projects, and ideas, so they connect to each other naturally. The “AI-powered” part means an AI model can query, summarize, and update that information on your behalf.
Do I need to know how to code to build this?
For the Obsidian + Claude Code setup described here, you need to be comfortable with the terminal and basic Markdown. You don’t need to write traditional software code — Claude writes and edits the files for you. If you want to skip the technical parts entirely, tools like MindStudio let you build similar workflows visually, with no code required.
Is Obsidian the only tool that works for this?
No. Obsidian works well because it’s file-based and local, which makes it easy for Claude Code to read and write directly. But you can apply the same principles in Notion, Logseq, or even a folder of plain text files. The tradeoff is that cloud-based tools require API integrations rather than direct file access.
How is this different from just using HubSpot or a regular CRM?
Traditional CRMs are designed for teams managing pipelines, not individuals managing relationships. They’re built around contacts, deals, and stages — not the kind of contextual, linked thinking that a personal knowledge system supports. A second brain CRM connects people to the projects, ideas, and conversations they relate to, rather than treating them as records in a database.
Can Claude Code update contacts automatically, without me asking?
With some setup, yes. You can write scripts that watch for new meeting notes and trigger Claude to update the relevant contact file automatically. Or you can use a scheduled cron job to run weekly review tasks without manual prompting. The more you define the rules upfront (in your CLAUDE.md file), the more autonomously Claude can operate.
What about privacy? My contacts are sensitive data.
One of the main advantages of this setup is that everything stays local on your machine. Obsidian stores files locally by default. Claude Code processes them through Anthropic’s API, so note that content does pass through their servers during processing — review Anthropic’s privacy policy if that’s a concern for your use case. For most personal use, this is a reasonable tradeoff compared to storing contact data in a third-party CRM.
Key Takeaways
- A personal AI CRM built in Obsidian keeps contact context alongside your notes, projects, and ideas — where your thinking already lives.
- YAML frontmatter + Dataview queries turn plain Markdown files into a queryable relationship database.
- Claude Code can read and write your Obsidian vault directly, handling tasks like creating contact profiles, generating pre-meeting briefs, and drafting follow-up emails.
- Shell scripts and cron jobs let you automate routine tasks like weekly relationship reviews without manual prompting.
- For teams or anyone who wants to connect this system to email, HubSpot, Slack, or other tools, MindStudio’s Agent Skills Plugin gives Claude Code direct access to 120+ integrations with minimal setup.
Remy is new. The platform isn't.
Remy is the latest expression of years of platform work. Not a hastily wrapped LLM.
If you want to extend your second brain CRM beyond local files, explore what you can build with MindStudio — it’s free to start and connects to the tools you’re already using.