Over the last year I’ve been building a personal CRM inside Obsidian, inspired by Judy Robinett’s 5/50/100 framework and my own relationship thesis. It worked well for a while, but the files had grown messy: inconsistent YAML front-matter, redundant fields like overdue
, and tags that didn’t really add value.
So this week I hit reset.
Why Reset?
- Clarity: Too many legacy fields made it hard to trust the data.
- Automation: I want to run simple Dataview queries like “who’s overdue?” without wrestling with inconsistent metadata.
- Longevity: The schema should still make sense 5 years from now, not just this quarter.
The New Schema
Each contact now starts with a clean YAML block:
---
fullname:
role:
company:
location:
ecosystem:
ecosystem_role:
power_circle: 900
closeness: 3
cadence: 90
last_contacted: 2025-09-08
date_added: 2025-09-08
strategic_value:
value_to_them:
interests:
resources:
status: active
tags: []
---
A few principles:
- Minimal & consistent → only the fields I’ll actually use.
- Machine-friendly →
cadence
andlast_contacted
allow Dataview to calculate who’s due for a check-in. - Human-friendly →
strategic_value
,value_to_them
, andinterests
help me write authentic notes and add value. - Standardized →
power_circle
andecosystem
align to my networking thesis.
How I Did It
I wrote a small Python script to:
- Strip old YAML front-matter.
- Rebuild a new schema from scratch.
- Preserve (or wipe) the Markdown body depending on flags.
What’s Next
With this foundation, I can:
- Query in Dataview for overdue contacts.
- Slice by ecosystem or closeness.
- Add authentic context in the Markdown body (
## Interaction Log
) without bloating YAML.
It feels like a clean slate. The messy data is gone, and I now have a networking system I can trust—something that should scale as my 5/50/100 grows.