Zero to CRM for Developers: Build Your Own in an Afternoon
Developers don't need to use off-the-shelf CRMs. With DenchClaw, you can build a fully custom CRM tailored to your workflow in a single afternoon.
Zero to CRM for Developers: Build Your Own in an Afternoon
Most developers I know use a CRM badly or not at all. Either they're paying for HubSpot and ignoring half the features, or they're tracking everything in a Google Sheet that never gets updated. Neither works.
The problem isn't motivation. It's that off-the-shelf CRMs aren't designed for how developers think. They're designed for sales managers. They have too many features in the wrong places, not enough SQL access, and zero extensibility.
DenchClaw is different. It's a CRM built for people who'd rather write a query than click a button. And crucially: you can have a fully working, custom CRM running in an afternoon.
Here's how.
Step 1: Install DenchClaw (5 minutes)#
npx denchclawThis installs the OpenClaw agent runtime with the dench profile, starts a gateway on port 19001, initializes a DuckDB workspace, and opens localhost:3100 in your browser.
The first run will ask you a few setup questions. Answer them, or skip them — you can configure everything through the agent later.
Step 2: Define Your Objects (15 minutes)#
An Object is what other CRMs call a table. Tell the agent what you want to track:
"Create a CRM with three objects:
contacts,companies, anddeals. Contacts should have: name, email, phone, company (relation), role, LinkedIn URL, last contacted date, and status (Lead, Active, Churned). Companies should have: name, website, industry, employee count, and ARR. Deals should have: title, value, stage (Prospect, Qualified, Proposal, Closed Won, Closed Lost), contact (relation), company (relation), close date, and notes."
The agent will:
- Create the objects in DuckDB
- Write the
.object.yamlfiles for each - Generate PIVOT views (
v_contacts,v_companies,v_deals) - Add the objects to your sidebar navigation
In under 15 minutes you have a fully functional CRM schema. No migrations to run. No admin panel to navigate.
Step 3: Set Up Your Views (15 minutes)#
By default, each object shows a Table view. Tell the agent how you want to see your data:
"Set up a Kanban view for deals, grouped by Stage. Create a filtered table view for contacts showing only Leads, sorted by Last Contacted ascending — call it 'Stale Leads'. Create a calendar view for deals based on Close Date."
Each view is saved as a configuration in the .object.yaml. The frontend updates immediately.
You can also set up views manually by editing the YAML:
views:
- name: Stale Leads
type: table
filters:
- field: Status
operator: equals
value: Lead
sort:
- field: Last Contacted
direction: asc
- name: Pipeline
type: kanban
kanbanField: StageStep 4: Import Your Existing Data (20 minutes)#
You probably have data somewhere already — a spreadsheet, a CSV export, a Notion database. Import it:
# Via the agent
"Import this CSV file as contacts: ~/Desktop/contacts.csv"
# Or directly via DuckDB
duckdb ~/.openclaw-dench/workspace/workspace.duckdb << 'EOF'
-- First, check what you're working with
SELECT * FROM read_csv_auto('/Users/yourname/Desktop/contacts.csv') LIMIT 5;
-- Then insert into the contacts object
INSERT INTO entries (object_id, created_at)
SELECT
(SELECT id FROM objects WHERE name = 'contacts'),
current_timestamp
FROM read_csv_auto('/Users/yourname/Desktop/contacts.csv');
EOFThe agent can also import from HubSpot, Notion, or any site you're logged into, by opening it in the browser and exporting the data automatically.
Step 5: Connect Your Messaging Channel (10 minutes)#
DenchClaw's power comes from being able to talk to your CRM from anywhere. Set up Telegram:
- Message @BotFather on Telegram
- Create a bot:
/newbot→ give it a name → copy the token - In DenchClaw: "Connect my Telegram bot with token [your-token]"
Now you can query your CRM from your phone:
"How many open deals do I have?" "Add a new contact: Sarah Chen, Head of Product at Stripe, sarah@stripe.com" "Show me my stale leads" "Log a meeting with John from Acme today"
Step 6: Build a Custom Dashboard (20 minutes)#
This is where it gets interesting. DenchClaw has an app builder — you can build custom web apps with full DuckDB access that appear in your sidebar.
Ask the agent:
"Build me a pipeline dashboard that shows: (1) count of deals by stage as a bar chart, (2) total deal value by stage, (3) deals closing this month, and (4) my top 5 contacts by deal value. Use Chart.js."
The agent will build a .dench.app with:
<!-- apps/pipeline-dashboard.dench.app/index.html -->
<canvas id="stageChart"></canvas>
<script>
const stageData = await dench.db.query(`
SELECT "Stage", COUNT(*) as count, SUM("Value") as total
FROM v_deals
WHERE "Stage" NOT IN ('Closed Lost')
GROUP BY "Stage"
ORDER BY total DESC
`);
// ... Chart.js rendering
</script>The app appears in your sidebar immediately, auto-refreshes when data changes.
Step 7: Add Action Buttons (15 minutes)#
Action fields are buttons on each row that run server-side scripts. This turns your CRM from a database viewer into an action launchpad.
Ask the agent:
"Add an 'Enrich' button to contacts that, when clicked, looks up their email on Apollo.io and fills in their company, role, and LinkedIn URL"
Or add an email button:
"Add a 'Send Follow-up' action to the Stale Leads view that drafts a personalized follow-up email for each contact using their deal history and last contact date"
The action script runs on click, streams results back to the UI, and updates the entry.
What You End Up With#
After an afternoon of work:
- ✅ A fully custom CRM schema matching your actual workflow
- ✅ Multiple views (table, kanban, calendar) per object
- ✅ Natural language querying via Telegram/WhatsApp/web chat
- ✅ Custom dashboard with live charts
- ✅ Action buttons for automated tasks
- ✅ All data in a local DuckDB file you fully own
Total cost: $0. Total time: ~2 hours, including reading this post.
Going Further#
Once you have the basics running, there's a lot more you can do:
Relations: Link deals to companies, contacts to deals. Query across relations with standard SQL JOINs against the PIVOT views.
Skills: Install community skills from clawhub.ai for integrations you need — Gmail sync, calendar integration, Apollo enrichment.
Automations: Ask the agent to run background tasks — "every Monday morning, send me a summary of my pipeline to Telegram."
Multiple workspaces: Power users run separate workspaces for different contexts — personal network, startup CRM, investment tracking.
Frequently Asked Questions#
Do I need to know SQL to use DenchClaw?#
No. The agent translates natural language to SQL. But if you do know SQL, you get a lot more power — direct DuckDB queries, custom views, analytics.
What if I want to share my CRM with a teammate?#
DenchClaw is currently single-user local. Team workspaces are on the roadmap. For now, Dench Cloud (dench.com) offers managed multi-user hosting.
Can I migrate to another CRM later?#
Yes. Your data is in DuckDB — export it as CSV or Parquet with a single query. No vendor lock-in.
How long does setup actually take?#
Steps 1-4 (install + schema + views + import) typically take 45-60 minutes. Steps 5-7 (messaging + dashboard + actions) add another 45 minutes. Call it 2 hours total for a complete setup.
Is this production-ready?#
DenchClaw is actively used by the Dench team and YC-backed founders. It's solid for personal and small-team use. Enterprise features (SSO, audit logs, compliance) are on the roadmap.
Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →
