A simple, local-first networking and lightweight CRM system built entirely with Markdown files.
No subscriptions. No lock-in. No bloated sales pipeline. Just plain text you control.
This project is designed for people who want to remember people, follow up with care, share useful knowledge, make thoughtful introductions, and keep a useful communication history without handing their relationship data to another SaaS platform.
CRM in Markdown is a Markdown-first, Obsidian-enhanced networking system.
It helps you track and nurture relationships with:
- Friends
- Collaborators
- Clients
- Leads
- Mentors
- Community relationships
The system is intentionally simple: one person = one contact note.
Each contact note includes the person’s profile, relationship type, relationship tier, follow-up rhythm, next contact date, and communication log.
This is not a heavy sales CRM.
It does not try to replace Salesforce, HubSpot, or a full business automation platform. It is a calm, human-scale system for staying in touch with people who matter.
This is also not a cold outreach machine. The goal is not to squeeze value from relationships. The goal is to remember people, help where you can, and stay connected in a thoughtful way.
Most networking systems fail because they become another job.
This system is built around a 30-second habit:
- Open the person’s contact note.
- Add a short communication log entry.
- Update
last_contacted. - Update
next_contact_due. - Move on.
Consistency matters more than complexity.
The best networking is generous: share useful resources, make good introductions, say thank you, and follow up when it actually matters.
- One Markdown file per person
- One communication log per person
- Monthly, quarterly, yearly, and custom follow-up cadences
- Manual next-contact dates for real flexibility
- Obsidian Bases dashboards for reminders
- Contact Today, Overdue, and This Week views
- Relationship tiers so not everyone gets the same attention
- Personal and business fields
- QuickAdd setup guide for fast contact creation, communication logging, and monthly reviews
- Reusable value-first networking message templates
- Templates for contacts, companies, communication logs, and monthly reviews
- Example data you can delete or adapt
Markdown gives you:
- Ownership — your relationship data is just files
- Portability — works with Obsidian, Logseq, VS Code, or any text editor
- Longevity — plain text will still open years from now
- Control — no forced workflow, no subscription, no lock-in
- Simplicity — the system is only as complicated as you make it
Obsidian Bases adds database-like views on top of your Markdown notes and note properties.
This repo includes .base files for:
- Follow-up reminders
- Contact lists
- Relationship views
You can still use the system without Obsidian Bases, but Bases makes the dashboard much easier.
Run this as its own Obsidian vault.
Recommended vault name:
People
Use the GitHub repo folder itself as the vault folder.
This keeps your networking system separate from your writing, personal notes, and project vaults.
This repo uses a flatter structure on purpose, but real contacts, reviews, samples, and reusable message templates are separated.
crm-markdown/
├── README.md
├── QuickAdd Setup.md
├── Networking Dashboard.md
├── Follow-Up Dashboard.base
├── Contacts.base
├── contacts/
│ └── README.md
├── reviews/
│ └── README.md
├── message-templates/
│ ├── README.md
│ ├── Warm Check-In.md
│ ├── Follow-Up After No Reply.md
│ ├── Meeting Follow-Up.md
│ ├── Send Resource.md
│ ├── Ask for Introduction.md
│ ├── Make an Introduction.md
│ ├── Thank You.md
│ └── Reconnection.md
├── templates/
│ ├── Contact Template.md
│ ├── Communication Log Entry Template.md
│ ├── Company Template.md
│ └── Monthly Review Template.md
├── samples/
│ ├── Jane Doe - Acme Inc.md
│ ├── Marcus Lee - Collaborator.md
│ ├── Ana Rivera - Community.md
│ ├── Evelyn Park - Mentor.md
│ ├── Sam Patel - Lead.md
│ └── Lena Brooks - Friend.md
└── archive/
└── README.md
Put real people in:
contacts/
Recommended filename format:
First Last.md
Examples:
contacts/Jane Doe.md
contacts/Sam Patel.md
contacts/Evelyn Park.md
Do not put real contacts in samples/.
Put monthly relationship reviews in:
reviews/
Recommended filename format:
YYYY-MM Monthly Relationship Review.md
Example:
reviews/2026-06 Monthly Relationship Review.md
Put reusable networking messages in:
message-templates/
These are message templates you might send by email, text, WhatsApp, or DM.
Keep them separate from templates/, which is for Obsidian note templates.
Put system templates in:
templates/
This folder is for:
- Contact note templates
- Company note templates
- Communication log entry templates
- Monthly review templates
The samples/ folder contains fake contacts so you can see how the system works.
Delete or ignore them when you are ready to use the vault for real.
Move inactive contacts to:
archive/
Before archiving a contact, update:
status: "archive"
relationship_tier: "archive"
archive_reason: ""Each person gets one contact note.
A contact note includes:
- Contact details
- Relationship type
- Relationship tier
- Follow-up cadence
- Last contacted date
- Next contact due date
- Reason to contact
- Last meaningful topic
- Optional personal fields
- Optional business fields
- Communication log
- Open tasks
Use these for relationship_type:
friendcollaboratorclientleadmentorcommunity
You can add your own, but keep the list small. Too many categories make the system annoying to maintain.
Use these for relationship_tier:
core— people who matter mostactive— current clients, collaborators, close peerswarm— good relationships worth maintainingloose— occasional contact onlyarchive— inactive or no longer relevant
This is important. Not every contact deserves the same reminder rhythm.
Use these for contact_cadence:
monthlyquarterlytwice-yearlyyearlycustomnone
The cadence is the rhythm. The real reminder is next_contact_due.
This gives you both structure and flexibility.
Open Networking Dashboard.md in Obsidian.
It uses the main views from Follow-Up Dashboard.base:
- Contact Today — people due today
- Overdue — people you should have already contacted
- This Week — people coming up soon
Each person has one communication log inside their contact note.
Log meaningful contact, including:
- Text / WhatsApp
- Phone call
- Zoom call
- In-person meeting
- Commented on their post
- Sent article/resource
- Sent gift/card
- Introduced them to someone
- They contacted you
Do not over-log tiny social media interactions unless they matter. The point is memory and follow-through, not surveillance.
After you contact someone, add a short entry like this:
### 2026-06-12 — Email
- **Direction:** Outbound
- **Summary:** Sent a useful article about analog planning.
- **Next step:** Ask how their launch went.
- **Next contact due:** 2026-07-12Then update the properties at the top of the note:
last_contacted: 2026-06-12
next_contact_due: 2026-07-12
contact_reason: Ask how their launch went.
last_meaningful_topic: They were preparing a new course launch.That is the whole system.
See:
QuickAdd Setup.md
Recommended QuickAdd actions:
People: New Contact
People: Log Communication
People: Monthly Review
Recommended Mac hotkeys:
Cmd + Option + C → People: New Contact
Cmd + Shift + L → People: Log Communication
Cmd + Shift + M → People: Monthly Review
Recommended Windows/Linux hotkeys:
Ctrl + Alt + C → People: New Contact
Ctrl + Shift + L → People: Log Communication
Ctrl + Shift + M → People: Monthly Review
The message-templates/ folder includes starter templates for value-first networking:
Warm Check-In.mdFollow-Up After No Reply.mdMeeting Follow-Up.mdSend Resource.mdAsk for Introduction.mdMake an Introduction.mdThank You.mdReconnection.md
Use these as starting points, not scripts.
Before sending, personalize at least one real detail from the contact note.
The best networking messages should communicate:
- I remembered you.
- I listened.
- I thought this might help.
- I am not trying to pressure you.
- I value the relationship.
Open Networking Dashboard.md and check:
- Contact Today
- Overdue
- This Week
Contact only the people who actually make sense today.
- Open the contact note.
- Add one communication log entry.
- Update
last_contacted. - Update
next_contact_due. - Update
contact_reasonif there is a clear next reason.
Use templates/Monthly Review Template.md or QuickAdd’s People: Monthly Review action to review:
- Who you contacted
- Who you neglected
- Which relationships matter now
- Who should be archived
- Who deserves more attention next month
- What resources, introductions, or thank-you notes you should send
- Clone or download this repo.
- Open this folder as its own Obsidian vault.
- Name the vault
Peopleif you want a simple, human name. - Turn on the Bases core plugin in Obsidian.
- Install QuickAdd if you want fast capture workflows.
- Open
Networking Dashboard.md. - Review the sample contacts.
- Duplicate
templates/Contact Template.mdor use QuickAdd to create your first real contact. - Put real contacts in
contacts/. - Delete the sample contacts when you no longer need them.
Recommended theme:
Minimal
Recommended core plugins:
- Bases
- Templates
- Backlinks
- Page Preview
- File Recovery
Recommended community plugins:
- Minimal Theme Settings
- QuickAdd
- Obsidian Git, if you want GitHub sync/versioning
Optional later:
- Tasks, only if contact-note tasks become hard to manage
Avoid adding too many plugins at first. This vault should stay fast and calm.
You can still use this system in any Markdown editor.
Without Obsidian Bases, use search for:
next_contact_due: 2026-06
relationship_tier: core
relationship_type: mentor
The data is still plain Markdown.
- Keep one note per person.
- Put real contacts in
contacts/. - Keep the communication log inside that person’s note.
- Update the next due date manually.
- Use cadence as guidance, not law.
- Use message templates as starting points, not scripts.
- Personalize every message before sending.
- Share resources when they are truly useful.
- Make introductions with care.
- Say thank you specifically.
- Archive people without guilt.
- Do not turn this into a second inbox.
- Do not over-track people.
- Keep it human.
You can add:
- More relationship types
- More sample people
- More message templates
- More
.baseviews - Scripts for automatic due-date updates
- Dataview queries if you prefer Dataview
- Sync using Git, iCloud, Dropbox, Syncthing, or Obsidian Sync
But start simple first.
This project is licensed under the GPL-2.0 License.
A good networking system should help you be more thoughtful, not more mechanical.
Use this to remember people, follow up when it matters, share what is useful, make meaningful introductions, and build stronger relationships without turning your life into a sales dashboard.