I've been building custom CRMs for small businesses in Vancouver for the past year, and the conversation always starts the same way: "We're paying $200/month for HubSpot and we use maybe 10% of it. Can you build us something simpler?"
The answer is yes. With Claude Code, I can build a custom CRM for a small business in about two weeks — contact management, deal pipeline, follow-up reminders, basic reporting — and the total cost is usually less than what they'd pay for a year of SaaS subscriptions. More importantly, they own the code and can change it whenever they want.
This post walks through how to build a custom CRM for small business using Claude Code, what features actually matter, and when it makes sense to go custom versus sticking with an off-the-shelf tool.
Why Small Businesses Outgrow SaaS CRMs
The problem with tools like HubSpot, Salesforce, or Pipedrive isn't that they're bad — it's that they're built for companies with complex sales processes, multiple teams, and dedicated admins. If you're a three-person consulting firm or a local service business with 200 clients, you don't need enterprise workflows. You need a database with a decent interface.
What actually happens is you sign up for the free tier, realize you need one extra feature, and suddenly you're paying $50–$100 per user per month. You spend more time customizing fields and fighting with permissions than you do actually using the tool. And when you want to export your data or integrate with something custom, you hit a wall.
A custom CRM built with Claude Code costs more upfront — usually $3,000–$7,500 depending on complexity — but after that it's just hosting ($50–150/month) and occasional updates. For a team of three, the custom route breaks even in under two years and you never have to negotiate with a pricing page again.
What a Small Business CRM Actually Needs
I've built probably a dozen of these now, and the core feature set is almost always the same:
- Contact management — name, email, phone, company, tags, notes
- Deal pipeline — deal name, value, stage (lead → qualified → proposal → won/lost), last contact date
- Activity log — timestamped notes for every interaction (call, email, meeting)
- Follow-up reminders — flag a contact for follow-up on a specific date, surface it on the dashboard
- Basic reporting — deals by stage, pipeline value, conversion rates, monthly wins
That's it. No automation workflows, no lead scoring, no email sequences. Just a structured way to track who you're talking to and what stage they're in. You can add those other features later if you actually need them, but most small businesses never do.
The Build Process with Claude Code
Here's how I typically structure a custom CRM build. This assumes you're working with Claude Code and have at least a basic understanding of how to run a development environment.
Step 1: Schema Design
I start by mapping out the database schema. For a minimal CRM you usually need four tables:
- contacts — id, name, email, phone, company, tags, created_at
- deals — id, contact_id, name, value, stage, expected_close_date, created_at
- activities — id, contact_id, deal_id, type (call/email/meeting), note, activity_date
- reminders — id, contact_id, reminder_date, note, completed
Claude Code can generate this schema as SQL and set up the database migrations. I usually use PostgreSQL for anything production, but SQLite works fine for prototyping.
Step 2: CRUD Operations
Once the schema is set, I build out the basic create/read/update/delete operations for each table. Claude Code writes the backend API routes and the database queries. This is the part that would take a junior developer weeks to get right — Claude Code does it in an afternoon.
The key thing to validate here is that relationships work correctly. When you delete a contact, do the associated deals and activities also get deleted (or orphaned safely)? When you update a deal stage, does the activity log reflect that change? These edge cases are where bugs hide, and having Claude Code write comprehensive tests from the start saves a lot of pain later.
Step 3: Dashboard and Views
The UI is where most custom CRMs either shine or fail. I keep it simple: a dashboard with upcoming reminders and a pipeline summary, a contacts list with search and tag filters, a deals board (Kanban style, with drag-and-drop to change stages), and individual contact/deal detail pages.
Claude Code generates clean, responsive HTML/CSS using a lightweight framework — usually React or Vue for interactivity, but sometimes just vanilla JavaScript if the client wants to keep dependencies minimal. The design language follows the client's brand, but the layout is always optimized for speed. No one wants to wait three seconds for a CRM page to load.
Step 4: Integrations
Most clients want at least one integration: Gmail for email sync, Google Calendar for meeting logging, or Stripe for payment tracking. Claude Code handles API connections well — it writes the OAuth flow, parses the webhook payloads, and updates the database accordingly.
For example, syncing Gmail means pulling in sent emails and matching them to contacts by email address, then creating an activity record for each one. That's about 200 lines of code and an afternoon of testing. Compare that to configuring a Zapier workflow that costs $30/month and breaks every time Google changes their API.
Real Example: A Vancouver-Based Consultancy
One of my clients is a three-person strategy consultancy in Vancouver. They were on HubSpot's Professional tier ($800/month) and using it mostly as a glorified spreadsheet. They had about 120 active contacts, 15–20 deals in the pipeline at any given time, and wanted better visibility into follow-up tasks.
I built them a custom CRM with Claude Code in 10 days. The stack: PostgreSQL database, Node.js backend, React frontend, hosted on a $12/month DigitalOcean droplet. Total build cost was $4,500. Hosting and maintenance averages about $75/month (the extra comes from occasional feature requests).
They've been using it for eight months now. The feature they use most is the reminder system — it surfaces contacts who haven't been contacted in 30+ days and flags deals that are stuck in a stage longer than usual. That's something HubSpot could do, but it required so much configuration that they never set it up. With the custom build, it was part of the spec from day one.
Return on investment: they'll break even in month 14 and save about $8,000/year after that. More importantly, they actually use the tool now instead of avoiding it.
When Custom Doesn't Make Sense
I want to be clear about when not to build a custom CRM. If you're a sales team with complex lead routing, territory management, or integration requirements with tools like Outreach or SalesLoft, you probably need a real CRM. The same goes if you have a compliance requirement for data retention or audit trails — building that yourself is expensive and risky.
The sweet spot for a custom CRM is small teams (2–10 people) with straightforward sales processes and a preference for owning their tools. If you're spending more than $2,400/year on CRM software and you don't use half the features, it's worth a conversation.
Getting Started
If you want to explore building a custom CRM for your small business, here's what I'd recommend:
- Document your current workflow — what data do you track, what views do you need, what integrations are non-negotiable
- Estimate your annual CRM costs including seat licenses, add-ons, and the time your team spends managing it
- Ask yourself if you'd pay $5,000 once to own a simpler version versus $2,000/year forever to rent a complex one
If those numbers make sense, the next step is a scoping call. I walk through your workflow, sketch a feature list, and estimate build time and cost. Most small business CRMs fall in the $3,000–$7,500 range and take 7–14 days to build and test.
You can see more examples of custom CRM builds I've done with Claude Code here, and if you're curious how this fits into a broader automation strategy, the workflow automation guide covers that in depth.
The tools exist. The question is whether you want to keep paying rent or start building equity in your own systems.