Muses Live ยท for the engineer

What we're building and where it stands

Muses Live is a managed UGC platform. Apps and consumer brands launch creator programs; vetted creators film short videos from Muses scripts and post them on TikTok and Instagram; the Muses team runs everything in between. Brands pay a fixed fee per creator plus a weekly charge based on views.

Live: muses-platform.vercel.app Repo: GitHub muses-studio/muses-platform (private) Launch: Nov 19, 2026 Tests: 44 end-to-end checks + 121 access-rule checks

Four kinds of user

Every conversation, file and approval belongs to a campaign, and each campaign has exactly one lead admin from the Muses team. Brands and creators never talk to each other directly.

Brand (client)

Sets up and watches

Creates campaigns, sets budget and weekly cap, optionally approves creators, scripts and drafts, sees analytics, messages their admin.

Creator

Films and posts

Applies through lessons and a tryout, joins campaigns, gets a daily script, uploads drafts, posts, gets paid fixed monthly pay plus a views bonus.

Admin

Runs campaigns

Muses campaign manager. Publishes job posts, picks creators, releases scripts, reviews every draft first, runs chat. Only sees campaigns they lead.

Super admin

Runs Muses

Approves creators, assigns a lead admin to each new campaign, manages people, demo requests and invite codes. Sees everything.

Stack and architecture

One Next.js app on Vercel talks to Supabase for data, sign-in and live updates. Videos and files go straight from the browser to Cloudflare R2 with short-lived upload links, so large files never pass through our server. Access is enforced in the database with row-level security, not only in the app.

Next.js 15 (App Router, server actions)React 19TypeScript Supabase: Postgres + RLS, Auth, RealtimeCloudflare R2 (S3 API)Cloudflare Stream (showcase videos)Vercel

To add

Supabase

Vercel

direct upload with
signed link

live updates

signs upload and view links

Brands, creators
and the Muses team
in the browser

Next.js app
pages, server actions,
API routes

Auth
email + password

Postgres
row-level security,
guard triggers, RPCs

Realtime
chat, unread counts

Cloudflare R2
tryouts, drafts,
chat files, photos

Stripe billing

Analytics aggregator

TikTok and Meta APIs
after approval

Email sender

Error tracking
and uptime alerts

Solid lines are live today. Dotted lines in "To add" are the integrations the engineer owns.

Campaign lifecycle

The core loop, from a brand creating a campaign to the weekly invoice.

switched on

off

switched on

off

Brand creates campaign
8-step wizard: brief, creator persona,
content, budget and weekly cap

Submits

Super admin assigns
a lead admin

Admin publishes job post

Approved creators apply
from the job board

Brand approves
creators?

Brand picks from
admin's shortlist

Admin selects creators

Creator accepts pay terms
and connects accounts

Admin writes or uploads scripts,
released one a day to each creator

Creator films and uploads a draft

Admin reviews every draft first

Brand reviews
drafts?

Brand approves or
sends notes to admin

Approved

Creator posts on TikTok / Instagram
and adds the link

Views tracked daily
dummy data until analytics is connected

Weekly invoice: base fee +
tiered CPM, capped at weekly cap

Creator pay: fixed monthly +
views bonus

Pricing rules: $500 per creator per month base fee (minimum 3 creators). Performance is billed weekly on views; the rate per 1,000 views drops as weekly views rise, and spend never goes over the brand's weekly cap. All of this lives in one pricing module used by the wizard, invoices and creator pay.

Creator journey

Creators don't see the job board until a Muses reviewer approves them. Known creators can skip onboarding with an invite code.

approved

sent back with notes

invite code

Sign up

About you
name, country, DOB 18+,
mobile number

Accounts
TikTok / Instagram,
videos a day

Style
formats, app types

3 lessons
each with a task

2 tryout videos
upload or record

Reviewed
within 24h

Job board

Apply to campaigns

Daily script inbox,
drafts, posts, earnings,
chat with admin

Brand journey

Muses follows up

Landing page

Book a demo
lead captured

Sign up as a brand

Campaign wizard
saves as a draft at each step

Submit

Campaign page
creators, scripts, drafts,
posts, analytics, invoices

Approvals
if switched on

Chat with their admin

Campaign states

Only the lead admin moves a campaign through staffing, live, paused and ended. Brands edit only while it's a draft.

brand starts wizard

brand submits

super admin assigns lead admin

creators selected and posting

draft

submitted

staffing

live

paused

ended

cancelled

Data model

The main tables. Everything that happens on a campaign hangs off campaigns; the creator's link to a campaign is campaign_creators.

is a creator

is an admin

has

belongs to

runs

publishes

receives

staffs

daily scripts

has

uploads

becomes

daily views

bills

invoiced

chat

contains

members

reactions

profiles

creator_profiles

admin_profiles

clients

client_members

campaigns

job_posts

applications

campaign_creators

seed_queue

scripts

drafts

posts

post_metrics

billable_events

invoices

threads

messages

thread_members

message_reactions

Also: pricing_tiers, training_modules, training_attempts, training_quiz_keys, invite_codes, leads. Schema and access rules are in supabase/migrations, one file per change.

Who can do what

Enforced in Postgres with row-level security plus guard triggers on sensitive columns, so a user can't, for example, approve themselves or read another brand's campaign even with a hand-made request.

AreaBrandCreatorAdminSuper admin
CampaignsOwn brand's; edit only as draftOnes they're onOnes they leadAll
Creator approvalOnly if switched onCan't change own statusShortlistsApproves creators
Scripts and draftsReview if switched on; notes go to adminOnly scripts released to them; own draftsWrite, release, review allAll
AnalyticsIf admin shares themOwn postsTheir campaignsAll
ChatTheir admin onlyTheir admin onlyCreates threads, picks membersAll
FilesOwn campaign'sOwn uploads onlyTheir campaignsAll

Built, in progress, and what we need from you

The product screens and flows were built in-house and work end to end. The engineer's job is to make it safe, reliable and connected before real clients and creators arrive.

Built and live
  • Landing page, book-a-demo, sign-up and log-in for all roles
  • Brand campaign wizard with pricing slider and weekly cap
  • Creator onboarding: lessons, tasks, tryout videos, 24h review, invite codes
  • Job board, applications, shortlists, creator selection
  • Daily script inbox, drafts, review loop, posts
  • Realtime chat: files, voice notes, reactions, replies, mentions, read receipts
  • Admin and super admin dashboards, approvals, people, demo requests
  • Mobile layout for the creator side
  • Access rules with automated tests
In progress (internal)
  • Changes from internal testing on real phones
  • Lesson videos for onboarding
  • Auto-approve drafts after 48 hours with no brand reply
  • Stripe billing: $500 per creator monthly + weekly views invoice (first version)
  • Turning email confirmation back on, removing demo data before launch
Needed from you
  • Security review of access rules, uploads, secrets and server actions; fix what you find
  • Stripe: review and test billing end to end, including failed payments and refunds
  • Analytics: connect an aggregator for real views (daily refresh plus on-demand), replacing dummy numbers; later TikTok and Meta APIs
  • Production setup: paid Vercel and Supabase plans, backups, a staging copy
  • Email sender for password reset and confirmation
  • Error tracking and uptime alerts
  • Load and edge-case testing before launch, especially uploads from phones

Out of scope for v1: creator payouts happen outside the platform for now. Posts-gone-live tracking waits for API approval.

Timeline

Nov 2 to 3You startAccess to GitHub, Vercel, Supabase, Cloudflare
Nov 3 to 5Security passProduction setup, error tracking
Nov 5 to 10IntegrationsStripe, analytics, email
Nov 10Feature completeNothing new after this
Nov 11 to 19Test and launchLoad tests, fixes, live on Nov 19