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.
- 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
# 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# 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 8080python crm.py web
# Open http://localhost:7778The dashboard provides:
- Visual contact cards with all details
- Category filtering sidebar
- Quick search
- Add contacts via paste
- Delete contacts
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)
# 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"Default categories (auto-assigned by Claude):
work- Professional contactspersonal- Friends and familynetworking- Met at eventspotential-collaborator- Possible project partnersclient- Business clientsmentor/mentee- Advisory relationshipsinvestor/founder- Startup ecosystemresearcher- Academic/research contactsother- Uncategorized
Side panel that stays open while you browse. Paste or drag text in.
- Open Chrome →
chrome://extensions/ - Enable "Developer mode" (top right)
- Click "Load unpacked" → select the
extensionfolder
- Start the server:
python crm.py web - Click the Seer CRM extension icon → side panel opens
- Copy text from any page and paste into the panel (Ctrl+V)
- Or drag and drop text directly into the panel
- Add notes if you want
- 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
To have the server start automatically with Windows (no terminal window):
- Press
Win+R, typeshell:startup, press Enter - Create a shortcut to
start_silent.vbsin that folder
- Press
Win+R, typeshell:startup, press Enter - Create a shortcut to
start_server.pywin that folder
Now the server runs invisibly on startup. The browser extension will always be able to connect.
With Browser Extension:
- You're on someone's LinkedIn profile
- Press
Alt+Shift+C - Click "Grab selected text" after selecting their bio
- Add a note: "Met at conference, interested in collab"
- Click Save - done!
With CLI:
- Copy an email signature
- Run
python crm.py add -c - Add context when prompted
- Contact saved with auto-categorization
Export your contacts to Airtable for a visual CRM experience:
python crm.py export --format airtable -o contacts_for_airtable.csvThen in Airtable:
- Create a new base or open existing
- Click Import → CSV file
- Upload your CSV - fields will auto-map
See airtable_template.md for recommended field types and views to set up.
- Live Airtable sync via API
- Relationship strength tracking
- Follow-up reminders
- Mobile app
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)
- Python 3.10+
- Anthropic API key
pyperclipfor clipboard access (optional but recommended)
MIT