π¦ ClawHub
CRM-in-a-Box
by @taylorhou
Bootstrap and manage an open, file-based CRM using the CRM-in-a-Box protocol (contacts, pipeline, interactions as NDJSON). Use when setting up a new CRM for...
TERMINAL
clawhub install crm-in-a-boxπ About This Skill
name: crm-in-a-box description: Bootstrap and manage an open, file-based CRM using the CRM-in-a-Box protocol (contacts, pipeline, interactions as NDJSON). Use when setting up a new CRM for a company, logging contacts/leads, updating deal stages, or recording interactions β all without any SaaS dependency. metadata: { "openclaw": { "emoji": "π" } }
CRM-in-a-Box Skill
An open, agent-native CRM protocol. One directory = one CRM. No vendor lock-in.
Files
contacts.ndjson β one JSON object per line, each a contact/company recordpipeline.ndjson β deal/opportunity tracking with stagesinteractions.ndjson β append-only log of emails, calls, notes, meetingsconfig.yaml β pipeline stages and labelsBootstrap a New CRM
Copy the baseline files into a company directory:
mkdir -p ./mycompany/crm
cp /path/to/crm-in-a-box/{config.yaml,contacts.ndjson,pipeline.ndjson,interactions.ndjson} ./mycompany/crm/
Or start fresh with empty NDJSON files and the default config.
Contact Schema
{
"id": "c001",
"name": "Jane Smith",
"email": "jane@example.com",
"company": "Acme Corp",
"phone": "+1-555-0100",
"stage": "new",
"labels": ["hot-lead"],
"notes": "Referred by John.",
"created_at": "2026-01-01T00:00:00Z"
}
Pipeline Schema
{
"id": "p001",
"contact_id": "c001",
"stage": "proposal_sent",
"deal": "Enterprise License",
"value": 12000,
"updated_at": "2026-01-15T00:00:00Z"
}
Interaction Schema
{
"id": "i001",
"contact_id": "c001",
"type": "email",
"summary": "Sent intro email about Denver market sale.",
"at": "2026-01-15T10:00:00Z"
}
Pipeline Stages (default)
new β contacted β meeting_scheduled β proposal_sent β negotiating β won / lost
Default Labels
hot-lead, warm-lead, cold-lead, referral, conference, inbound, outbound
Agent Instructions
contacts.ndjsonpipeline.ndjson (keep old entries β append-only)interactions.ndjsongrep -i "name" contacts.ndjson | python3 -m json.toolcat pipeline.ndjson | python3 -c "import sys,json; [print(json.dumps(json.loads(l), indent=2)) for l in sys.stdin]"Forks / Verticals
Fork config.yaml to customize stages and labels for your vertical:
pm-crm β Property management (tenants, owners, vendors)saas-crm β SaaS salesrealestate-crm β Buyers, sellers, listingsrecruiting-crm β Candidates, jobs, placements*Part of the biz-in-a-box family of open protocols.*