Should You Build Your Own CRM? What 775 Releases Taught Us

The first version of a CRM takes a day. We know, because ours did. The other eight months went into duplicates, permissions, imports and time zones. Here is where the work actually goes, and how to decide whether it is worth it for you.

Oct 20, 2026

An iceberg of navy blocks: one small contact card above the waterline, and gears, a padlock, a calendar, duplicate cards and a database below it

You can build your own CRM, and the first version is the easy part. Contacts, companies, deals and a few users take a day with a modern framework or an AI coding tool. The cost is everything after: duplicate records, permissions, imports, calendar sync, time zones, and keeping it running while your team depends on it. We built ours starting February 12, 2026. Eight months later it has shipped 775 releases and 1,674 commits, and most of them went into those unglamorous parts. Build when your process genuinely doesn't fit a product. Buy when it does.


Why we built our own

We wanted one tool where most small sales teams juggle three: an outreach platform, a heavily customized Salesforce and a contact-enrichment service, with several products, each with its own funnel, on one account. Getting there on Salesforce meant licences, a consultant to customize it, and an interface our team didn't want to live in.

So we built one. It's a Go and PostgreSQL application. Today it runs our whole commercial side: contacts and accounts, deals and pipeline, LinkedIn and WhatsApp outreach, call recordings with transcripts, a booking page, e-signatures, and an assistant that works in it through Claude.

That's not a recommendation. It's the reason we can tell you where the time goes.

The first version really does take a day

Our first commit, on February 12, was a contact list with a layout. By the end of that same day, it had users and multiple accounts. If you have built software before, or you are good with an AI coding tool, you can get that far too.

That first day is the part of the iceberg above the water. It's also the part every "build your own CRM" tutorial covers, and why the idea looks cheaper than it is.

Where the other eight months went

We counted our own commit history. These are approximate, because they count commit messages that mention each topic, but the proportions are the point:

  • Duplicates: about 200 commits. The same person arrives from LinkedIn, from an email, from a booking and from an import, spelled four ways. Deciding when two records are one person, merging them without losing history, and stopping new duplicates at the door is a permanent job. A fix in September, seven months in, still had to state the rule outright: "one person is one record."
  • Permissions, sign-in and data separation: close to 300 commits. Who can see which accounts, which teammate owns a deal, keeping one organization's data away from another's, and letting assistants in without giving them the keys to everything.
  • Database changes: 257 migrations. Every new field, every change of mind about how a deal is modeled, is a migration that has to run safely on live data.
  • Calendars and time: 80+ commits on calendar alone. In September, seven months in, we were still fixing clocks that read the server's time zone instead of the viewer's.
  • Imports. A lead from a spreadsheet has to land on the company that already exists, not create a second one. That rule only exists because it went wrong first.

None of this shows in a demo. All of it decides whether your team trusts the data, and a CRM nobody trusts is a CRM nobody updates.

Four ways to build your own CRM

1. A spreadsheet. Free, flexible, and the right answer for one person with fifty leads. It breaks at the second person: no history, no ownership, no reminders, and two versions of the truth by Friday.

2. A no-code app builder. Database-backed tools let you design tables, forms and views without code. Good for a small team that wants structure fast. The limits arrive with permissions, automations that grow tangled, and per-seat pricing that starts to look like the CRM you were avoiding.

3. Building it yourself with AI. Coding assistants make the first version faster than ever. It's a real option for a technical founder. The risk is the iceberg: generated code that nobody fully understands, holding your customers' data. We wrote about what a vibe-coded app really costs in production, and the same applies here.

4. Having it built. A developer builds it in stages around your process, starting with the one workflow your team currently works around. It costs real money up front, and no seat licences after.

When building is worth it

Build, fully or in part, when:

  • your team keeps a spreadsheet next to the CRM, because the CRM can't hold what really drives a deal;
  • your process has steps no product models well: quotes from your own catalog, approvals, site visits;
  • the CRM has to exchange data both ways with your ERP or quoting tool, and the integrations keep breaking;
  • you pay for many seats while most people only update a few fields.

Buy when your process is standard B2B sales, the team is small and the pipeline is classic. An off-the-shelf CRM configured well will be cheaper and faster, and you should spend the money on selling.

The seat math is where it usually tips: at $100 to $300 per user per month for a fully featured plan, a team of twenty pays $24,000 to $72,000 a year in licences before any customization. A custom CRM rarely wins for five users. It often does for twenty.

What we would do differently

Design for several users from day one. At first, connecting an assistant meant pasting an API key. That works for the person who built it and nobody else. We moved to proper sign-in for assistants in August. Doing it earlier would have been cheaper than moving every connection over later.

Treat duplicates as a feature, not a bug. We fixed duplicates one source at a time. A single rule for "is this the same person?", applied to every way a contact can arrive, should have existed before the second import.

Store time in the viewer's time zone from the start. Mixing server time and local time was cheap to write and expensive to fix seven months later, once the booking page served visitors in several time zones.

Put the assistant first. We built AI into the CRM screens and, two days after the first commit, a connector so Claude could work in it directly. The daily work moved to Claude, because that's where we already were. If we started again, the connector would come before most of the screens. More on that in Claude for small business.

What it costs

If you build it yourself, the cost is your time, and the commit counts above are an honest picture of how much of it goes past the first version.

If you have it built, our published ranges are $5,000 to $18,000 for a first workflow in production and $18,000 to $45,000 for a complete CRM, then about $50 to $100 a month for hosting and from about $470 a month for maintenance. Details and the full comparison with Salesforce and HubSpot are on our custom CRM development page.

Related: We built our CRM from scratch, Why sales reps don't use the CRM, Reflekt CRM, the product it became, and, if you stay on HubSpot, the HubSpot API migration deadline.