CRM System Architecture
Status: Production (132+ contacts)
Overview
Section titled “Overview”The CRM is a file-based contact management system. Every person mentioned in agent interactions gets an entry. Entries are markdown files with YAML frontmatter, stored in a vault for cross-referencing.
Storage Format
Section titled “Storage Format”Each person gets either a single markdown file or a directory:
memory/entities/people/├── jane-smith.md # Simple contact├── john-doe/ # Rich contact│ ├── PROFILE.md # Main profile│ ├── summary.md # AI-generated summary│ └── items.json # Structured dataMarkdown Profile Template
Section titled “Markdown Profile Template”---name: "Full Name"slug: first-lastdomain: consulting | school | familytags: [vip, investor, professor]email: email@example.comcompany: "Company Name"role: "Title"relationship: client | colleague | professor | familylast_contact: 2026-04-10---
## Notes- Met at [event] on [date]- Interested in [topic]
## Interaction Log- 2026-04-10: Discussed X via email- 2026-04-09: Initial outreach on LinkedInAuto-Creation
Section titled “Auto-Creation”The key rule that makes CRM automatic:
“CRM Everything: whenever a person’s name comes up, check or create their entry with contact info and interaction log.”
This single instruction in the agent’s system prompt means contacts accumulate passively through normal conversations. No manual data entry required.
Dashboard Integration
Section titled “Dashboard Integration”The dashboard CRM page:
- Reads all contacts from the people directory
- Parses both single
.mdfiles and directory structures - Search by name, email, company
- Filter by domain
- Expandable cards with full contact details
Cloud Deployment
Section titled “Cloud Deployment”Since cloud hosting can’t read local filesystem at runtime, a build-time snapshot generator creates crm-snapshot.json. The API route tries filesystem first, falls back to snapshot.
VIP Contacts
Section titled “VIP Contacts”A separate VIP list tracks high-priority contacts for email triage and morning briefing prioritization.