Skip to content

0xdippo/app-personal-crm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal CRM

Track interactions, follow-ups, and relationship context for your personal network.

A lightweight personal CRM for OpenClaw agents. Never forget who you talked to, what you discussed, or who needs a follow-up.


Why This Exists

You meet interesting people. You have great conversations. Then... you forget the details. Or you lose touch because life gets busy.

This skill solves that. It's your memory for relationships:

  • Track contacts with tags, notes, and custom fields
  • Log interactions with timestamps and context
  • Get reminders when it's time to follow up
  • Auto-capture from chat platforms (optional)

Privacy-first. Local storage. No cloud services required.


Features

📇 Contact Management

  • Store names, emails, phone numbers, tags
  • Custom fields for anything (company, location, interests)
  • Quick search by name, tag, or date
  • JSON storage — easy to backup, version, inspect

💬 Interaction Logging

  • Record conversations with context
  • Link interactions to contacts automatically
  • Backdate entries when catching up
  • Tag interactions for easy filtering

⏰ Smart Follow-Up Reminders

  • Configurable frequency rules per contact or tag
  • "You haven't talked to Alice in 30 days"
  • View all pending follow-ups at once
  • Suggestions based on your relationship frequency

🔍 Powerful Search

  • Find contacts by name, tag, or last contact date
  • View full interaction history
  • Filter by date range
  • See who you're neglecting

🤖 Auto-Capture (Optional)

  • Chat integration: Auto-log DMs from Telegram, Slack, Discord, Signal, WhatsApp, iMessage
  • Email parser: Extract sender and context from forwarded emails
  • Calendar parser: Extract attendees from meeting invites
  • All integrations are opt-in

🔒 Privacy & Security

  • All data stored locally by default
  • No external services required
  • No API keys needed
  • Full control over your data

Quick Start

1. Install the Skill

openclaw skills install personal-crm.skill

2. Add Your First Contact

node skills/personal-crm/scripts/personal-crm.js add-contact "Alice Smith" \
  --email alice@example.com \
  --tags friend,tech \
  --notes "Met at AI conference, building a chatbot startup"

3. Log an Interaction

node skills/personal-crm/scripts/personal-crm.js log-interaction "Alice Smith" \
  "Discussed her new MVP launch. She's looking for beta testers."

4. Check Who Needs Follow-Up

node skills/personal-crm/scripts/personal-crm.js suggest-followups

5. View Contact Details

node skills/personal-crm/scripts/personal-crm.js view "Alice Smith"

Usage Examples

Add Contacts

# Basic contact
personal-crm add-contact "Bob Johnson"

# With details
personal-crm add-contact "Carol Lee" \
  --email carol@company.com \
  --phone "555-1234" \
  --tags professional,investor \
  --notes "Introduced by mutual friend Dave"

# With custom fields
personal-crm add-contact "David Chen" \
  --field company:"TechCorp" \
  --field location:"San Francisco" \
  --field twitter:"@davidchen"

Log Interactions

# Simple note
personal-crm log-interaction "Alice" "Grabbed coffee, discussed AI safety"

# With date (backdate)
personal-crm log "Bob" "Met at conference" --date 2026-02-01

# With tags
personal-crm log "Carol" "Discussed Series A funding" --tags investment,startup

Search & Filter

# Search by name
personal-crm search "alice"

# Filter by tag
personal-crm search --tag investor

# Find contacts you haven't talked to recently
personal-crm search --stale-days 60

# View full history
personal-crm view "Alice Smith"

Reminders & Follow-Ups

# See who needs follow-up
personal-crm suggest-followups

# Filter by tag
personal-crm suggest-followups --tag friend

# Customize staleness threshold
personal-crm suggest-followups --days 30

Auto-Logging from Platforms

# Log a DM from Telegram
personal-crm log-dm telegram "@alice" "Hey, checking in on your launch!"

# Parse an email
personal-crm parse-email "From: bob@example.com\nSubject: Quick question\n..."

# Parse a calendar invite
personal-crm parse-calendar "meeting-invite.ics"

CLI Commands (34 total)

Contacts

  • add-contact — Create a new contact
  • get-contact — View contact by ID
  • list-contacts — List all contacts
  • update-contact — Modify contact details
  • delete-contact — Remove a contact
  • search-contacts — Find contacts by name/email

Interactions

  • log-interaction — Record a conversation
  • list-interactions — View all interactions
  • get-interaction — View interaction details
  • update-interaction — Edit an interaction
  • delete-interaction — Remove an interaction
  • list-action-items — View pending action items
  • complete-action-item — Mark action item done

Reminders

  • create-reminder — Manual reminder
  • list-reminders — View all reminders
  • suggest-followups — Auto-generate follow-up list
  • complete-reminder — Mark reminder done
  • delete-reminder — Remove a reminder

Search & Query

  • search — Find contacts/interactions
  • view — Full contact profile
  • history — Interaction history
  • by-tags — Filter by tag
  • recent — Recently contacted
  • stale — Overdue for follow-up

Auto-Logging

  • log-dm — Log a chat message
  • log-mention — Log a mention
  • parse-email — Extract email metadata
  • log-email — Parse and log email
  • parse-calendar — Extract calendar attendees
  • log-calendar — Parse and log meeting

Configuration

  • configure-auto-log — Enable/disable auto-logging
  • auto-log-status — View current settings

Configuration

Create config/personal-crm-config.json:

