personal-crm
Track interactions, follow-ups, and relationship context for personal contacts
Personal CRM
A lightweight personal CRM for tracking relationships, conversations, and follow-ups. Never forget important context about the people you talk to.
Quick Start
# Add a contact
node scripts/personal-crm.js add-contact "Alice" --email [email protected] --tags friend,tech
# Log an interaction
node scripts/personal-crm.js log-interaction alice "Discussed her new startup idea. She's looking for feedback on the MVP."
# View reminders
node scripts/personal-crm.js list-reminders
# Search contacts
node scripts/personal-crm.js search --tag tech
# View contact history
node scripts/personal-crm.js view alice
Features
š Contact Management
- Store names, emails, tags, custom fields
- Quick search by name or tag
- Flexible JSON storage (no database needed)
š¬ Interaction Logging
- Record conversations with timestamps and context
- Supports manual entry and auto-logging from chat platforms
- Link interactions to contacts automatically
ā° Smart Reminders
- Get follow-up suggestions based on interaction frequency
- "You haven't talked to Alice in 30 days"
- Configurable rules per contact or tag
š Search & Query
- Find contacts by tag, name, or date range
- View full interaction history
- Filter by last contact date
š¤ Auto-Capture (Optional)
- Log DMs and mentions from Telegram/Slack/Discord
- Parse emails to extract sender and context
- Extract attendees from calendar events
File Structure
personal-crm/
āāā SKILL.md # This file
āāā scripts/
ā āāā personal-crm.js # Main CLI entry point
ā āāā contacts.js # Contact CRUD operations
ā āāā interactions.js # Interaction logging
ā āāā reminders.js # Follow-up suggestions
ā āāā query.js # Search interface
ā āāā chatLogger.js # Auto-log from chat platforms
ā āāā emailParser.js # Extract email metadata
ā āāā calendarParser.js # Extract calendar data
āāā references/
ā āāā data-schema.md # Data structure documentation
ā āāā config-schema.md # Configuration options
āāā assets/
āāā sample-config.json # Example config
# Data files (created on first use, stored in workspace)
~/.openclaw-personal-crm/
āāā contacts.json # Contact database
āāā interactions.json # Interaction log
āāā config.json # User configuration
Usage Guide
Add a Contact
node scripts/personal-crm.js add-contact "Name" [options]
Options:
--email <email> Email address
--phone <phone> Phone number
--tags <tag,tag> Comma-separated tags
--notes <text> Initial notes
--field key:value Custom fields
Log an Interaction
node scripts/personal-crm.js log-interaction <contact> <note> [options]
Options:
--date <YYYY-MM-DD> Backdate the interaction
--tags <tag,tag> Tag this interaction
View Reminders
node scripts/personal-crm.js list-reminders [options]
Options:
--days <N> Show contacts not contacted in N days (default: 30)
--tag <tag> Filter by contact tag
Search Contacts
node scripts/personal-crm.js search [options]
Options:
--name <pattern> Name contains pattern
--tag <tag> Has tag
--since <YYYY-MM-DD> Contacted since date
--before <YYYY-MM-DD> Contacted before date
View Contact Details
node scripts/personal-crm.js view <contact>
Shows:
- Contact details
- All interactions (newest first)
- Last contact date
- Follow-up suggestion
Configuration
Create ~/.openclaw-personal-crm/config.json:
{
"reminderRules": {
"default": 30,
"tags": {
"friend": 14,
"family": 7,
"professional": 60
}
},
"autoCapture": {
"enabled": true,
"sources": ["telegram", "slack"],
"filterChannels": ["@username", "dm"]
},
"storage": {
"path": "~/.openclaw-personal-crm"
}
}
Integration with OpenClaw
The skill automatically integrates with OpenClaw workflows:
Chat auto-capture: When enabled, DMs and mentions are logged as interactions automatically.
Natural language: Use trigger phrases:
- "Track my conversation with Alice"
- "Who should I follow up with?"
- "When did I last talk to Bob?"
Memory integration: Contacts and interactions can sync to OpenClaw memory for long-term recall.
Privacy & Security
- All data stored locally by default
- No external services required
- Contact data never leaves your machine unless you explicitly configure sync
- Supports
.gitignorepatterns for sensitive files
Development Notes
Core principles:
- Simple JSON storage (easy to backup, version, inspect)
- CLI-first (can be wrapped with GUI later)
- Zero dependencies where possible
- Composable scripts (each module can work standalone)
Future enhancements:
- Sync to encrypted cloud storage
- Rich contact profiles (social media links, work history)
- Interaction analytics (who you talk to most, network health)
- Birthday/anniversary reminders
- Export to vCard/CSV
Troubleshooting
"Contact not found"
ā Use search to find the exact name, or add the contact first
Reminders not showing
ā Check config.json reminder rules, ensure interactions are logged
Auto-capture not working
ā Verify autoCapture.enabled: true and sources are configured
Data location
ā Default: ~/.openclaw-personal-crm/ (configurable in config.json)
Support
For issues or feature requests, check the skill's references/ folder or OpenClaw docs.