Build with AI

How to build a CRM with OpenAI Codex

Stop paying per seat for a pipeline that does not match how you sell. Contacts, leads, deals, a board your team moves them across, and access rules the database enforces, described one task at a time from your terminal, with Codex writing the migrations, the policies, and the screens as diffs you approve.

August 2026 · 37 min read · Updated September 2026

OpenAI Codex

$ Build a CRM with contacts, leads, and deals on a pipeline my team can drag records across, with an admin-and-member split so a rep reaches their own records and an admin reaches the team’s.

  • Schema written as migrations
  • Access rules enforced in the database
  • Ready for your review
You describe it, Codex builds it
Start here

What a CRM actually is

A CRM, or customer relationship management, is the system where a business keeps every lead, contact, and deal, and tracks each interaction across the whole customer lifecycle.

Before a CRM, that information lives in spreadsheets, inboxes, and people’s heads, so deals slip, follow-ups get missed, and no one can say what is really in the pipeline. A CRM pulls it all into one place.

The point is not software for its own sake. It is to build and keep customer relationships that grow revenue: know who to follow up with, move each deal forward, and see what is actually working.

One source of truth

Every lead, contact, deal, and conversation in one place, so sales, support, and marketing all see the same picture.

A pipeline that moves

Track each deal from first touch to won, spot what is stuck, and forecast revenue instead of guessing.

Growth you can measure

Conversion rate, pipeline value, and average deal size become numbers you can act on, not gut feel.

The return on a CRM

310%

returned on average for every dollar spent on a CRM, in Nucleus Research’s 2023 analysis of 63 case studies, the payoff of getting your pipeline out of spreadsheets and into one system.

Nucleus Research, 2023 (63 CRM case studies) · checked August 2026

What a CRM needs

The parts every CRM is built from

It is worth knowing the pieces before you start. Almost every CRM reduces to these six, and each one is a thing you describe in plain words rather than build.

01

A data model: contacts, leads, and deals

The core of any CRM. Contacts are people, leads are potential customers, and deals are the opportunities you move toward revenue. Everything else (notes, tasks, activity) hangs off these three.

02

A visual sales pipeline

Deals travel through stages, from first contact to won or lost. A board or list view shows what is where, so nothing stalls silently.

03

Accounts and access control

Everyone signs in, and each person sees only what they’re meant to: admins run the team and settings, reps work their own leads. It’s what keeps your customer data private and in the right hands.

04

Forms that validate

Every record is created through a form. Checking input before it saves is what keeps your data clean instead of full of broken or half-empty rows.

05

Reports and dashboards

A few charts over the same records (win rate by stage, where deals stall, revenue on the way in), so the next move comes from the data in front of you, not a hunch.

06

Import and export

Your leads already live somewhere, a spreadsheet or another CRM. Getting them in, and being able to get them back out, is table stakes, not a nice-to-have.

Build vs buy

Own your CRM or rent it forever

Most teams reach for a hosted CRM by default, then watch the bill climb with every new hire and end up reshaping how they sell to fit the tool. Owning your CRM flips that. Here’s the trade-off, side by side.

Build your own

A CRM you build once and shape exactly to how your team sells, and with an AI coding tool handling the plumbing, that build takes days rather than a quarter.

  • Pay to build it once, then only your own infra bills: no per-seat subscription
  • A data model, stages, and roles that match exactly how you sell
  • Add unlimited users without jumping to a bigger plan
  • Change anything by describing it, instead of waiting on a vendor’s roadmap
  • Add your own AI on the model you choose: lead scoring, email drafts, deal-risk alerts
  • You own the code and the data outright: export whenever you like, with zero lock-in

Buy a SaaS CRM

HubSpot · Pipedrive · Salesforce

A hosted CRM is faster to switch on, but you pay per seat forever and bend to its data model.

  • Live in minutes: sign up and start, nothing to build or host
  • Polished UI, mobile apps, and vendor support included
  • Hundreds of ready-made integrations and an app marketplace
  • Per-seat pricing that climbs with every new hire
  • The automation and reporting you want often sit on a pricier tier
  • Their data model and limits: deep customization is capped
  • Your data lives on their servers, exported on their terms
HubSpotFree for 2 users, then $7-$20 / seat / mo

A genuinely useful free CRM for up to two users. Starter is $7/seat/mo on annual billing but $20 month-to-month, and the bill jumps sharply at Professional ($90/seat/mo annual, $100 monthly, plus a one-time $1,500 onboarding fee), where the automation, sequences, and reporting most teams want are gated.