{
  "dataDir": "~/.personal-crm/data",
  
  "autoLog": {
    "enabled": false,
    "platforms": ["telegram", "slack", "discord"],
    "excludeUsernames": ["bot", "slackbot"],
    "minMessageLength": 10
  },
  
  "reminders": {
    "defaultFrequency": "monthly",
    "lookAheadDays": 7,
    "notificationChannels": ["telegram"]
  },
  
  "privacy": {
    "encryptAtRest": false,
    "redactPatterns": [
      "\\d{4}-\\d{4}-\\d{4}-\\d{4}",
      "\\d{3}-\\d{2}-\\d{4}"
    ]
  },
  
  "search": {
    "maxResults": 50,
    "defaultDays": 90
  }
}

See references/config-schema.md for full options.


Data Schema

Contacts (data/personal-crm/contacts.json)

{
  "contacts": [
    {
      "id": "uuid",
      "name": "Alice Smith",
      "email": "alice@example.com",
      "phone": "555-1234",
      "tags": ["friend", "tech"],
      "notes": "Met at AI conference",
      "customFields": {
        "company": "StartupAI",
        "location": "San Francisco"
      },
      "lastInteraction": "2026-02-06T10:30:00Z",
      "interactionCount": 12,
      "createdAt": "2026-01-15T08:00:00Z"
    }
  ]
}

Interactions (data/personal-crm/interactions/<contact-id>.json)

{
  "id": "uuid",
  "contactId": "uuid",
  "timestamp": "2026-02-06T10:30:00Z",
  "type": "message",
  "channel": "telegram",
  "content": "Discussed her MVP launch",
  "tags": ["startup", "product"],
  "actionItems": [
    {
      "id": "uuid",
      "description": "Intro to potential beta testers",
      "dueDate": "2026-02-10",
      "completed": false
    }
  ]
}

Reminders (data/personal-crm/reminders.json)

{
  "reminders": [
    {
      "id": "uuid",
      "contactId": "uuid",
      "type": "followup",
      "reason": "Last contact 32 days ago (frequency: monthly)",
      "suggestedDate": "2026-02-08",
      "status": "pending"
    }
  ]
}

See references/data-schema.md for complete schema docs.


Integration with OpenClaw

Natural Language Triggers

The skill responds to:

  • "track contact"
  • "log interaction"
  • "personal crm"
  • "relationship tracker"
  • "who should I reach out to"

Auto-Logging from Chat

When enabled, the skill can automatically log DMs and mentions from:

  • Telegram
  • Slack
  • Discord
  • Signal
  • WhatsApp
  • iMessage

Configure in config/personal-crm-config.json:

{
  "autoLog": {
    "enabled": true,
    "platforms": ["telegram", "slack"],
    "excludeUsernames": ["bot", "github"]
  }
}

Memory Sync

Contacts and interactions can sync to OpenClaw's memory system for long-term recall across sessions.


What's Included

Package Contents

  • SKILL.md: Quick start guide
  • scripts/:
    • personal-crm.js: Main CLI entry point (34 commands)
    • contacts.js: Contact CRUD operations
    • interactions.js: Interaction logging & action items
    • reminders.js: Follow-up suggestions
    • query.js: Search & filter interface
    • chatLogger.js: Auto-log from chat platforms
    • emailParser.js: Extract email metadata
    • calendarParser.js: Parse calendar events
  • references/:
    • data-schema.md: Full data structure documentation
    • config-schema.md: Configuration options
  • assets/sample-config.json: Example configuration

Use Cases

Personal Networking

Track people you meet at conferences, meetups, and events. Never lose context about conversations or forget to follow up.

Freelance/Consulting

Maintain relationships with clients, leads, and referrals. Track project discussions and follow-up commitments.

Investor Relations

Keep notes on investor conversations, track pitch feedback, log follow-ups.

Sales Pipeline

Lightweight CRM for side hustles or small businesses. Track leads without complex software.

Friend/Family Management

Remember birthdays, track conversations with distant friends, maintain relationships across time zones.

Job Search Networking

Track recruiters, interviewers, referrals. Log conversation details and follow-up tasks.


Privacy & Security

Local-First Storage

All data stored in ~/.personal-crm/data/ by default. No cloud services. No API keys. Full control.

Optional Encryption

Enable privacy.encryptAtRest: true in config to encrypt data files.

Redaction Patterns

Configure regex patterns to automatically redact sensitive data (SSNs, credit cards, etc.)

No Tracking

The skill does not phone home, send analytics, or require registration.


Development

Architecture

  • Modular design: Each script is standalone and can be used independently
  • JSON storage: Simple, inspectable, easy to backup
  • CLI-first: Easy to script and automate
  • Zero dependencies: Pure Node.js (except for optional platform integrations)

Extending the Skill

Add custom scripts to scripts/ and they'll automatically integrate with the CLI router.

Example custom script:

// scripts/myCustomFeature.js
async function myCommand(args) {
  // Your logic here
}

if (require.main === module) {
  myCommand(process.argv.slice(2));
}

module.exports = { myCommand };

Roadmap

Future enhancements:

  • Sync to encrypted cloud storage (S3, Dropbox)
  • Rich contact profiles (social links, work history)
  • Analytics dashboard (network health, interaction trends)
  • Birthday/anniversary reminders
  • Export to vCard/CSV
  • Import from LinkedIn, Gmail contacts
  • Web UI (read-only view)
  • Mobile app integration

License

MIT


Contributing

Contributions welcome! This skill is part of the openclaw-skills collection.

To contribute:

  1. Fork this repo
  2. Make your changes
  3. Test with your OpenClaw agent
  4. Submit a PR with description

Support


Built with ❤️ for the OpenClaw community

About

A lightweight personal CRM for OpenClaw agents. Never forget who you talked to, what you discussed, or who needs a follow-up.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors