Custom CRM: three ways to build one, costs and trade-offs

How to get a custom CRM: build from scratch, configure a customizable CRM, or declare your objects on a TypeScript framework. Costs, and what ChatGPT can build.

The Standards team

In short

A custom CRM is customer relationship software built on your own records and stages. You get one in three ways: build it from scratch, configure a customizable or no-code CRM, or declare your own objects on a CRM framework such as Standards, which serves the API and the admin app for you.

What is a custom CRM?

A custom CRM is a CRM whose data model matches your business: the objects you track (clients, households, contracts, orders), the fields on them, the stages they move through and the people allowed to change them. Vendors split the term in two. Creatio calls a customizable CRM a ready-to-use platform you adapt without heavy development, and keeps “custom CRM” for software built from the ground up (creatio.com, updated December 2025). Zendesk draws the same line: a custom CRM is “created specifically for a particular company”, while a customizable one is “a pre-made, off-the-shelf software tool” (zendesk.com, updated August 2025). The split leaves out a third option. On a CRM framework such as Standards, a developer declares your objects in code, and the platform runs the database, the API, the access rules and the screens. Your team then adds its own fields and views in the app. For a firm, the choice turns on who writes the model and who can change it next month.

What should a custom CRM include?

A custom CRM your team can rely on includes more than a contacts table, whichever route you take to get it. Before you choose a vendor, an agency or a framework, check that the result gives your team the pieces below, and that someone on your side knows who maintains each one after launch:

  • objects that match your records, with relations between them (households, contacts, contracts);

  • fields, options and stages you can change without waiting for a release;

  • roles and permissions per object and per action;

  • validation on every write, so bad data is refused before it lands;

  • views your team works in: tables, kanbans, filtered tabs and record pages;

  • an API for your scripts and integrations, and agent access over MCP;

  • backups, and an export of every record if you leave.

Three ways to build a custom CRM

You can build a custom CRM from scratch, configure a customizable or no-code CRM, or declare your objects on a CRM framework. The three routes differ on who writes the model, what exists on day one, what it costs, how long a first usable version takes, who maintains it and where it stops fitting.

Build from scratch

Customizable or no-code CRM (such as Salesforce)

CRM framework (Standards)

Who writes the data model

Your developers or an agency

An admin in the vendor's settings, or partners and developers who build apps on the platform

A developer, in one TypeScript file; your team extends it in the app

What exists on day one

Nothing: database, API, login, roles and screens are all to build

The vendor's objects, screens and reports

A REST API, validation, permissions, an admin app and agent tools for each object you declare

Typical cost

Tens of thousands to $200,000 or more to build, by Zendesk and Knack (2025, 2026), then hosting and upkeep

A subscription plus admin time

A per-person monthly price, set-up included, quoted on the first call

Time to a first usable version

Weeks, months or even years, by Zendesk (August 2025)

Ready to use right away, by Zendesk (August 2025); a few days or weeks with Knack, by Knack's own account (October 2026)

About five minutes to a first typed record in the Standards quick start

Who maintains it

You, for hosting, security and upgrades

The vendor

Standards runs the platform; you own the schema in your repository

Where it stops fitting

When the budget or the team runs out

When a rule needs custom development on the vendor's platform

When you need a screen the views and pages do not cover, which you then build against the API

What you keep if you leave

Everything you built

An export of your records

The schema in your repository and every record, by API or CSV

Build from scratch when the CRM is your product and a product team runs it. A standard sales pipeline sits well in a customizable CRM, while a framework suits a firm whose records do not look like a pipeline and who has, or hires, one developer.

How much does a custom CRM cost?

A custom CRM built from scratch costs tens of thousands to $200,000 or more before the first user logs in, by the estimates of the CRM vendors themselves, and the running cost comes on top. The figures differ by source:

Source

Figure for a from-scratch build

Date

Knack

“$50,000 to $200,000 or more” for full-code development

read October 2026

Zendesk

“tens, or even hundreds of thousands of dollars”; some sites quote a start “around $5,000”, others “more like $20,000”, and the cost “can balloon to over $100,000”

updated August 2025

Salesforce

no figure: cost and timeline “depend entirely on the scope and complexity of features you require”

read October 2026

Those figures cover the build. The running cost follows: hosting, security patches, backups, and a developer on call when a field changes. A customizable CRM turns that into a subscription plus admin time. Standards is priced per person per month, set-up included, and the team quotes the price on the first call: you pay for the platform, and your developer spends their hours on your objects.

When is a custom CRM worth it?

A custom CRM is worth it when your records do not look like a sales pipeline: a household that holds several people, contracts with renewal dates, cases with their own stages. A customizable CRM can follow those records, but each rule its settings cannot express becomes custom development on the vendor's platform, and a from-scratch build costs more again, in money and in months. In return you get a model that matches your work, with roles per object and an API your scripts can call, and someone on your side has to write that model and own it as the firm changes. If nobody on your side writes code, a no-code builder fits better than a framework or a from-scratch build.

Can ChatGPT create a CRM for me?