hubspot.com · checked August 2026

PipedriveFrom $14 / user / mo

No free tier. $14/user/mo on annual billing for Lite ($24 month-to-month), then climbing steeply per tier (Growth $39, Premium $59, Ultimate $79) with email marketing and web-visitor tracking as paid add-ons on every plan.

pipedrive.com · checked July 2026

SalesforceFrom $25 / user / mo

The most powerful and the most complex. Starter Suite is $25/user/mo and the only edition billed monthly. Real use jumps to Pro Suite ($100/user/mo) and Enterprise ($175), both annual only, before add-ons like Agentforce.

salesforce.com · checked July 2026

Rule of thumb: if you have a handful of seats and a process that does not fit an off-the-shelf CRM, building your own pays for itself within months and never charges you again. If you need deep third-party integrations and enterprise support today, buy, then revisit once the subscription outgrows the value.

No dev needed

Why build with Codex

Most software looks simple from the outside, but almost all of the actual work is invisible: a database, logins, permission checks, forms that validate what people type, and dozens of screens that read and write records. Doing that by hand means knowing the whole stack cold, so weeks pass before the first feature a customer would notice actually works.

Codex closes that gap by working the way a developer would, just faster. The whole workflow becomes a simple loop:

The build loop
1

Describe

Tell Codex what you want, in plain language.

2

Build

It edits the real project files, backend and auth and UI, rather than replying in a chat.

3

Check

Run the app yourself and confirm the change works.

Repeat

Describe the next change.

Loop back to Describe

None of that loop needs a computer-science background, which is why one person can take an idea to a working app over a handful of focused sessions.

Three hard partshandled for you

The data model, authentication, and access rules are the pieces that make software like this genuinely hard to build alone. Describe them and Codex scaffolds all three, leaving mostly screens to build on top.

Any language is the interface

There’s no code to write, and no requirement to describe it in English. Ask for a new field, a renamed step, or an AI summary in whatever language you think in, and Codex implements it.

Local files it edits directly

Codex works on the project on your own disk rather than a copy somewhere else, so what it changes is exactly what you see when you run the app. Point it at the handful of files that matter and it stays fast and focused.

What it costs

Pay a developer, or do it with AI

Two ways to get the same app built: pay a developer for their hours, or spend your own describing it to an AI coding tool. Here is what each one costs to build, and what it costs to keep running once it is live.

Hire a developer

Custom build, from scratch
Developer
~$11k-$42k
Supabase (backend)
Free tier · $25/mo (Pro plan)*
Hosting
$0 free tier
Build time
~210 hrs of their work

~$11k-$42k to build, then ~$25/mo after launch

What moves that number is seniority, not scope. It is our ~210-hour estimate run through the bands in the rate survey below. North American freelancers sit between $40 and $150/hr depending on experience, and agencies add 20-40% again on top, so the realistic floor is about $50/hr and an agency with a senior on the job lands near $200/hr. All of it buys baseline functionality, spent before a single deal exists. Afterwards there is only the database and the host to pay for.

Build it with Codex

From scratch, with Codex
Codex
~$20/month (Plus) to ~$200/month (Pro)
Backend (Supabase)
Free tier · $25/month (Pro plan)*
Hosting
$0 on a free tier
Your time
~100 hrs

~$20-$200/month while you build, then whichever plan you keep using

Codex itself is free to install. The cost sits in the ChatGPT plan behind it, or in API usage if you sign in with a key instead. Plus, around $20/month, covers a template import or a short build. A from-scratch build that runs for weeks usually needs Pro’s top usage-multiplier tier instead, which lands around $100 to $200 a month. The fee doesn’t shrink when you start from a template the way a per-hour developer bill would: the template changes how many of the hours in the estimator above you actually spend, not which ChatGPT plan you’re paying for.

* The free Supabase tier is sized for building rather than for a team selling on it: 500 MB of database, 2 active projects, and a pause after a week of no activity, which for a CRM means your reps arriving at a dead app on Monday morning. The Pro plan, from $25/mo, keeps it awake.

Both columns end with the code belonging to you, no per-seat subscription, and the tenth rep costing exactly as much as the first: nothing. No transaction fee appears in either column, because a CRM records what a deal is worth rather than charging for it. The one place a percentage ever shows up is if you later invoice or take payment from inside the app, and the payments section below prices what that costs.

Prices and rates from supabase.com, developex.com and learn.chatgpt.com, checked August 2026.

Plan first

Decide before you build

Six decisions about how your team sells, none of them technical, all of them cheaper to settle now than to change once records exist. Write your answers down before the first prompt.

01

Your data model

What you actually track. Every CRM starts with contacts, leads, and deals, so decide the extra fields and objects your process needs, like company size, lead source, or renewal date, so the schema fits how you sell from day one.

02

Authentication

How people sign in. Email and password is the baseline, so decide early whether you also want magic links, Google, or SSO, because it shapes the login screens and your Supabase Auth setup from the start.

03

Roles and access

Who sees what. Most teams need at least admin and member, so decide whether reps see only their own leads or the whole pipeline, and whether you also want manager or read-only roles, before you write the access rules.

04

Where the data lives

Your own Supabase project, in a region you choose. Settle this up front, because it is where every record, login, and file lives, and owning it keeps privacy and GDPR compliance in your hands.

05

Volume and scale

How many records and users, roughly. A solo pipeline and a 20-person team pull differently on indexes, imports, and your Supabase tier, so knowing the ballpark now saves reworking the schema later.

06

Who sends your email

Reminders, follow-ups, and alerts need a provider: Resend, Postmark, and Amazon SES are the usual picks, all with free tiers big enough to start. Do not plan on Supabase’s built-in email: it is rate-limited and meant for sign-up links, not for mail your customers receive. Pick one before you build the notifications, because it decides how they get wired up.

Approaches

Comparing your build options

Where you start decides how much of the estimate disappears into work no salesperson will ever see. Here is the same CRM three ways: entirely by hand, on a UI kit that stops at the screens, or with Codex working task by task on the real source.

~210 hrsBuilding by hand

Programming the rules behind the screens consumes most of your time and money. Moving a deal through its stages, keeping every call and email attached to the right person, scoring what is worth chasing, and totalling a forecast are invisible logic that can’t just be designed, so it must be coded, and a mistake in it costs you a deal you thought was closing.

~155 hrsGeneric UI starter kit

Starter kits save time on visuals by offering ready-made dashboards, tables, and settings. However, a kit knows nothing about your business rules. You still need developers to program your pipeline logic and configure security, ensuring one rep never sees another’s accounts and commissions.

~100 hrsAI-powered development with Codex

Instead of writing code, you describe one feature at a time in plain language and read back the change before you keep it. It links your screens to the database itself and sets up who may see what, so you can sign in as one of your reps and check exactly which accounts and deals they can reach.

Interactive calculator

Estimate your exact build timeframe

Check off exactly what your CRM needs and watch the estimate update instantly, tuned to your own scope instead of a generic guess.

What your CRM needs

Your estimate

100 hrs

start to finish

Based on the 6 of 6 features you’ve selected, plus ~36h of groundwork. Toggle any on the left to watch the number move, and open the groundwork row to untick what you have already, such as a database that is already running or going live if you are only building a mock-up for now.

A rough estimate, not a quote. Real time depends on how much you customize and how clean your data is.

Setting up your workspace

Let’s set up the tools you need

Before step 01, four things go on your computer. It takes about 15 minutes in total, and none of it is coding. Three are ordinary installers, and the fourth is a ChatGPT plan with Codex access switched on. After that, you build by describing what you want in plain language.

1

OpenAI Codex

Cost: Free to install · needs a paid plan to build with

Your main AI assistant. The app itself costs nothing and installs with a single command from OpenAI, then runs in your Terminal. What it costs to use is the next card: every request spends the usage allowance on your ChatGPT plan, and the free plan’s allowance is small enough that a build of this size stops early. Codex is also built into an extension for popular code editors and into the ChatGPT desktop app, which can hand a longer task off to Codex cloud to keep running in an isolated environment while you do something else.

Install Codex CLI
2

ChatGPT plan

Cost: ~$20/month (Plus) or from ~$100/month (Pro)

Codex is technically included on the free ChatGPT plan too, but Free’s usage is the tightest of any tier. OpenAI doesn’t publish Free’s own cap, only that every paid tier gets a larger multiple of it, so treat Free as a way to try Codex rather than to build with it. ChatGPT Plus, around $20/month, is the realistic starting point, and a long, from-scratch build tends to need the top ChatGPT Pro tier, priced by usage multiplier at roughly $100 to $200/month. Codex can also run on pay-as-you-go API billing instead of a ChatGPT plan, if you’d rather pay per token than hold a subscription.

Compare ChatGPT plans
3

Node.js engine

Cost: Free

