Build with AI

How to build a UGC creator marketplace with v0

Build the marketplace screens first and give them something real to save to. A campaign board, an upload, a review queue, and a creator wallet, generated as React and Next.js from plain descriptions. Then a database and the server routes behind them, added the moment a screen has to hold onto real money.

August 2026 · 43 min read · Updated September 2026

v0

$ Build the screens for a UGC marketplace (a campaign board, an apply flow, a video upload, a brand review queue, and a creator wallet), then connect a database and write the server routes that make approvals grant a licence and credit a real balance.

  • Screens generated first
  • Database and routes added next
  • Ready to preview
You describe it, v0 builds it
Start here

What a UGC creator marketplace actually is

A UGC marketplace is the middle of a transaction: a brand wants video it can advertise with, a creator wants paying for making it, and your platform is what makes both sides comfortable enough to go through with it.

Strip it back and there are three loops running at once. A brand posts a campaign with a budget and a brief. Creators apply, get picked, and upload their work. The brand reviews it, asks for a change or approves it, and the moment it approves, two things have to happen together that most software treats as unrelated: the rights to that video have to move to the brand, and money has to move to the creator.

That pairing is the whole job. Everything a marketplace gets criticised for lives there: a creator paid three weeks late, a brand running an ad on footage it turns out it never licensed, an account that took the money and vanished. The screens are ordinary. What is not ordinary is holding funds you do not own, proving that a stranger is who they claim to be, and being able to answer, months later, exactly who agreed to what.

Two customers who want opposite things

Brands want the work cheap, fast, and exclusive. Creators want to be paid promptly and keep reusing their own portfolio. Your platform sets where that line falls, and it has to be visible to both sides in the same words before either commits.

The licence is the product

What a brand actually buys is permission: to run this video, on these channels, for this long, exclusively or not. If that is not a record in your database with a date on it, you have sold a file and hoped.

You are holding somebody else’s money

Between "brand funds the campaign" and "creator withdraws" sits a balance that belongs to neither of you yet. A wallet that reconciles, a payout that can be retried without paying twice, and a ledger you can read back in an argument are not nice-to-haves here.

Who runs creator programmes now

66.3%

of respondents “report running programs entirely in-house”, per Influencer Marketing Hub’s 2026 benchmark survey of 600+ marketers, the shift that ends with someone needing a platform of their own.

Influencer Marketing Hub, 2026 (Influencer Marketing Benchmark Report) · checked August 2026

What a marketplace needs

The parts every UGC marketplace is built from

It is worth knowing the pieces before you start, because a marketplace is where most people underestimate how much sits behind the screens. These six are the whole product, and every one of them is something you describe in plain words rather than build.

01

Two front doors and one account system

A brand signing up and a creator signing up want completely different forms, dashboards, and vocabulary, but they share one login system and one set of rules about who may read what. Building them as two separate apps is the mistake that doubles every later change.

02

Campaigns with a budget that runs out

A brief, a rate, a deadline, and a number of slots. The budget is the part people forget: when the last slot is filled the campaign has to stop accepting applications on its own, rather than relying on somebody noticing.

03

Uploads that survive real life

Creators upload video from a phone on hotel wifi. Files are large, connections drop, and the same clip gets submitted twice. Chunked uploads that can resume, a duplicate check, and a preview the brand can watch without downloading a gigabyte.

04

Review, revision, and a decision that sticks

Approve, decline, or ask for a change, with the reason attached, visible to both sides, and kept after the fact. A rejected submission with no recorded reason is how a dispute starts and why it cannot be settled.

05

Licences with dates on them

What the brand may do with the approved video, where, for how long, and whether anyone else may use it too. Issued the moment the work is approved, stored as a record rather than a PDF in someone’s inbox, and revocable if a payment never clears.

06

Wallets, payouts, and a ledger that balances

A balance per creator, a queue of payouts that can be retried without paying anyone twice, and a transaction history detailed enough to answer where a specific $200 went. This is the part that turns a content tool into a marketplace.

Build vs buy

Run the marketplace or pay a percentage to one

The alternatives are not four versions of the same thing. You can rent marketplace software, subscribe to a platform that also takes a cut of what you pay creators, buy credits that get spent as you work, or skip the marketplace idea entirely and just buy the videos. Here is the trade-off, side by side.

Build your own

Your own marketplace is a one-time build that keeps the margin between the brand’s budget and the creator’s fee, and with an AI coding tool writing the plumbing, that build is weeks rather than quarters.

  • Pay to build it once, then only your own infra bills and payment-processor fees: no cut of every campaign going out the door
  • You set the take rate, the payment terms, and the licence wording, instead of inheriting someone else’s
  • Brand and creator relationships are yours, in your database, reachable without an export request
  • Add a workflow your niche needs (whitelisted ad usage, a retainer, a revision limit) without waiting for a vendor roadmap
  • Your own AI on top: moderation, brief writing, duplicate detection, on whichever model you pick
  • Full ownership of the code and data: export anytime, zero lock-in

Rent a platform instead

Sharetribe · Insense · GRIN · Trend

Renting gets you running this month with none of the payment plumbing on your conscience. What it costs is a percentage, a per-transaction fee, or a credit balance, plus a product shaped by what the vendor’s other customers asked for.

  • Live in days: sign up, configure, and start, with nothing to build or host
  • Payment handling, creator onboarding, and the compliance paperwork around payouts come as part of the product
  • Support, onboarding, and someone to call when a payout fails at 6pm on a Friday
  • None of the four price the same way, so comparing them is genuinely hard: per month, per month plus a percentage, per credit consumed, or per video delivered
  • Two of the four charge on top of the subscription: a per-transaction fee, or a percentage of everything you pay creators
  • You inherit the vendor’s data model, so a term your niche cares about is a term you may simply not be able to record
SharetribeBuild $39/mo (test only, no live marketplace) - live plans $99/mo (Lite), $199/mo (Pro), $299/mo (Extend), all billed yearly

The closest thing to renting what this guide builds. Those three live figures are the yearly-billing rates the page shows by default. Paying month to month costs more, and the toggle that reveals by how much did not render for us, so treat them as the floor rather than the price. Live plans include 50, 250, or 500 free transactions per month, then “additional transactions $0.19 or less per initiated transaction”. The page is candid about what sits outside the subscription: payment processing, maps, analytics, custom development, and hosting for your custom code at roughly $19/mo. Lite runs on a mysharetribe.com address, so a marketplace on its own domain starts at Pro, and changing how the marketplace itself behaves needs the top tier.

sharetribe.com · checked August 2026

Insense$500/mo (Brand, monthly) or $400/mo billed annually - Agency $800/mo, plus a 7-20% marketplace fee

The subscription is not the whole price. Every tier charges a marketplace fee against creator spend (20% on the one-month trial, 10% on Brand, 7% on Agency) and states plainly that “Creator payments are not covered and must be budgeted separately”. So the bill is a fixed monthly figure plus a percentage of the exact thing your marketplace would be earning its own margin on. The $650/mo trial rolls into Brand automatically unless cancelled 48 hours ahead.

insense.pro · checked August 2026

GRINFree (200 credits/mo) - then $200, $500, $1,000, or $1,500/mo by credit bundle

Priced by credits consumed rather than by seat, with month-to-month billing and no quote-only enterprise tier on the page. Credits reset monthly and do not roll over. Overage is capped by you rather than by them: “If you go over your monthly credits, Gia keeps running at one flat rate, the same on every paid plan. You set a hard cap, and you are never billed a dollar above it.” The free tier stops rather than bills: “Free never has overage; it simply pauses billable actions until your next cycle.” Worth re-checking before you budget: this pricing model is new, and a vendor that just rebuilt one is likely to move it again.

grin.co · checked August 2026

TrendNo subscription - credit packs from $550 (up to 6 videos) to $3,872 (up to 56)

The row that represents not building a marketplace at all. You buy credits at “$9.16 each”, spend them on finished videos, and the packs include “100% licensing & distribution rights to use on social, websites, ads, & more”. No contract and no monthly fee, but “Credits expire 12 months after purchase”, and you end up with content rather than a creator roster, a licence archive, or any relationship you can go back to. For a brand that just wants video, this is the honest answer. For anyone whose business is the platform, it is not the same product.