Yes for the code, no for the system around it: ChatGPT or a coding tool such as Cursor can write much of the code for a small CRM, and that code is the easy part. A CRM your team can rely on also needs a database with migrations, sign-in, roles per object, an admin screen for the people who do the work, validation on every write, backups and someone who answers when it breaks. Each new prompt rebuilds a slice of that layer differently, which the Standards vibecoding guide calls the place “where vibecoded apps rot”. Let the AI assistant write the code it writes well, and leave the rest to a platform. On Standards, a coding agent writes your schema file and the jobs around it, while the workspace serves the tables, the API and the back office your team works in.

Standards' own model catalog runs this way, with 42 attributes, 10 view tabs, two work queues and no admin component in its repository, as the same guide shows. Claude Code, Codex and Cursor then read and write those records over MCP with your permissions. The ChatGPT app for Standards is not published yet.

Is there a TypeScript framework for building a custom CRM?

Standards is a TypeScript framework for business applications where you declare a CRM's objects once and the platform derives the rest. A developer writes each object with the object() builder: its attributes, their types and options, its relations. One call, standards.bundles.sync(crm), pushes it to the workspace, and each object then gets:

  • a REST API;

  • validation on every write;

  • permissions per object and per action;

  • an admin app with the views you declared;

  • tools that AI agents call over MCP.

How Standards works walks from the declaration to each of them. Standards writes nothing into your repository and runs no codegen step: TypeScript reads the types from your declaration. It refuses a stage your schema does not declare, or a filter on a field that does not exist, before the request leaves, and records come back with their dates as Date objects. The type safety page of the Standards docs shows each verb's type and where the types stop. Standards runs on its cloud, on a dedicated instance under your hostname, or under license on your own servers.

import { bundle, object, select, text } from "@standards/client";

export const deal = object("deals", "Deal")
  .attribute(text("name", "Name").required())
  .attribute(
    select("stage", "Stage").options([
      { value: "lead", label: "Lead" },
      { value: "won", label: "Won" },
    ]),
  )
  .labelExpression("{{ name }}");

export const crm = bundle("crm", "CRM").add(deal);

On Standards, your users change the model too, without a developer. In the app they add fields, kanbans, filtered tabs and objects of their own, and the next sync from your code leaves them in place; they cannot rename, retype or delete what your code declared. The developers page gives the overview for a technical lead.

How to build a custom CRM on a framework in five steps

You build a custom CRM on a framework one object at a time, starting with the records that live in a spreadsheet today. The steps below follow the Standards quick start, which takes about five minutes for a first typed record.

  1. You list the records your work turns on (clients, households, contracts, cases) and the stages and fields each one needs, starting with the object that hurts most today.

  2. Your developer creates an API key with a role allowed to change the schema, installs @standards/client on a Node 22 server, and declares that first object in one TypeScript file.

  3. Your developer runs bundles.sync, and the object appears in the app with its table and record page, its API and its permissions.

  4. Your developer loads the existing rows with createMany, and your team adds the fields and views it needs in the app, without waiting for a developer.

  5. Your developer declares the next object, or asks Claude Code to write the jobs around your records, with the workspace connected over MCP so the agent reads the real records while it writes the code.

If your client data sits in one large spreadsheet, our guide to turning a client spreadsheet into a customer database covers step one in detail.

Example: a fictional advisory firm builds its CRM

Northgate Partners is a fictional fifteen-person advisory firm, used here as an example. Its client files never fit a sales pipeline: a household holds several people, each person holds contracts, and each contract has a renewal date and a set of supporting documents. The firm had started on a Notion template, the low-cost route our article on using Notion as a CRM walks through, and wanted roles per object and an API for its scripts. Its one developer declares three objects in Standards (households, contacts and contracts) with the relations between them, and syncs them. The advisers open the app the same day and see a table and a record page for each. A week later, the operations lead adds a “referral source” field to contacts and a filtered tab of contracts sorted by renewal date, in the app. The developer's next sync changes the contract stages and leaves both additions in place.

On Standards, the sync will not guess a rename or a retype in code: it stops with SCHEMA_AMBIGUOUS_CHANGE and asks whether to keep the values, before it writes anything.

Questions

Before you switch tools.

Yes. With a developer, you can declare your own objects on a framework such as Standards and get the API, permissions and admin app from the platform. Without one, a customizable CRM or a no-code builder lets an admin add fields and stages. Building from scratch needs a team for the database, sign-in, roles and screens, and for their upkeep after launch.

A custom CRM takes from a few days to several years to reach your team, depending on the route and the scope. Zendesk writes that a custom-built platform “can take weeks, months, or even years to build, test, and implement”, and that your team stays on its old system until launch (zendesk.com, updated August 2025). On Standards, the quick start takes about five minutes to a first typed record; the time after that goes to your own objects and imports.

Not on Standards. Anyone with the right role adds an attribute, a view or an object of their own in the app, and the next sync from your code keeps it. What your code declared stays locked in the app: users cannot rename, retype or delete it, so the fields your integrations depend on do not move under them.

You keep it. Your schema is TypeScript in your own repository, versioned like the rest of your code. Every record is one API call away: the SDK walks an object 1000 records at a time with all(), and export() downloads any query as CSV. A dedicated instance or a license also lets you run Standards on servers you choose.

  1. Standards expects a developer to declare the core objects in TypeScript, and your team extends them without code in the app afterwards. If nobody on your side writes code, a customizable CRM or a no-code builder fits better. If you have one developer, the framework spares them the API, the roles and the admin screens.

Declare your first object today

Declare one object in TypeScript, sync it, and let your team extend it in the app.