The engine that runs your app on your own computer. You never have to learn how it works: download the version marked LTS (the most stable one), install it, and forget about it.

Download Node.js (LTS)
4

Supabase (database)

Cost: Free to start

Where your project keeps its data. Install it, then sign in once by running supabase login. Words like migrations and row-level security turn up later in the guide, and Codex writes those parts for you.

Install Supabase CLI

Nothing here is worth memorizing. These four just need to exist on your machine. From step 01 on, you say what you want and Codex runs the commands.

Step by step

Build your CRM core, one Codex task at a time

You describe a task and Codex writes the files and runs the commands. No code to write yourself. The order below is deliberate: the project, then what you track, then who can reach it, then the screens that read both. Give Codex one task, read the diff, then start the next.

  1. 01

    Write AGENTS.md before anything is scaffolded

    Codex reads AGENTS.md at the start of every task, so writing it first means your conventions are loaded before there is any code to be inconsistent with. The scaffold comes second, in the same task.

    PromptSet up the project
    Start by writing an AGENTS.md at the project root: the stack is React 18, Vite, TypeScript, Tailwind, and the Supabase JS client, and this project is a CRM, so fix the vocabulary you should keep consistent (contacts, leads, deals, stages, activities) along with any conventions you want held to. You load that file automatically at the start of every later task, so nothing in it needs repeating by hand. Then scaffold the project itself: a typed Supabase client under src/lib reading VITE_SUPABASE_URL and the publishable key (the sb_publishable_… key that replaced the older anon key) from .env, with .env confirmed present in .gitignore. Start the dev server once to prove it boots before you stop.

    Writing AGENTS.md first is what stops task five from inventing its own name for what task two already called a deal.

  2. 02

    Have Codex write the schema, and read the SQL before it runs

    Three tables carry the whole product. Ask to see the migration before it is applied. This is the one shape that is expensive to change once records exist.

    PromptSet up your records
    Write the Supabase migrations for a CRM. Contacts are the people: name, email, company. Leads are potential customers, each linked to a contact and carrying a source and a status. Deals are the opportunities, each linked to a lead and carrying a value, a stage, and an expected close date. Give every table a user_id owner column and a created_at. Print the SQL for me before it runs, and regenerate the TypeScript types once it is applied.

    A contact is a person, a lead is an opportunity to sell to them, and a deal is the money. Collapsing any two of those is the modelling mistake that costs a rewrite.

  3. 03

    Narrow permissions, then wire up sign-in

    This task touches authentication, which is exactly the kind of change worth scoping Codex down for rather than leaving the wider settings you would use for routine edits.

    PromptAdd logins
    This task touches authentication, so narrow your permissions to just this one rather than keeping whatever you had set for routine edits. Add Supabase Auth with email and password: sign-up, login, logout, a persisted session, a useUser hook, and a route guard that sends signed-out visitors to /login. Keep the screens minimal for now. We will design them properly once the data is behind them.

    Everything after this step assumes there is a signed-in user to attach records to, so it comes before the screens rather than after.

  4. 04

    Read this diff properly: it is the one protecting customer data

    Roles, then the database rules that enforce them. Of every diff in this build, this is the one to actually read rather than approve on trust.

    PromptAdd roles
    Create an app_role enum with 'admin' and 'member', and a user_roles table linking a user_id to a role. Keep roles in that table rather than in the user's auth metadata, which the user can edit themselves. A role stored there would let anyone promote themselves to admin. Add a SECURITY DEFINER function has_role(_user_id uuid, _role app_role) that reads user_roles, so the policies in the next task can call it without recursing. One migration, and show me the SQL before it runs.

    Roles in user metadata is the classic Supabase privilege-escalation hole. This prompt exists to avoid it.

    PromptLock the data to those roles
    Turn on row-level security for contacts, leads, and deals. A member may select, insert, update, and delete only rows where user_id = auth.uid(). An admin, checked through has_role, reaches every row. Give every insert and update an explicit WITH CHECK clause, so nobody can create a row owned by someone else or move an existing one onto another user. Put the policies in a migration, then walk me through proving it: a second member reading the first member's records should come back empty, an admin should see both, and a member should be refused when inserting a row assigned to anyone but themselves.

    Skip this and every signed-in user can read every record, however carefully the screens filter.

  5. 05

    Point Codex at the screens, a few files at a time

    The list, the record view, the forms, and the board are what your team looks at all day. Codex only needs the files each screen touches, not the whole project.

    PromptBuild the screens
    Now the screens, on top of what is already there. A searchable contacts list. A detail view for a lead or a deal showing its fields and a timeline of activity. Create-and-edit forms validated with zod and react-hook-form, so a half-filled record cannot be saved. And a drag-and-drop board for deals where moving a card writes the new stage straight back to Supabase. Keep the data access in typed hooks rather than spread through the components.
  6. 06
    Destination

    Walk it end to end, then hand the next feature to a cloud run

    Click through the whole flow yourself first. After that, the dashboard and the CSV import are long, well-scoped pieces of work, reasonable ones to hand to a cloud run while you do something else, provided you read the diff before it merges.

    PromptTry it and plan what’s next
    Run the app and take it end to end yourself: sign up, add a contact, create a lead and then a deal against it, and drag that deal across the pipeline. Fix whatever does not hold up. Then list what to build next (a dashboard, CSV import, an AI helper) in priority order, and tell me which of them are self-contained enough to hand you as a single cloud task rather than working through interactively.
Authentication & security

Built-in security for your most critical data

The records in a CRM belong to your customers rather than to you, which is what makes this section worth reading rather than skipping. Most of what follows arrives wired in as you build. The two things that need a paid plan or real work of their own say so plainly.

Proven logins

Nobody here writes password handling. Sign-up, sign-in, and staying signed in come from a system that has been attacked for years and held up, with email and password working immediately. Google sign-in or one-click email links are a small addition when you want them.

Two-factor is something you build

Two-factor sign-in (2FA) is the strongest thing you can put in front of an account, and Supabase supports it, but no switch exists to flip. You ask for it to be built: a screen to enrol a phone or app, a way to turn it off again, an extra step at login, and (the part people miss) access rules that require it. Budget a few hours for it, and add it before you hold anything sensitive.

Roles and permissions

Decide who can do what. A simple admin-and-member split covers most teams: admins manage everyone and the settings, members work their own records. Ask for manager or read-only roles whenever you need them.

Everyone sees only what their role allows

A member reaches their own records and nothing else. An admin reaches the team’s. That’s enforced by the database itself, not just hidden on the screen, so even if someone queried the raw data directly, they’d get back nothing their role doesn’t allow.

Administrative keys stay protected

The only key your app carries is a “public” one, designed to be seen, because the access rules above are what actually guard the data. The “master” key that bypasses those rules never leaves the server, not in the app, not in a repository.

Automatic daily backups on Pro

Nothing is backed up on the free tier, so during the build your database is the only copy of it. From $25/mo, Supabase Pro keeps a daily backup with 7 days of history behind it, which is what turns a mistaken bulk delete or a bad import into an inconvenience rather than the end of your pipeline. Be on it before real customer records go in.

PromptCheck who can see what
Review the access rules (row-level security policies) on every table. For each one, tell me in simple terms who can view, add, edit, and delete records, confirm that people can only reach their own data while the right roles can reach more, and flag anything left open that shouldn’t be.

Paste this before launch so Codex checks nobody can see data they shouldn’t.

The one rule that matters: never put your secret (master) key in the app or a public repo. If it ever leaks, reset it in the Supabase dashboard right away.

Workflow rules

What speeds the build, and what slows it

Speeds the build

  • An AGENTS.md file at your project root: Codex reads it automatically before every task, so you never have to remind it
  • Setting Codex’s permissions once for the session, instead of approving every small edit by hand
  • Handing a long, well-scoped task to Codex cloud, so it keeps working in an isolated environment while you do something else
  • Reviewing a diff in the IDE extension, next to the code it touched, before you keep it

Slows the build

  • Leaving permissions wide open for a sensitive change instead of narrowing them for that one task
  • Skipping the AGENTS.md file, so Codex starts each new task without your conventions loaded
  • Handing Codex cloud a vague, open-ended task, where you can’t steer it mid-run the way you can in a live terminal session
  • Merging a cloud task’s changes back in without reading the diff first
Version control

Git: what it is, and why you need it

Before you build anything, meet the one tool that makes building safe. You need no coding background for it: Git remembers every version of your project, so you can try things, break things, and get back to a working state in seconds.

What Git actually is

Git is a quiet recorder that runs alongside your project. Each time you save your work it keeps a full snapshot, so the entire history of your project lives on your computer, not just whatever the files look like right now.

Why you need it

Codex asks before it edits files or runs commands, unless you widen its permissions for the session. Once you do, Git is what makes that safe: there’s always a working version to return to, so you can hand it a bigger task without the fear of losing what already works.

A commit is a save point

Each commit is a snapshot with a short note, like “added the home page”. Make one after every working step and you can jump back to any of them later.

GitHub’s beginner guide to Git

Undo anything, safely

If a change breaks something, you roll back to the last good commit instead of unpicking it by hand. It’s the safety net that keeps a Codex session low-risk even once you’ve widened its permissions.

GitHub is also where Codex can start from

Git lives on your computer. GitHub is a free, private cloud copy of the same project. Keep it private, and never commit secret keys or passwords. Once your project is pushed there, Codex cloud can pick up a task straight from a GitHub issue or repo, without you opening a terminal at all.

Create a free GitHub account

You rarely type git commands

There’s little to memorize. Ask Codex to “commit this” or “undo the last change” and it runs the git steps for you, inside whatever permission boundary you’ve set. Prefer clicking to typing? The Codex extension for your editor shows each change next to the code it touched before you keep it, and GitHub Desktop gives you plain buttons for saving and rolling back.

Get Codex
Going live

Where to host your application

Hosting gives your app a home on the internet so anyone can open it via a web link. Choose a service below to make your site live. (Your database, logins, and business records are stored separately in Supabase, covered below).

HostBest forNotesFree tier
VercelOne-click deploysHook up the repository and every push publishes itself. A standard Vite project needs nothing configured. The licence is the part to read: Hobby covers personal, non-commercial projects, and a CRM your sales team works in fails that test however small the team, so budget for Pro at $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitLink the repository, or skip that entirely and drop the built folder onto the page. Quickest route to a link you can put in front of your team today.Free tier
Cloudflare PagesCheapest at scaleOne setup, then everyone loads from whichever Cloudflare location is nearest, which only really matters if your reps are spread across time zones.Generous free tier
GitHub PagesFree Git-based hostingServes the site straight out of your GitHub project once a single routing setting is in place. The catch: publishing from a private repository is a paid GitHub feature, and this guide tells you to keep a CRM’s repository private, so count this as free only if you are genuinely willing to publish the code, which here you should not be.Free from a public repo only
Firebase HostingSimple setup, Google stackConfigure once, then ship with one command each time. Worth choosing mainly when your company already runs on Google and this saves explaining a new vendor.Free Spark tier
AWS Amplify HostingTeams already on AWSSet up through the AWS console, with a single rewrite rule to keep deep links working. Sensible if AWS is already where your invoices come from.Free tier (build + hosting)
SurgePublish from the terminalOne command, and the built folder is online. No repository anywhere in the loop. Handy for putting a half-built board in front of a colleague for an opinion.Free - unlimited publishing
DigitalOcean App PlatformDigitalOcean usersPoint it at the project and it takes care of building and serving, alongside anything else in that account.Free - 3 static sites, 1 GB/mo transfer

All of them will serve this app, and your AI coding tool can wire up whichever you pick. The thing worth checking first is not the price but the licence: free does not automatically mean free for *business* use, and Vercel’s Hobby tier says plainly that it is for personal projects. An internal CRM is company use even if only three people ever sign in.

Database & backend

Keep your data in Supabase

Three things live here rather than on the host above: the Postgres database holding every record, the accounts your team signs in with, and the edge functions any AI feature calls.

ServiceBest forNotesFree tier
SupabaseData, auth, functionsThe database, the logins, and the server-side functions the AI features call. Create a free project, hand over its URL and publishable key, and the app is connected to it.Free tier, then usage-based
If you collect money from it

Choosing your payment system

This CRM records what a deal is worth. It never charges a card, and nothing here is needed to run it. If you later decide to invoice or take payment from inside it, that is a separate provider, and it costs a percentage of everything you collect rather than a monthly fee.

StripeCharging the card yourself2.9% + $0.30 per domestic card, +1.5% international

The default for most builds, and the cheapest of the three per charge. You stay the seller of record, so sales tax and VAT are yours to work out. Sending invoices through it costs 0.4% of the invoice total on top, capped at $2 each.

stripe.com · checked August 2026

PaddleSelling software without handling tax5% + 50¢ per transaction

Merchant of record: it sells on your behalf and registers, files, and remits the tax in each country itself. Comfortably the most expensive rate here, and that gap is what the compliance is worth, a fair trade if you sell software across borders, and money wasted if you invoice ten local clients.

paddle.com · checked August 2026

PayPalCustomers who will not type a card3.49% + $0.49 per US transaction

More expensive than Stripe on every charge, with the same rate on invoices, and it buys you one thing: a customer who already has an account and will pay from it today. Worth having as a second option rather than the only one.