trend.io · checked August 2026

Rule of thumb: if the marketplace is your business (you take a margin, you own the relationships, you want your own licence terms), the rented options are a tax on the exact revenue you are trying to build, and owning the platform pays back fast. If you are a brand that simply needs a steady supply of video, buy the videos and skip all of this. The genuinely awkward middle is an agency running creator campaigns for clients on a subscription plus a percentage, because that percentage scales with the part of the business you are already doing yourself.

No dev needed

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:

The build loop
1

Sketch

Describe the screen or component you want.

2

Preview

See it rendered live, and select any part of it to adjust directly.

3

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.

Loop back to Describe

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.

What it costs

Pay a developer, or do it with AI

Two numbers decide this, and only one of them is the build. One is who writes the platform, a one-time cost you can pay in money or in your own hours. The other is the per-transaction fees that start the day money begins moving through it. The first is compared below. The second is the same either way.

Hire a developer

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

~$16k-$65k to build, then from $25/mo after launch

The spread comes from who you hire, not from how much there is to do: our ~325-hour estimate priced across the bands in the rate survey below. It puts North American contractors at $45-$75/hr and senior US developers at $100-$150+/hr, and notes agencies adding 20-40% on top, which works out at roughly $50/hr for the cheapest credible option and around $200/hr for an agency putting a senior on it. Every hour of that is spent before a single brand has posted a campaign. What continues afterwards is small by comparison: the database, the host, and the per-transaction fees your payment provider charges.

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
~155 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.

* Read the storage line before you pick a plan, because this template stores video. The free Supabase tier includes 1 GB of file storage, 500 MB of database, and 5 GB of egress, and pauses a project after 1 week of inactivity. A handful of creator uploads and you are out. Pro, from $25/mo, moves that to 100 GB of storage and 250 GB of egress with daily backups kept for 7 days, and charges $0.0213 per GB of storage and $0.09 per GB of egress beyond it. Payouts and identity checks are billed per use by whoever you route them through, and are the two lines that grow with the marketplace rather than sitting flat.

Both columns end with the platform belonging to you, and with the hundredth brand costing no more to serve than the first. The only thing that differs is whose hours go into it: a developer you pay up front, or your own, spent describing what you want and reading back what arrives.

Prices and rates from supabase.com, developex.com, v0.app, v0.app and vercel.com, checked August 2026.

Plan first

Decide before you build

These six are business decisions rather than technical ones, and every one of them is cheap now and expensive once campaigns are running under the old answer. Write your answers down before the first prompt.

01

How you make money

A percentage of each campaign, a flat listing fee from brands, a subscription from either side, or a mix. It decides whether money passes through your platform at all: a take rate means you hold funds and pay them out, a listing fee means brands pay creators directly. The second is dramatically less to build.

02

What a licence actually grants

Write the default terms in plain sentences first: which channels, how long, whether the brand gets exclusivity, whether the creator may keep it in a portfolio, and what happens if a payment is reversed. Each is a column, and adding them later reopens campaigns already agreed under vaguer terms.

03

When money is released

On approval, on a timer after approval, or on a schedule you run twice a month. This is the most-argued-about part of any creator platform, so pick a rule you can state on the sign-up page. It also decides whether you need a holding balance or just a payout queue.

04

Who you check, and when

Verifying identity costs money per check and adds friction exactly when a creator is deciding whether you are worth the trouble. The common answer is to check nobody at sign-up and require it before the first withdrawal. The two flows differ, so pick one now.

05

How a disagreement ends

A brand rejects a submission the creator thinks is fine. Who decides, on what evidence, within how long, and is the outcome all-or-nothing or a partial payment? Marketplaces that leave this to email end up inventing it per case, which is slower and less defensible.

06

What you keep, and for how long

Rejected videos, expired licences, verification documents, and the accounts of creators who leave. Verification data especially is the kind to hold for as short a time as your obligations allow. Pick a retention period per category and build the deletion.

Approaches

Comparing your build options

The starting point decides how much of the work lands on parts nobody sees. Below is the same marketplace three ways: by hand, on a UI kit whose dashboards know nothing about campaigns, or in v0, which generates those screens fast and then connects them to a real database when you ask.

~325 hrsBuilding by hand

Three products in a trench coat (a brand side, a creator side, and the admin console that referees them) plus the parts a marketplace cannot skip: holding money, proving who someone is, storing video, and recording who owns what once it is delivered.

~240 hrsGeneric UI starter kit

Dashboards, tables, and an upload widget, none of which know what a campaign is. Nothing in a starter kit tracks a licence, splits a payout, or stops a creator reading another creator’s earnings, and those are the parts that take the time.

~155 hrsBuilt with v0

The screens arrive quickly and look finished immediately. The database, the routes, and the money rules behind them are a second, deliberate ask, so expect the same total split across more prompts than a tool that writes both in one pass.

Interactive calculator

Estimate your exact build timeframe

Not every marketplace needs all of this on day one. Plenty launch with campaigns, uploads, and manual bank transfers, then add wallets and identity checks once real money is moving. Untick what you are deferring and the estimate follows.

What your creator marketplace needs

Your estimate

155 hrs

start to finish

Based on the 7 of 7 features you’ve selected, plus ~39h 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

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.

1

v0 account

Cost: Free

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 v0
2

v0 subscription

Cost: Free ($5/month of credits), then $30/month (Plus)

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 plans
3

Database (Supabase, Neon or Upstash)

Cost: Free to start

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 v0
Optional
4

GitHub connection

Cost: Free

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 GitHub

The 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.

Step by step

Build your marketplace 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.

  1. 01

    Generate the campaign board before anything else exists

    Start with the screen creators see first. It is the fastest way to find out whether your campaign fields are the right ones, and it costs nothing to throw away.

    PromptSketch the campaign board
    Build a campaign board for a UGC marketplace: cards for each open campaign showing the brand, the brief in a line, the deliverable format, what it pays per accepted submission, how many slots are left, and the deadline, with filters for format and budget and an apply button on each. 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.

  2. 02

    Add the database, the tables, and the routes together

    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 model
    Connect a Supabase database to this project, then create the tables this board needs and the API routes that read and write them. There are two sides, each attached to an account: brands buy and creator profiles sell. A campaign belongs to a brand and holds the brief, the deliverable format, how many slots there are, the deadline, the rate paid per accepted submission, and a funded budget kept as its own figure, plus a status moving through draft, active, paused, completed, cancelled. An application is one creator against one campaign. A submission hangs off an application, points at an uploaded video, and travels through draft, submitted, under review, approved, rejected, revision requested. A licence is created at the moment of approval and states the channels, the term, the exclusivity, and the timestamp. Money is two tables: a wallet per creator carrying a balance, and a transactions table where each credit and debit is a row, so that balance can always be recomputed from its history. Then replace the board's placeholder data with real reads through those routes.

    The transactions table is worth insisting on now. A balance column added first is a number you can never reconcile afterwards.

  3. 03

    Start a new chat for auth and the three 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 auth and the three roles
    In this chat, add authentication and the role model. Email-and-password sign-up, login, logout, a session, and a profile row per account. Then three roles (creator, brand manager, and admin) 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. Fork the sign-up: a creator completes a creator profile, a brand creates or joins a brand, each landing on their own dashboard. Every API route must check the role and the ownership server-side rather than trusting anything the browser sends, and no route may accept a wallet balance from the client at all.

    v0 routes run on the server, so the check belongs there. A permission enforced only in the component is a permission anyone can skip.

  4. 04

    Put the same rules in the database, and on the video files

    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, which matters more here, because the row it forgot might be somebody’s earnings.

    PromptAdd row-level security and storage rules
    Turn on row-level security on brands, creator profiles, campaigns, applications, submissions, licences, wallets, and transactions, so the database enforces the same thing the routes do. Admins are unrestricted. A brand manager is scoped to their own brand: the campaigns under it, and the applications and submissions those campaigns received. A creator is scoped to themselves (their profile, what they applied to, what they submitted, and their own wallet and transaction history) and can browse an active campaign while never seeing who else applied to it. Every insert and update needs an explicit ownership check. Wallets and transactions take no client-side update or delete at all. Balances move only inside a server route. Apply the matching rule to stored video: the submissions bucket must not be public, and a file must be fetchable only by its creator, the brand whose campaign it belongs to, and an admin. Then show me how to confirm one creator querying another creator's transactions comes back empty.

    Two layers on purpose: a route can be bypassed by a bug, a database policy cannot.

  5. 05

    Build the upload and the review queue, then tidy with Design mode

    The upload is the screen that decides whether creators finish what they started, so it gets its own chat and a proper pass at phone width.

    PromptBuild the upload and review screens
    In a new chat, build the two screens the work actually flows through. For creators: an upload that sends large video in chunks through a server route so a dropped connection resumes rather than restarting, with real progress and a clear confirmation that the submission arrived. For brands: a review queue that plays each submission back and offers approve, decline, or request a revision with a written reason stored against the submission and visible to both sides. Make sure the upload works at phone width.

    For visual fixes on these two, 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.

  6. 06
    Destination

    Wire approval to the licence and the wallet, then open a pull request

    Finish the money loop, click it through as both sides, and merge, which, if that branch is the linked Vercel project’s production branch, also deploys it.

    PromptAdd licences, payouts, and ship
    Add the rights and money layer as server routes only. Approving a submission must grant a licence on that campaign's terms and credit the creator's wallet with the rate in one database transaction, so neither half can land alone. Add a withdrawal request that queues a payout and a payout route that is safe to call twice, so a retry cannot pay anyone a second time. Add an admin finance view of what is owed, paid, and stuck. Then help me walk the whole flow (post a campaign as a brand, apply and upload as a creator from a second account, request a revision, approve the next version, confirm the licence and the balance both moved, request a withdrawal), and once it holds up, publish and open a pull request for it.
Authentication & security

Keeping two sides apart, and the money straight

A marketplace holds three sensitive things at once: personal data about people who do not work for you, files somebody else owns the rights to, and balances that are not yours. Here is how each stays protected, in simple terms.

Proven logins for both sides

Sign-in comes from a system that has already been attacked for years and held, so you are not writing password handling yourself. Brands and creators use the same one. What differs is the profile behind the account and which half of the product it opens.

Three roles, and the rule each one bends

The template ships three roles: creator, brand manager, and admin. The interesting cases are the ones between them: a brand manager reads submissions to their own campaigns and nobody else’s, a creator reads their own earnings and never another creator’s, and an admin reaching into either of those leaves a trace.

Earnings are the data people forget to protect

It is obvious that a creator must not read another creator’s bank details. It is less obvious, and just as important, that they must not be able to total up another creator’s earnings from a campaign they can both see. Rate agreements between a brand and one creator are private to that pair.

Row-level security across every table

The template ships 180 row-level security policies, more than any other template here, because almost every table has three different right answers depending on who is asking. The database enforces that itself on every read and write, so a screen that forgets to filter still cannot show a brand another brand’s campaign.

Uploaded video needs the same rules as the rows

A submitted video is a file in storage, not a database row. Locking the submissions table down carefully while leaving the bucket readable by anyone holding a link is the version of this that looks finished and is not. Here the file is the actual thing of value, since a leaked link is an unlicensed copy.

Money moves on the server, always

Nothing about a balance, a payout, or a licence grant may be decided by code running in someone’s browser. Those belong in server-side functions the browser can only ask, never instruct. Each one should be safe to call twice, because networks retry and a payout that runs a second time has really paid twice.

Keys, and which ones are allowed out

Only a “publishable” key reaches the app, and it is designed to be seen. The database’s service key, your payment provider’s secret, the identity-check provider, the mail sender, and whichever AI model you use all stay on the server. A marketplace collects more of these than most apps, which is a good reason to route them through one place rather than five.

A ledger with no backup is a ledger you cannot defend

Nothing on the free tier is backed up, so a bad migration during the build takes everything with it. From $25/mo, Supabase Pro keeps a daily backup with 7 days of history behind it. Have that running before the first real balance exists, because “we think you were owed about $400” is not an answer anyone accepts.

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 into the chat before launch so v0 checks nobody can see data they shouldn’t.

The one rule that matters: no secret key (database, payments, identity, mail, or AI) ever goes into the app or a public repo. If one does get out, treat it as compromised and rotate it the same day.

Workflow rules

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
Getting code out of the chat

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 docs

Undo 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 docs

A 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 docs
Going live

Where to put the app once it works

The thing you actually deploy is small: a folder of plain files that almost any host will serve. The records, the accounts, and the uploaded video all live in Supabase instead (covered below), which is why the free-tier column here matters far less than the one further down.

HostBest forNotesFree tier
VercelOne-click deploysPoint it at the repository and it publishes itself, with a standard Vite project needing no configuration at all. Read the licence before you settle, though: Hobby is for personal, non-commercial use, and a platform that takes a cut of campaigns is commercial under any reading of that, which puts you on Pro at $20/user/mo.Pro from $20/user/mo (Hobby is non-commercial)
NetlifyDrag-and-drop or GitConnect the repository, or drag the built folder onto the page and be done. The shortest path between “it works locally” and a link you can send a brand this afternoon.Free tier
Cloudflare PagesCheapest at scaleSet it up once and every visitor is served from wherever Cloudflare is closest to them. Worth more attention here than on most projects, because a marketplace playing video previews back moves an order of magnitude more bandwidth than a dashboard does.Generous free tier
GitHub PagesFree Git-based hostingServes the site straight out of your GitHub project once one routing setting is in place. The catch: serving from a private repository is a paid GitHub feature, and code that decides who gets paid what does not belong in a public one, so count this as free only if you are genuinely happy to publish the source.Free from a public repo only
Firebase HostingTeams already on GoogleOne configuration step, and after that each release is a single command. Chiefly a fit when Google is already the tooling your team knows and adding a new vendor would need explaining.Free Spark tier
AWS Amplify HostingTeams already on AWSSet up from the AWS console with a single rewrite rule so deep links resolve. Mainly a fit when AWS is already the account your billing goes through.Free tier (build + hosting)
SurgePublish from the terminalA single command puts the built folder online, with no repository involved anywhere. Useful for putting a half-finished campaign board in front of a friendly brand for an opinion.Free - unlimited publishing
DigitalOcean App PlatformDigitalOcean usersHand it the project and it handles the build and the serving, next to whatever else you already have running in that account.Free - 3 static sites, 1 GB/mo transfer

All of them will serve this app, and the front end is the cheap half whichever you pick. What is worth checking before you commit: whether the plan you are on allows commercial use at all, since Vercel’s Hobby tier says plainly that it does not, and what happens to your bill once creators are uploading video and brands are streaming it back.

Database & backend

Keep your data in Supabase

Postgres for the records, auth for both sides, storage for uploaded video, and edge functions for anything touching money or a key. Whichever host serves the frontend above, all four run here.

ServiceBest forNotesFree tier
SupabaseData, auth, video, functionsPostgres database, authentication, file storage for submissions, and edge functions for payouts, licence grants, and moderation. Create a free project and your AI coding tool connects the app to it, then watch the storage line, because 1 GB does not go far in video.Free tier, then usage-based
AI workflows

Where AI genuinely helps a marketplace

Once the core runs, each of the four below is one more prompt. They share one server-side function rather than each wiring up its own, which is also what keeps your key out of the browser.

A first pass over everything uploaded

Every submission gets looked at before a human sees it, flagging the obvious problems: the wrong product, no product at all, unusable audio, something that should never have been uploaded. It sorts the queue rather than making the decision.

PromptA first pass over everything uploaded
Add a server-side function that runs on every new submission, sends the video’s frames and transcript to your ai function, and returns a moderation verdict with a confidence score and a short reason. Store it against the submission, sort the review queue by it, and never auto-reject on it alone. Anything flagged goes to a person with the reason attached.

Turning a rough brief into a usable one

Brands write briefs badly, and a vague brief guarantees submissions nobody can approve. This drafts a structured version from whatever they typed, which they then edit.

PromptTurning a rough brief into a usable one
Add a “Improve this brief” action on the campaign form that sends the brand’s draft to your ai function and returns a structured brief (what to show, what to say, what to avoid, deliverable format and length, and the usage rights being asked for), presented as an editable draft the brand confirms rather than something saved automatically.

Matching creators to a campaign

Ranks the creators who applied against what the brief actually asks for, using their past accepted work on your platform, so a brand with 80 applications has somewhere sensible to start.

PromptMatching creators to a campaign
Add a “Suggest a shortlist” action on the applications view that sends the campaign brief and each applicant’s profile and past accepted submissions to your ai function, and returns a ranked shortlist with one line of reasoning per creator. Show it as a suggested order the brand can ignore, and never hide unranked applicants.

Feedback a creator can actually act on

Turns a brand’s two-word rejection into specific, revisable notes. Fewer disputes start when the reason for a decline is concrete rather than “not what we wanted”.

PromptFeedback a creator can actually act on
When a brand requests a revision, add an action that sends the brief, the submission, and the brand’s note to your ai function and returns a clearer version of that feedback: specific, tied to the brief, and phrased as changes to make. Show it to the brand for approval before it reaches the creator, and keep both versions on the record.

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.

Ready-made option

Get a head start with our template

All of the above is written for someone starting with nothing, which you do not have to be. This same marketplace already exists as working code, and starting there turns most of that estimate into one afternoon spent setting a take rate and rewriting the licence terms in your own words.

UGC Marketplace

The exact creator marketplace this guide builds, packaged so you can open it, point it at your own backend, and make it yours from there. A marketplace that connects brands with creators and handles the messy parts in between. Brands post campaigns and review what comes in, creators apply and upload, and the platform takes care of licensing, payouts, identity checks, and disputes.

React 18ViteTypeScriptTailwind CSSSupabase
Out of the box

The key benefits of starting with a template

The parts nobody enjoys building are already done and running: the three-sided permission model, wallets and payouts, licence records, chunked video upload, moderation, and the admin console over all of it. That leaves your time for the terms and the take rate that make it your marketplace.

Building the core from scratch

~155 hrs

Opening the template, already built

~1 hr

~154 hrs of building you skip

The two figures measure deliberately different things. ~155 hrs is what it costs to build the core yourself. ~1 hr is how long it takes to open the finished one and aim it at your own database. Everything after that (your niche, your licence wording, your payout rule) costs the same from either starting point, so neither column claims it.

All three sides working from day one

Open a functional platform, not an empty folder. Brand onboarding, campaign creation, creator applications, uploads, review, licences, wallets, and a full admin console are ready to use.

Pre-configured access rules

Three roles and 180 row-level security policies work out of the box, so a brand reaches its own campaigns, a creator reaches their own earnings, and neither can see anything belonging to the other side.

The awkward machinery already built

Chunked uploads that resume, duplicate detection on submitted files, a payout queue with retries, licence records with an audit trail, and a moderation pipeline. Each one is a week you are not spending.

Clean structure your AI can safely customize

Typed end to end, grouped by feature, and commented where it matters. That pays off every time you ask for a change afterwards: a tool with an obvious pattern to copy produces work that fits, rather than a second way of doing the same thing.

Customer story

From founders who build on our templates

As an agency we live or die by clean handoffs. The code is structured well enough that we restyle, wire in the client’s data, and ship - no untangling someone else’s mess.
Matt GrahamMatt GrahamFounder & CEO, RapidDev
Got questions?

Common questions

No. Say what you need in ordinary language and your AI coding tool writes all of it: the tables, the rules about who may read which row, the rules covering uploaded video, and the server-side functions that move money and grant licences. Your part is creating a free Supabase project for it to point at, so that everything it writes lands somewhere you own rather than somewhere you rent.

You handle the record of it. A payment provider handles the movement. Your platform tracks what each campaign has funded, what each creator has earned, and what has been paid out, then asks a provider such as Stripe to make the transfer. That provider takes on the regulated parts (card processing, bank details, payout compliance) and charges per use rather than per month. Stripe’s Connect pricing publishes $2 per monthly active account and 0.25% + 25¢ per payout sent.

Before money leaves your platform, in practice yes, both because your payment provider will require it and because it is the cheapest fraud control you will ever add. It is a per-check cost rather than a build: Stripe Identity publishes $1.50 per document-and-selfie verification and 50¢ per ID number lookup, with the first 50 verifications free. Most marketplaces ask for it at first withdrawal rather than at sign-up, so it lands after someone has a reason to bother.

More than the free tier holds, sooner than you expect. Supabase’s free plan includes 1 GB of file storage and 5 GB of egress a month, which a handful of creator uploads will use. The Pro plan at $25/mo includes 100 GB of storage and 250 GB of egress, then charges $0.0213 per GB and $0.09 per GB beyond that. Plan for the egress as much as the storage: every brand watching a submission back is bandwidth.

Yes, and there are four worth having. Most marketplaces start with an automated first look at every upload, then add brief improvement, creator shortlisting, and clearer revision feedback. All four run through one small server-side function. Choose the model tier that suits each job, and the provider key stays on the server rather than anywhere the app can reach it.

No, and the guide is written so it cannot. Every AI feature here sorts, drafts, or summarises for a person who then decides. Nothing rejects a submission or releases a payment on its own. Keep the decision, and the record of who made it, with a human, because that record is what settles a dispute later.

The database, on every single query. Row-level security means each row carries the rule about who may read it, so a creator asking for the wallet table gets their own rows and nothing else, even if a screen forgets to filter. The same applies between brands: a campaign belongs to one brand, and the others cannot see it exists.

Whatever your licence terms say, which is exactly why they are a decision to make before you build rather than wording to add later. The template records a licence per approved submission (what the brand may do, for how long, and whether anyone else may use it too) along with when it was granted. That record is the thing you point at if either side later disagrees.

Nothing here is proprietary, so nothing can lock you in. Underneath it is plain PostgreSQL: a standard dump hands you every campaign, submission, licence, and transaction in a form any Postgres host will accept, and the uploaded files come out of storage the same way. Worth knowing for a second reason on this template: a creator asking you to delete their data is far easier to answer when you can see exactly where all of it sits.

Yes, and on this template it is worth doing early. Every host listed here connects a custom domain with free HTTPS in a few clicks, and a platform asking two strangers to trust it with a payment has a harder time of that from a subdomain belonging to somebody else.

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
  1. 01Influencer Marketing Benchmark Report 2026 (in-house programme share). influencermarketinghub.com
  2. 02Pricing, Sharetribe. sharetribe.com
  3. 03Pricing, Insense. insense.pro
  4. 04Pricing, GRIN. grin.co
  5. 05Pricing, Trend. trend.io
  6. 06Connect pricing (active accounts, payout fees), Stripe. stripe.com
  7. 07Identity verification pricing, Stripe. stripe.com
  8. 08Pricing (Pro plan, storage, egress, backups), Supabase. supabase.com
  9. 09Pricing (transactional email), Resend. resend.com
  10. 10Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
  11. 11Row Level Security, Supabase docs. supabase.com
  12. 12Storage access control, Supabase docs. supabase.com
  13. 13v0 homepage. v0.app
  14. 14Pricing (Plus, Business), v0. v0.app
  15. 15Pricing details (Free tier, credit rollover), v0 docs. v0.app
  16. 16Databases (connecting Supabase and others), v0 docs. v0.app
  17. 17Full-stack apps, v0 docs. v0.app
  18. 18GitHub integration, v0 docs. v0.app
  19. 19Deployments, v0 docs. v0.app
  20. 20Design mode, v0 docs. v0.app
  21. 21Versions, v0 docs. v0.app
  22. 22Pricing (Hobby plan), Vercel. vercel.com

This guide is general information, and not legal, tax, or financial advice. Holding funds on behalf of others, verifying identity, licensing content, and paying creators across borders are regulated differently depending on where you and your users are, so take proper advice before you take a payment. 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. v0 is a product of Vercel. Verify current capabilities and pricing before relying on them.