AI-native CRM that runs in your IDE. No SaaS, no dashboards -- just talk to your sales data.
You: "Add company Stripe, fintech, SF. CEO is Patrick Collison."
AI: Done. Created comp-stripe + p-stripe-001 (Patrick Collison, CEO).
You: "Create a lead for our consulting service, $10k estimated"
AI: Created lead-stripe-001, stage: new, $10,000 USD.
You: "Log call with Patrick -- discussed pilot, sending proposal Friday"
AI: Logged activity. Set next_action: "Send proposal", next_action_date: 2026-03-07.
| Traditional CRM | Plaintext CRM |
|---|---|
| Click through 10 screens to log a call | Say "log call with John, he's interested" |
| Export to CSV to analyze | Ask "which leads are closing this month?" |
| Pay $50-500/month | Free, open source |
| Data locked in vendor | Git-controlled CSV files you own |
| Learn complex UI | Just talk to AI |
| Needs internet | Works offline |
# 1. Clone
git clone https://github.com/anthroos/plaintext-crm.git
cd plaintext-crm
# 2. Install
pip3 install pandas pyyaml
# 3. Open in your AI IDE
claude # Claude Code
# or: cursor . # Cursor IDE
# 4. Start using -- just talk
"Add company Acme Inc, Series A startup in SF"
"Show my hot leads"
"What needs follow-up today?"That's it. The AI reads CLAUDE.md and understands the full CRM schema, validation rules, and available operations.
- Companies & Contacts -- universal contact database with relationships
- Products -- define your offerings (services, reseller, community)
- Sales pipeline -- leads with stages:
new -> qualified -> proposal -> negotiation -> won / lost - Client management -- active clients, contracts, MRR tracking
- Partner tracking -- partnerships with revenue share
- Deal tracking -- from proposal to paid with invoice tracking
- Activity log -- every call, email, message logged with direction and channel
- Schema validation --
schema.yaml+validate_csv.pyprevent bad data - CSV injection protection -- safe against formula injection attacks
Companies <--- People
| |
+-- Leads | (via primary_contact_id)
+-- Clients ---+
+-- Partners |
| |
| Deals (proposal -> paid)
|
+-- Activities -- People
Key design decisions:
- Contacts (companies + people) are universal -- they exist once
- Relationships (leads, clients, partners) track how you interact per product
- One company can be a client for product A and a lead for product B
plaintext-crm/
├── CLAUDE.md # AI context (schema, skills, rules)
├── sales/crm/
│ ├── contacts/
│ │ ├── companies.csv # All companies
│ │ └── people.csv # All contacts
│ ├── products.csv # Your products/services
│ ├── relationships/
│ │ ├── leads.csv # Sales pipeline
│ │ ├── clients.csv # Active clients
│ │ ├── partners.csv # Partner relationships
│ │ └── deals.csv # Deal & invoice tracking
│ ├── activities.csv # All communications
│ └── schema.yaml # Machine-readable validation
├── docs/
│ ├── CRM_FLOW_DIAGRAM.md # Visual CRM flow diagram
│ ├── SCHEMA.md # Field definitions
│ └── WORKFLOW.md # Daily workflow
├── integrations/ # Channel setup guides
│ ├── telegram_api.md
│ ├── gmail.md
│ ├── whatsapp.md
│ ├── linkedin.md
│ ├── mcp-agents.md
│ └── plaintext-pm.md
├── sales/outreach/
│ └── OUTREACH_PROMPT.md # Outreach message templates
└── scripts/
└── validate_csv.py # Data validation & integrity checks
"Add company Acme Inc, SaaS, New York"
"Add John Doe as CTO at Acme, john@acme.com"
"Find all contacts at Deutsche Telekom"
"Show hot leads"
"What leads need follow-up today?"
"Move lead-001 to proposal stage"
"Convert lead to client -- they signed"
"Create deal for Acme pilot -- $5000 USD"
"Mark deal-001 as delivered"
"Generate invoice for deal-001"
"Log call with John -- discussed pricing, follow up Friday"
"Log email sent to Jane with proposal"
"Show all activities with Acme this month"
"What's our total MRR?"
"Which leads have been in 'qualified' stage for over 2 weeks?"
"Show activity breakdown by channel this month"
Run the validation script to check data integrity:
python3 scripts/validate_csv.pyChecks: required fields, foreign key references, enum values, unique IDs, date formats, CSV injection prevention.
python3 scripts/validate_csv.py --fix # Auto-fix missing last_updatedPlaintext CRM works standalone. For a complete business OS, pair with:
| Repo | Purpose | Stars |
|---|---|---|
| plaintext-crm (this) | CRM: contacts, leads, deals, activities | |
| plaintext-pm | Project & task management | |
| claude-code-review-skill | AI code review (280+ checks) |
| Channel | What it does | Guide |
|---|---|---|
| Telegram | Read/send messages, manage groups | Setup |
| Gmail | Search emails, read threads | Setup |
| Read chats via Baileys | Setup | |
| Connection management, messaging | Setup | |
| MCP Agents | Agent-to-agent communication via MCP | Setup |
| Plaintext PM | Project management integration | Setup |
- Claude Code or Cursor IDE
- Python 3.10+
pip3 install pandas pyyaml
- Your data stays yours -- CSV files, version controlled, no vendor lock-in
- AI does the work -- research, draft, log, analyze
- Simple beats complex -- if you need Salesforce, this isn't for you
- Schema-first -- machine-readable validation prevents bad data
- Solo founders doing sales from their IDE
- Small teams (1-5) without dedicated sales ops
- Developers who hate context-switching to browser CRM
- Anyone who thinks CRM should be a conversation, not a dashboard
Contributions welcome! See CONTRIBUTING.md for guidelines.
MIT
Built by @anthroos at WeLabelData.