paypal.com · checked August 2026

Do the multiplication before you sign up for any of them. Unlike the database and the host, this is not a monthly bill you can size but a share of your revenue, forever. Closing $200,000 of business in a year costs about $5,800 to collect through Stripe and about $10,000 through Paddle. If your customers already pay you by bank transfer against an invoice, the cheapest payment system remains the one you have.

AI workflows

Power your CRM with native AI automations

Each of the three below is one more prompt once the CRM itself works. Copy them in as they stand: all three reach the model through one server-side function, which is the only place your key ever sits.

Lead scoring

Rank incoming leads by how likely they are to close, from their fields and recent activity, so reps work the best ones first instead of guessing.

PromptLead scoring
Create a server-side "ai" function that calls an AI model with the key kept in server secrets, never in the browser. Then add a "Score this lead" action to the lead view that sends the lead’s fields and recent activity to it, asks for a 0-100 score and a one-line reason, stores both on the lead, and colours the badge by score band. Lead scoring runs on every new lead, so pick the fastest, cheapest model tier for this one.

Draft follow-up emails

Generate a tailored follow-up from the deal’s stage, notes, and last contact, a first draft the rep edits and sends, not a blank page.

PromptDraft follow-up emails
Add a "Draft follow-up" button on the deal view that sends the deal stage, recent notes, and last-contact date to your ai function and returns a short, editable email draft in the rep’s tone. Show it in a modal with copy and insert actions. This one is everyday writing, so use a mid-tier model rather than the cheapest or the strongest.

Deal risk signals

Flag deals that are stalling (no recent activity, stuck in a stage too long, past the expected close), so nothing slips through the pipeline unnoticed. This is the one AI feature that runs on a schedule rather than on a click, so it needs somewhere to run from: pg_cron or a scheduled Edge Function, on a project that stays awake, which means Supabase Pro, since free projects pause.

PromptDeal risk signals
Schedule a nightly job (either pg_cron inside Supabase or a scheduled Edge Function, tell me which you picked and why) that asks your ai function to review open deals and flag ones at risk (no activity in 14 days, time in stage past ~1.5× the stage median, or an overdue close date), then surface a "Needs attention" filter on the pipeline board. Weighing those signals against each other is the one job here worth the strongest model tier, and it only runs once a night.

Each prompt above should pick whichever model tier fits the job: a fast, lower-cost model for high-volume work, and a stronger reasoning model for anything that weighs tradeoffs against each other. Codex’s model names change faster than this page does, so check OpenAI’s current model line-up (linked in the references below) before you build, rather than copying a name you saw once. Keep all of it behind that same ai function, so one key and one rule set covers every feature you add.

Ready-made option

Get a head start with our template

Everything above is the from-scratch path, building this CRM yourself. Want to start further along instead? Our ready-made template gets you past the scaffolding, so your time goes into customizing it.

Sales Pipeline CRM

The exact CRM this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. A sales workspace that helps your team stay on top of every deal. You move leads through stages from qualification to closing, track each deal's value and full history, assign work to sales reps, and watch conversion rate, pipeline value, and average deal size update on a live dashboard.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

The key benefits of starting with a template

The hard, invisible parts are already built and working, so your time goes straight to what makes the CRM yours.

Building the core from scratch

~100 hrs

Opening the template, already built

~1 hr

~99 hrs of building you skip

These two numbers measure different things: ~100 hrs is what it takes to build the CRM’s core yourself, and ~1 hr is how long the template takes to open and connect, since that core is already built. Customizing it for your team costs time either way, so neither side counts it.

A working CRM from day one

Open a functional app, not an empty folder. The contacts, leads and deals, the pipeline board, and every record screen already work.

Admin and rep kept apart

Admins manage the whole pipeline while reps strictly see their own accounts and deals. Privacy rules are enforced automatically by the database on every request.

All background automation, ready out of the box

Stage triggers, automatic assignment, follow-up reminders, lead scoring, and transactional email that reaches the inbox are fully configured.

Clean structure your AI can safely customize

The template follows clean, predictable rules so you can ask your AI coding tool to add custom features without risking errors in your pipeline totals or security rules.

Customer story

From founders who build on our templates

I braced for a week of wiring up auth and the database, but the template shipped with all of that already working. So I spent my time on the parts that matter: renaming the pipeline stages, adding the fields we actually use, making it ours. The team was working off it by the end of the day.
Jeevan ThomasJeevan ThomasFounder & CEO, Hado.ai
Got questions?

