How to build a CRM with v0
Prompt v0 to build your CRM screens first: generate pipeline boards, contact lists, record views, and forms as production-ready React and Next.js code. Add the database and server routes only when a screen needs to persist a real deal.
v0
$ Build the screens for a CRM (a pipeline board with a column per stage, a contacts list, and a deal detail view), then connect a database and write the routes that make them save real records.
- Screens generated first
- Database and routes added next
- Ready to preview
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
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.
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.
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.
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.
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.
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.
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.
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 · SalesforceA 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
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
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
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.
Why build with v0
v0 starts with the screens: forms, tables, dashboards, whatever the interface needs, generated in React and Next.js from a plain description. That’s the part most people notice first, because it’s fast and it looks finished immediately.
The backend isn’t automatic in the same way. v0 can write it too, meaning Next.js routes and server logic that read and write real data, but you ask for it, usually once the UI already exists and there’s something real to connect it to:
Sketch
Describe the screen or component you want.
Preview
See it rendered live, and select any part of it to adjust directly.
Connect
Add a database and the routes that read and write to it, once the UI needs somewhere real to save.
Iterate
Prompt again for the next screen or the next piece of logic.
The order matters here more than with a full-app builder: v0 gets you a finished-looking interface fast, and the data underneath doesn’t show up until you ask for it and give it somewhere to live.
One clickconnects a database
Supabase, Neon, and Upstash are integrations you add from the project menu once a screen needs to hold onto something real, and v0 provisions the credentials and writes the routes that use them.
Live preview is the feedback loop
Every prompt updates the working interface right there in the chat, so you see the actual screen changing instead of imagining it from a description.
Design mode edits without a prompt
Select an element in the live preview, adjust its style directly or type a plain-language instruction, and v0 applies the change back to the real source code as a new version.
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 v0
From scratch, with v0- v0
- $0 ($5/mo of credits) to $30+/month (Plus)
- Backend (Supabase)
- Free tier · $25/month (Pro plan)*
- Hosting (Vercel)
- Free on Vercel’s Hobby plan
- Your time
- ~100 hrs
Free to try the idea, ~$30+/month on Plus while you build a real one, then whichever plan you keep using
v0 bills in dollars of credit rather than a flat fee, so cost tracks usage: importing the pre-built template can fit inside Free’s $5 a month, while a from-scratch build runs into Free’s 7-messages-a-day cap quickly and usually needs Plus, at $30 per user per month with no annual discount shown. Because v0 generates the interface and the backend as separate steps rather than one pass, expect more prompts to reach the same result than a tool that writes both together.
* 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, v0.app, v0.app and vercel.com, checked August 2026.
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.
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.
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.
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.
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.
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.
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.
Comparing your build options
The starting point decides how much of the work lands on parts nobody sees. Below is the same CRM three ways: by hand, on a UI kit whose screens know nothing about a deal, or in v0, which generates those screens fast and then connects them to a real database when you ask.
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.
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.
Instead of writing code, you describe the screens you need in plain language and watch them appear as you talk. Linking them to the database and setting up who may see what is a second, deliberate ask, and once it is done you can sign in as one of your reps and check exactly which accounts and deals they can reach.
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.
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.
Let’s set up the tools you need
v0 runs entirely in the browser too, so there’s no download and no terminal. Before step 01: sign up, pick a plan, and know that a database is one click away once a screen actually needs to save something. GitHub is the last piece, and it’s what turns the chat into a project you can hand to someone else.
v0 account
Sign in with a GitHub, Google, or email account and you land in a chat where you describe the interface you want. There’s nothing to install.
Sign up for v0v0 subscription
Free includes $5 of credits a month, capped at 7 messages a day, which is fine for trying a few screens and thin for a real build. Plus is $30 per user per month, billed monthly only (v0’s pricing page shows no annual option), and it’s the realistic floor once you’re iterating past a handful of screens.
Compare v0 plansDatabase (Supabase, Neon or Upstash)
Where your project keeps its data, added when a screen needs one. v0 generates the interface first. A database is a one-click integration you add from the project menu once a screen needs somewhere real to save to, with Supabase, Neon and Upstash as the options, and connecting one lets v0 write the routes that use it.
Connect a database in v0GitHub connection
Not needed to build anything, since v0 keeps its own history of every change. Connect a repository from the chat’s Git panel and v0 also commits every code-changing message to its own branch, ready to merge as a pull request. That is the step that turns the chat into a project other tools, and other people, can use.
Connect v0 to GitHubThe database step is the one worth not skipping once your screens need real data. Everything else here takes a couple of minutes, and after that you’re just describing what you want.
Build your CRM core, one chat at a time
v0 generates the interface first and the backend when you ask for it, so the order below runs differently from the other guides: one screen, then the database that screen needs, then the rest. Keep one feature to one chat so its history stays a line you can follow.
- 01
Generate the pipeline board before anything else exists
Start with the screen your team lives in. It is the fastest way to find out whether your stages are the right ones, and it costs nothing to throw away.
PromptSketch the pipeline boardBuild a pipeline board screen for a CRM: a column per deal stage, cards showing the company, the deal value, and how long the deal has sat in its current stage, with drag-and-drop between columns and a running total per column. Use placeholder data for now. I will connect a database next.
Placeholder data is fine here, and only here. Everything after this step gets something real behind it.
- 02
Add the database and the routes in one ask
This is the deliberate second step v0 is built around. Connect a database from the project menu, then describe the model, and ask for the routes in the same breath, or the schema sits there with nothing reading it.
PromptConnect a database and design the modelConnect a Supabase database to this project, then create the tables this board needs and the API routes that read and write them. Contacts are people, with a name, an email, and a company. Leads link to a contact and carry a source and a status. Deals link to a lead and carry a value, a stage, and an expected close date. Every table gets an owner column and a created-at timestamp. Then replace the board's placeholder data with real reads through those routes, so dragging a card writes the new stage to the database.
Ask for the routes alongside the tables. A schema with nothing reading it leaves the board exactly as fake as it was.
- 03
Start a new chat for auth and roles
Permissions are a feature of their own, so give them their own chat, so restoring a version later undoes the permission work without taking the board with it.
PromptAdd logins and rolesIn this chat, add authentication and the role model. Email-and-password sign-up, login, logout, a session, and a profile row per person, with signed-out visitors sent to the login screen. Then two roles, admin and member, held in their own table rather than on the user record, since anything on the user record can be edited by that user, plus a helper the access rules can call without recursing. Every API route must check the role and the ownership server-side rather than trusting anything the browser sends.
v0 routes run on the server, so the check belongs there. A permission enforced only in the component is a permission anyone can skip.
- 04
Put the same rules in the database
The route check is the first line. Row-level security is the second, and it is the one that still holds when a route forgets to filter.
PromptLock the data to those rolesTurn on row-level security for contacts, leads, and deals, so the database enforces the same thing the routes do. A member reads and changes only the rows they own. An admin, checked through the role helper, reaches every row. Every insert and update needs an explicit check that the new row is not being assigned to another user. Then show me how to confirm a second member querying the first member's records comes back empty, and that an admin gets both.
Two layers on purpose: a route can be bypassed by a bug, a database policy cannot.
- 05
Build the record screens, then tidy with Design mode
The list and the detail view are where a rep spends the day, so they get their own chat and a proper visual pass.
PromptBuild the lists and formsIn a new chat, build the record side: a searchable contacts list, a detail view for a lead or a deal showing its fields and a timeline of activity, and create-and-edit forms that validate before saving and write through the server routes. Make sure the list is usable at phone width.
For visual fixes on these, select the element in the preview and use Design mode rather than describing where it sits. It is faster and it changes the real code.
- 06Destination
Walk it end to end, then open a pull request
Click through the whole flow, then merge, which, if that branch is the linked Vercel project’s production branch, also deploys it.
PromptTry it and ship itHelp me walk the whole flow: sign up, add a contact, create a lead and a deal against it, drag the deal across the pipeline, then check from a second account that neither person can read the other's records. Fix anything that breaks. Once it holds up, publish and open a pull request for it, and list what to build next (a dashboard, CSV import, an AI helper) in priority order.
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.
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 into the chat before launch so v0 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.
What speeds the build, and what slows it
Speeds the build
- One screen per message, checked in the live preview before you ask for the next one
- Adding a database as soon as a screen needs to remember something, so v0 wires it up as it builds
- Clicking the thing you want changed in Design mode, rather than describing where it sits
- One feature per chat, so its history reads as a straight line you can walk back
- Sending a finished chat over to GitHub before starting the next feature, rather than stacking several together
Slows the build
- Asking for the whole app in one message instead of one screen at a time
- Building screens for data the database does not hold yet
- Describing which button to change when you could just click it
- Letting one chat run for weeks, so going back to an older version undoes everything built after it
- Approving several messages in a row without looking at the preview after each one
Connecting GitHub (Optional)
Every change in v0 is saved automatically without any technical setup. You only need to link GitHub if you want a private copy under your own control or plan to hand the codebase over to external developers.
Every message is a version
Each time a message changes your code, v0 saves it as a new version. Restoring an older one adds it back as the newest version instead of branching, so the history stays one straight line.
Versions, v0 docsUndo from the chat itself
Scroll back through the conversation and click the revert arrow on any earlier reply, or open the version number in the top right to jump straight to a specific one.
Connecting GitHub creates a real repository
From the chat’s Git panel, connect an existing repository or create one. v0 never writes straight to your main branch: every code-changing message is committed to its own working branch first.
GitHub integration, v0 docsA pull request is how it gets merged
When you’re ready, publish and open a pull request from that working branch into your base branch, review it like any other, and merge it. Starting a new chat picks up a fresh branch for the next round of changes.
This can also be v0’s deploy path
If the branch your pull requests merge into is also the linked Vercel project’s production branch, merging one triggers a production deployment. If it isn’t, the merge just follows whatever branch behavior that Vercel project is already configured with.
GitHub integration, v0 docsWhere 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).
| Host | Best for | Notes | Free tier |
|---|---|---|---|
| Vercel | One-click deploys | Hook 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) |
| Netlify | Drag-and-drop or Git | Link 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 Pages | Cheapest at scale | One 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 Pages | Free Git-based hosting | Serves 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 Hosting | Simple setup, Google stack | Configure 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 Hosting | Teams already on AWS | Set 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) |
| Surge | Publish from the terminal | One 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 Platform | DigitalOcean users | Point 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.
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.
| Service | Best for | Notes | Free tier |
|---|---|---|---|
| Supabase | Data, auth, functions | The 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 |
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.
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
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
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.
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.
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.
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.
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.
v0 doesn’t ship its own model for these prompts, so you bring an API key for whichever provider you want, and v0 writes the route that calls it. Start with a cheap model while you’re still iterating on the prompt itself, then swap in a stronger one for the version that ships, and keep every AI feature behind that one route so there’s only one key to rotate.
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.
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.
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 ThomasFounder & CEO, Hado.aiCommon 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. You describe the screen you want in the chat and v0 generates the React and Next.js code behind it. Sign up, pick a plan, and connect a database once your screens need real data. The setup section above walks through each one.
Both, but not automatically at the same time. v0 generates the interface first. The backend (a database and the API routes that use it) is something you ask for once a screen actually needs to save or load real data.
Free plan credits reset monthly, and the 7-messages-a-day cap resets every day. If you hit either limit mid-build, what you’ve already built stays put. You wait for the reset or move up to Plus to keep going right away.
References
Sources checked August 2026- 01What is CRM? definition and purpose, Salesforce. salesforce.com
- 02CRM returns $3.10 per $1 spent, Nucleus Research. nucleusresearch.com (published 2023)
- 03Sales Hub pricing, HubSpot. hubspot.com
- 04Pricing, Pipedrive. pipedrive.com
- 05Sales Cloud pricing, Salesforce. salesforce.com
- 06Pricing (Pro plan, free-tier limits), Supabase. supabase.com
- 07Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
- 08Importing data (CSV size limit), Supabase docs. supabase.com
- 09Row Level Security, Supabase docs. supabase.com
- 10Stripe pricing. stripe.com (August 2026)
- 11Paddle pricing. paddle.com (August 2026)
- 12PayPal merchant fees. paypal.com (August 2026)
- 13v0 homepage. v0.app
- 14Pricing (Plus, Business), v0. v0.app
- 15Pricing details (Free tier, credit rollover), v0 docs. v0.app
- 16Databases (connecting Supabase and others), v0 docs. v0.app
- 17Full-stack apps, v0 docs. v0.app
- 18GitHub integration, v0 docs. v0.app
- 19Deployments, v0 docs. v0.app
- 20Design mode, v0 docs. v0.app
- 21Versions, v0 docs. v0.app
- 22Pricing (Hobby plan), Vercel. vercel.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. v0 is a product of Vercel. Verify current capabilities and pricing before relying on them.