Skip to content

Repository files navigation

Seer CRM

AI-powered personal contact management optimised for minimal friction. Paste or drag contact info from anywhere, Claude extracts structured data, and you get a searchable, categorized network.

Features

  • Browser extension with side panel: Stays open while you browse - paste or drag text in
  • Smart extraction: Claude extracts names, emails, companies, roles, social links from messy text
  • Drag & drop: Drag text from any page directly into the panel
  • Auto-categorization: Contacts tagged as work, personal, mentor, collaborator, founder, etc.
  • CLI + Web UI: Terminal interface + visual dashboard
  • Airtable export: Export directly to Airtable-compatible CSV for visual CRM management
  • Schedule a follow-up meeting from your side panel: schedule a check-in with your contact via GCal in a couple of clicks

Quick Start

# 1. Clone and install
git clone https://github.com/Username-Matilda/short-timelines.git
cd short-timelines
pip install -r requirements.txt

# 2. Set your Anthropic API key
cp .env.example .env
# Edit .env and add your key from https://console.anthropic.com/

# 3. Add your first contact
python crm.py add --from-clipboard

Usage

CLI Commands

# Add a contact (interactive or from clipboard)
python crm.py add
python crm.py add --from-clipboard
python crm.py add -c -n "Met at AI conference"

# Search contacts
python crm.py search "acme"

# List all contacts or by category
python crm.py list
python crm.py list work
python crm.py list potential-collaborator

# View a specific contact
python crm.py show abc123

# Enrich existing contact with new info
python crm.py enrich abc123 --from-clipboard

# Delete a contact
python crm.py delete abc123

# Show statistics
python crm.py stats

# List categories
python crm.py categories

# Export contacts
python crm.py export --format json
python crm.py export --format csv -o contacts.csv
python crm.py export --format airtable -o contacts_for_airtable.csv

# Watch clipboard (daemon mode)
python crm.py watch

# Start web dashboard
python crm.py web
python crm.py web --port 8080

Web Dashboard

python crm.py web
# Open http://localhost:7778

The dashboard provides:

  • Visual contact cards with all details
  • Category filtering sidebar
  • Quick search
  • Add contacts via paste
  • Delete contacts

Data Storage

Contacts are stored in data/contacts.json - a simple, human-readable format that's:

  • Easy to back up (just sync the folder)
  • Version-control friendly (can track in git)
  • Portable (copy to another machine)

Backup Recommendations

# Simple: sync to cloud storage
ln -s /path/to/short-timelines/data ~/Dropbox/crm-backup

# Or: git commit your data
git add data/contacts.json
git commit -m "backup contacts"

Categories

Default categories (auto-assigned by Claude):

  • work - Professional contacts
  • personal - Friends and family
  • networking - Met at events
  • potential-collaborator - Possible project partners
  • client - Business clients
  • mentor / mentee - Advisory relationships
  • investor / founder - Startup ecosystem
  • researcher - Academic/research contacts
  • other - Uncategorized

Browser Extension (Seer CRM)

Side panel that stays open while you browse. Paste or drag text in.

Installation

  1. Open Chrome → chrome://extensions/
  2. Enable "Developer mode" (top right)
  3. Click "Load unpacked" → select the extension folder

Usage

  1. Start the server: python crm.py web
  2. Click the Seer CRM extension icon → side panel opens
  3. Copy text from any page and paste into the panel (Ctrl+V)
  4. Or drag and drop text directly into the panel
  5. Add notes if you want
  6. Click "Save Contact" → Claude extracts everything

Tip: You can paste multiple times - each paste adds to the existing text with a separator, so you can combine info from different parts of a page.

Keyboard shortcut: Ctrl+Enter to save

Auto-Start (Run in Background)

To have the server start automatically with Windows (no terminal window):

Option 1: VBS Script (Recommended)

  1. Press Win+R, type shell:startup, press Enter
  2. Create a shortcut to start_silent.vbs in that folder

Option 2: Python .pyw

  1. Press Win+R, type shell:startup, press Enter
  2. Create a shortcut to start_server.pyw in that folder

Now the server runs invisibly on startup. The browser extension will always be able to connect.

Example Workflow

With Browser Extension:

  1. You're on someone's LinkedIn profile
  2. Press Alt+Shift+C
  3. Click "Grab selected text" after selecting their bio
  4. Add a note: "Met at conference, interested in collab"
  5. Click Save - done!

With CLI:

  1. Copy an email signature
  2. Run python crm.py add -c
  3. Add context when prompted
  4. Contact saved with auto-categorization

Airtable Integration

Export your contacts to Airtable for a visual CRM experience:

python crm.py export --format airtable -o contacts_for_airtable.csv

Then in Airtable:

  1. Create a new base or open existing
  2. Click Import → CSV file
  3. Upload your CSV - fields will auto-map

See airtable_template.md for recommended field types and views to set up.

Future Ideas

  • Live Airtable sync via API
  • Relationship strength tracking
  • Follow-up reminders
  • Mobile app

Architecture

personal_crm/
├── cli.py         # Click-based CLI interface
├── extractor.py   # Claude API for contact extraction
├── storage.py     # JSON storage layer
├── server.py      # Flask web dashboard + API
└── config.py      # Configuration

extension/
├── manifest.json  # Chrome extension config (v2 with side panel)
├── sidepanel.html # Side panel UI
├── sidepanel.js   # Side panel logic
├── background.js  # Service worker for shortcuts
└── icons/         # Extension icons

data/
├── contacts.json  # Your contacts
└── categories.json # Custom categories

start_silent.vbs   # Windows auto-start (no terminal)
start_server.pyw   # Python auto-start (no terminal)

Requirements

  • Python 3.10+
  • Anthropic API key
  • pyperclip for clipboard access (optional but recommended)

License

MIT

About

Seer CRM - capture contacts in-browser (side panel with input boxes + couple of extra features). Let your favourite LLM refine them into entries for a basic local CRM UI. You can export entries into e.g. an Airtable CRM whenever you want (or probably make some kind of API setup).

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages