How to build a UGC creator marketplace with Claude Code
Build the platform rather than paying one a percentage. Brands post campaigns, creators apply and upload, approved work moves a licence and releases a payout, and your admin console referees the rest. Describe it in plain words and Claude Code writes the schema, the money flow, and all three sides on top of them.
Claude Code
$ Build a creator marketplace where brands post paid campaigns, creators apply and upload video, approved work transfers a licence to the brand, and the creator gets paid from a wallet I can audit, with brands, creators, and my admin team each seeing only their own side.
- Both sides modelled
- Money and licences tracked
- Ready for you to review
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
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.
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.
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.
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.
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.
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.
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.
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 · TrendRenting 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
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
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
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
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.
Why build with Claude Code
Most software looks simple from the outside, but it’s mostly hidden plumbing: a database, logins, permissions, validating forms, and dozens of screens that read and write records. Building all of that yourself means being fluent across the full stack, so weeks go to parts customers never see before the first real feature works.
Claude Code removes that barrier. The whole workflow becomes a simple loop:
Describe
Say what you want in plain words in any language.
Build
It writes and edits real code across backend, auth, and UI.
Check
Run the app and see the change actually work.
Repeat
Ask for the next thing. Repeat.
No stage of that loop asks for the full-stack expertise or the months of boilerplate that stop most people, which is why one person can ship a working app in a couple of weeks.
Three hard partshandled for you
The data model, authentication, and access rules are what make software like this genuinely hard to build by hand. Describe them and Claude Code scaffolds all three. After that, the rest is mostly screens on top.
Any language is the interface
No code to write, and no English required either. Whether you need a new field, a renamed step, or an AI summary, describe it in whatever language you think in and Claude Code handles the implementation.
Whole project in context
It finds and reads the files a change touches, instead of needing you to paste them in, so each edit stays consistent with what is already there. Point it at the two or three files that matter and it stays fast.
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 Claude Code
From scratch, with Claude Code- Claude Code
- $20/month (Pro) to $200/month (Max)
- Backend (Supabase)
- Free tier · $25/month (Pro plan)*
- Hosting
- $0 on a free tier
- Your time
- ~155 hrs
~$20-$200/month while you build, then whichever plan you keep using
Claude Code itself is free. The cost sits in the Claude plan behind it. The fee doesn’t shrink when you start from a template the way a per-hour developer bill would: Pro, at $20/month, covers a template import or a short build, and a from-scratch build that runs for weeks tends to need the $100-$200/month Max plan instead, because it outlasts Pro’s usage window. Either way, the template changes how many of the hours in the estimator above you actually spend, not which Claude plan you’re paying for.
* 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 and claude.com, checked August 2026.
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.
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.
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.
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.
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.
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.
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.
Comparing your build options
Where you start decides how much of this goes on machinery no brand will ever see. Here is the same marketplace three ways: by hand, on a UI kit that stops at the dashboards, or end to end with Claude Code writing the ledger and the access rules alongside the screens.
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.
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.
Describe one piece at a time and it writes the migration, the policies, and the screens that read them together. The same task list, done by an agent that reads the rest of your project before it edits any of it.
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.
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.
Let’s set up the tools you need
Four things need to be on your machine before step 01, and none of it takes more than about 15 minutes. Three are ordinary installers you click through, and the fourth is an active Claude subscription. From there, you build simply by describing what you want, in your own words.
Claude Code
Your main AI assistant. Download and run the free Claude Code CLI, connect your Anthropic account or pay-as-you-go API key, and build your app in plain English. It runs in the Terminal, and if a command line puts you off, the same tool ships as a desktop app with buttons and windows.
Install Claude CodeClaude subscription
Claude Code itself is free, but the free Claude.ai plan does not include Claude Code access at all, so you need at least Pro, unless you pay as you go through a Console account instead. Pro at $20/month is enough to start with, though a long, from-scratch build tends to outrun what Pro allows in a given stretch, which is when people move up to Max, from $100/month. Every plan’s usage resets on a rolling window, so on a heavy day you may hit a limit and have to wait it out.
Compare Claude plansNode.js engine
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)Supabase (database)
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 Claude Code writes those parts for you.
Install Supabase CLINothing here is worth memorizing. These four just need to exist on your machine. From step 01 on, you say what you want and Claude Code runs the commands.
Build your marketplace core, prompt by prompt
No code to write. Describe what you need and Claude Code runs the commands. The order below is the one that keeps you out of trouble: project, then the data model both sides share, then who can see what, then the screens, then the money. Paste one, read what comes back, and move on.
- 01
Set up the project
Get an empty app running against your own database, and hand Claude Code a notes file so it stops inventing new names for a campaign halfway through. One prompt covers all of it.
PromptSet up the projectSet up a new React 18 + Vite + TypeScript project with Tailwind and the Supabase JS client. Read VITE_SUPABASE_URL and the publishable key (the sb_publishable_… key, which replaces the older anon key) from .env, and add .env to .gitignore in the same step so neither value reaches GitHub. Add a typed Supabase client under src/lib, then write a short CLAUDE.md describing the stack and the vocabulary for a two-sided UGC marketplace (brands, campaigns, applications, submissions, licences, wallets, payouts), so later edits stay consistent with the first ones.
Gives Claude Code a project and a memory to work against.
- 02
Model both sides and the money at the same time
The temptation is to model campaigns and submissions now and bolt payments on later. Do it in one pass instead: a wallet added afterwards means revisiting every row that should have been recording an amount.
PromptDesign the marketplace data modelCreate the core data model as Supabase migrations. A brands table for the buying side and a creator_profiles table for the selling side, both keyed to an account. A campaigns table (title, brief, deliverable format, rate per accepted submission, number of slots, deadline, and a status through draft, active, paused, completed, cancelled) with the funded budget tracked separately from the rate. An applications table joining a creator to a campaign with its own status. A submissions table joining an application to an uploaded file, carrying a status through draft, submitted, under review, approved, rejected, revision requested. A licences table written when a submission is approved, recording the channels, the term, whether it is exclusive, and the timestamp it was granted. And the money side: creator_wallets holding a balance per creator, and a transactions table where every credit and debit is a row, so a balance is always the sum of its history rather than a number somebody edits. Write the migration SQL, let me review it, apply it, then regenerate the TypeScript types.
The rule worth insisting on: a balance is never a column somebody writes to. It is the sum of a transaction history you can read back.
- 03
Add sign-in that knows which side someone is on
One account system, three roles, and a sign-up flow that forks in two. A brand and a creator need different profiles behind the same login.
PromptAdd auth and the three rolesAdd Supabase Auth with email and password: sign-up, login, logout, a persisted session, a profiles row per account, and a useUser hook. Then create an app_role enum with 'creator', 'brand_manager', and 'admin', and a user_roles table linking a user_id to a role, kept out of the user's own metadata so nobody can promote themselves. Add a SECURITY DEFINER function has_role(_user_id uuid, _role app_role) that reads user_roles without recursing. Then split onboarding in two: a creator signing up fills in a creator profile, a brand signing up creates or joins a brand, and the app routes each to their own dashboard from the first screen. Put the schema changes in one migration.
Roles live in their own table for one reason: anything stored on the user account can be edited by the person that account belongs to.
- 04
Lock it down before a real video or a real balance exists
This is the step where a marketplace either keeps two sides apart or quietly does not. Read what comes back rather than skimming it, and note that the uploaded files need rules of their own.
PromptAdd row-level security and storage rulesEnable row-level security on brands, creator_profiles, campaigns, applications, submissions, licences, creator_wallets, and transactions. The rules are these. An admin reaches everything. A brand manager reaches their own brand, its campaigns, and the applications and submissions attached to those campaigns. A creator reaches their own profile, their own applications and submissions, and their own wallet and transactions and nobody else's. A creator can read an active campaign but not its other applicants. Name the WITH CHECK clause explicitly on every insert and update. Make creator_wallets and transactions insert-and-select only from the client: no client-side update or delete at all, since balances may only move through a server-side function. Then do the same for Storage: the submissions bucket must not be public, and a file is readable only by its creator, the brand that owns the campaign, and an admin. Put it all in a migration, then show me how to verify that one creator querying another creator's transactions comes back empty, and that a submission URL from a campaign the account has nothing to do with fails to download.
Locking the tables and leaving the video bucket public is the version of this that looks finished and is not. Here the file is the asset somebody is buying a licence to.
- 05
Build the campaign board, the upload, and the review
Now the three screens the product lives in. The upload is the one to be specific about: creator video is large, and the connection it arrives over usually is not good.
PromptBuild the screensBuild the core screens against these tables. For creators: a campaign board listing active campaigns with the rate and slots left, a campaign page with an apply action, and a submission upload that handles large video files in chunks so a dropped connection resumes rather than starting over, showing real progress. For brands: a campaign create-and-edit form, an applications view for shortlisting and accepting creators, and a review screen that plays a submission back and offers approve, decline, or request a revision with a written reason attached. Keep all data access in typed hooks, and make sure a creator never sees another creator's application to the same campaign.
- 06Destination
Make one approval do both jobs, then walk it end to end
The last step is the one that makes it a marketplace: approval has to grant the licence and credit the creator as one action, not two that usually both happen. Then run the whole thing as both sides.
PromptAdd licences, payouts, and testAdd the money and rights layer as server-side functions the browser can only ask, never instruct. When a brand approves a submission, one function grants the licence recorded against that campaign's terms and credits the creator's wallet with the campaign rate, in a single transaction, so neither can happen without the other. Add a withdrawal request that queues a payout, and a payout function that is safe to run twice. A repeat call must not pay anyone a second time. Give the admin console a finance view of what is owed, paid, and stuck. Then run the app and walk me through the full flow as both sides (post a campaign as a brand, apply and upload as a creator from a second account, request a revision, approve the second attempt, confirm the licence exists and the wallet moved, then request a withdrawal), then fix anything that breaks on the way.
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.
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.
Run this before launch to make sure 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.
What speeds the build, and what slows it
Speeds the build
- A CLAUDE.md notes file that spells out your setup and preferences
- Asking for a plan first on anything that touches several files
- One change per request, small enough to describe in a sentence
- Pointing it at the two or three files that matter
- Running the app and checking each change before the next
- Saving a working version (a git commit) after each step, so you can undo
Slows the build
- Vague prompts like “make it better”, which leave it guessing what you meant
- Asking for a whole feature in one giant prompt
- Dumping the entire project into the chat at once
- Skipping the notes file, so it forgets your conventions each session
- Accepting changes without running or reading them
- No saved versions to roll back to when something breaks
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
Claude Code runs inside a permission mode you choose, either asking before each change or working more freely once you trust it. Either way, experiments sometimes still break things. Git is what makes that safe: there’s always a working version to return to, so you can try bold changes 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 GitUndo 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 makes bold experiments with Claude Code low-risk.
GitHub is Git’s home online
Git lives on your computer. GitHub is a free, private cloud copy of the same project. It’s your backup if your laptop dies, and the place Claude Code can always get back to. Keep it private, and never commit secret keys or passwords.
Create a free GitHub accountYou rarely type git commands
You do not have to memorize any of it. Ask Claude Code to “commit this” or “undo the last change” and it runs the git steps for you. Prefer clicking to typing? Claude Code’s own desktop app, which you install separately, shows each change side by side before you keep it, and GitHub Desktop gives you plain buttons for saving and rolling back.
Get the Claude Code desktop appWhere 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.
| Host | Best for | Notes | Free tier |
|---|---|---|---|
| Vercel | One-click deploys | Point 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) |
| Netlify | Drag-and-drop or Git | Connect 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 Pages | Cheapest at scale | Set 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 Pages | Free Git-based hosting | Serves 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 Hosting | Teams already on Google | One 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 Hosting | Teams already on AWS | Set 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) |
| Surge | Publish from the terminal | A 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 Platform | DigitalOcean users | Hand 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.
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.
| Service | Best for | Notes | Free tier |
|---|---|---|---|
| Supabase | Data, auth, video, functions | Postgres 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 |
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.
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.
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.
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”.
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.
Each prompt above picks the model that fits the job. As a rule of thumb, that is Haiku for high volume, Sonnet for everyday writing, and Opus for deeper reasoning. Model names move faster than this page does, so check the current list in the Claude docs (linked in the references below) before you build. Send every one of these prompts through that same ai function, so one key and one set of rules governs all of them.
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.
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.
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 GrahamFounder & CEO, RapidDevCommon 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, though you will type the occasional command: installing Claude Code, 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 Claude Code runs most of those commands for you.
Claude Code turns the real code into an app you can publish, with a database and user accounts. An Artifact is a one-file preview, good for a quick look but not for going live.
Claude Code’s plans reset 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 or move up a plan. Max gives more headroom for a long, from-scratch build. Nothing you’ve already built is lost either way, so the work only pauses.
References
Sources checked August 2026- 01Influencer Marketing Benchmark Report 2026 (in-house programme share). influencermarketinghub.com
- 02Pricing, Sharetribe. sharetribe.com
- 03Pricing, Insense. insense.pro
- 04Pricing, GRIN. grin.co
- 05Pricing, Trend. trend.io
- 06Connect pricing (active accounts, payout fees), Stripe. stripe.com
- 07Identity verification pricing, Stripe. stripe.com
- 08Pricing (Pro plan, storage, egress, backups), Supabase. supabase.com
- 09Pricing (transactional email), Resend. resend.com
- 10Web developer hourly rates 2026 (freelance and agency benchmarks). developex.com
- 11Row Level Security, Supabase docs. supabase.com
- 12Storage access control, Supabase docs. supabase.com
- 13Plans and pricing (Pro, Max), Claude. claude.com
- 14What is the Max plan?, Claude support. support.claude.com
- 15Set up Claude Code, Claude docs. code.claude.com
- 16Models overview, Claude docs. platform.claude.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. Claude, Claude Code, and the Anthropic API are products of Anthropic. Verify current capabilities and pricing before relying on them.