Common questions

No. Describe what you need in ordinary language and the tables, the logins, and the access rules get written on top of Supabase for you. The one job that stays yours is creating the free Supabase project it all points at, which is what keeps the data in an account you own.

Yes. Describe the roles you need (admin, member, manager) and the accounts, access rules, and lead assignment get built around them, so everyone signs in and sees only what they should.

Yes. Add a small server-side ai function and route lead scoring, email drafts, and deal insights through it. Pick the model tier that fits each job (the cheapest and fastest for anything that runs on every record, the strongest for the once-a-night reasoning) and keep the provider key on the server, never in the app.

Two bills, both yours and both starting at nothing: Supabase for the backend, and a host for the site. A CRM your team signs into every day needs Supabase Pro, from $25/mo, because free projects go to sleep after a week of inactivity. Whichever host you choose may want a paid plan too, for the licensing reason above rather than for the traffic. Prices checked July 2026 (see the references at the foot of this page).

Only the people you give accounts to, and each of them only what their role permits: a member their own records, an admin the whole team’s. Nobody outside your company reaches any of it. Because the database is a Supabase project you created, you are the sole controller of that data for GDPR purposes, which also makes a deletion request something you can actually answer.

The only key the browser ever holds is the public one, and it is useless on its own: every table carries row-level security rules, so the database itself decides which rows that user is allowed to touch. Anything powerful (the master key, the AI provider key) stays server-side in the edge functions and is never bundled into the app.

No lock-in at all, because nothing underneath is proprietary. It is a plain PostgreSQL database, so pg_dump or the Supabase CLI gives you every contact, lead, and deal in a form any Postgres host accepts.

Yes. You can upload a CSV straight into your Supabase tables (up to 100 MB per file), or ask for a quick importer that maps your old CRM’s export onto the new fields.

Yes. Whichever host you pick for the frontend (Vercel, Netlify, Cloudflare Pages, and others) lets you connect a custom domain with free HTTPS in a few clicks.

No, though you will type the occasional command: installing Codex, starting the app, applying a database change. The setup section above lists what you need, with a link for each, and once it’s on your machine Codex runs most of those commands for you.

A regular ChatGPT chat can sketch ideas and write snippets, but it isn’t working on your actual project. Codex reads and edits the real files on your computer. The app you get out of it is one you can run and publish, not a preview.

On a ChatGPT plan, Codex’s usage resets on a rolling window rather than billing per token, so a heavy day of building can bump into a limit. You either wait for it to reset, move up a plan, or switch to pay-as-you-go API billing for the rest of the session. Nothing you’ve already built is lost either way, so the work only pauses.

References

Sources checked August 2026
  1. 01What is CRM? definition and purpose, Salesforce. salesforce.com
  2. 02CRM returns $3.10 per $1 spent, Nucleus Research. nucleusresearch.com (published 2023)
  3. 03Sales Hub pricing, HubSpot. hubspot.com
  4. 04Pricing, Pipedrive. pipedrive.com
  5. 05Sales Cloud pricing, Salesforce. salesforce.com
  6. 06Pricing (Pro plan, free-tier limits), Supabase. supabase.com
  7. 07Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  8. 08Importing data (CSV size limit), Supabase docs. supabase.com
  9. 09Row Level Security, Supabase docs. supabase.com
  10. 10Stripe pricing. stripe.com (August 2026)
  11. 11Paddle pricing. paddle.com (August 2026)
  12. 12PayPal merchant fees. paypal.com (August 2026)
  13. 13Pricing (plans, usage limits), ChatGPT docs. learn.chatgpt.com
  14. 14Codex CLI, ChatGPT docs. learn.chatgpt.com
  15. 15API pricing (models), OpenAI for developers. developers.openai.com
  16. 16IDE extension, ChatGPT docs. learn.chatgpt.com
  17. 17ChatGPT desktop app, ChatGPT docs. learn.chatgpt.com
  18. 18Codex cloud, ChatGPT docs. learn.chatgpt.com
  19. 19AGENTS.md, ChatGPT docs. learn.chatgpt.com

This guide is general information. Third-party prices, plan limits, and market rates are quoted from the sources above and were last checked on the date shown. Vendors change them without notice, so confirm before you budget. Build hours and the cost estimates derived from them are our own estimates, not quotes. Testimonials are from named customers. The integration figures are illustrative. Codex, ChatGPT, and the OpenAI API are products of OpenAI. Verify current capabilities and pricing before relying on them.