18 domains cover the app. Domains 1-17 came from the first domain sweep; #18 (creator directory) was added after exploration found the root entity of the CRM was unnamed. Account settings (413 LOC) and shared profile components (1,181 LOC) remain unmapped.
Every domain, what it does, and what could replace it.
A creator-agency CRM built solo in about a month, now ~79,980 lines across 39 pages and 36 Convex modules. This map is the research spine: each domain records what it actually does mechanically, how it feeds the rest, what is already known to be wrong, and where the open questions are.
Scale
Frontend LOC plus Convex backend LOC across 622 tracked files.
One schema file. 39 files still import the Supabase client mid-migration.
Convex functions are public by default. ctx.auth appears 0 times in 36 modules.
No vitest, no jest, no test files. Verification is lint plus build.
Money
Everything that computes, moves or records value.
Pays commission to partners who introduced creators.
Open domain →Raises per-cycle invoices against creator net sales, in the creator's payout currency, at an FX rate frozen when the invoice is raised.
Open domain →Merges four sources into one reconciliation ledger where some rows are derived (keyed by sourceKey) and others stored; confirmations attach to either, and soft-deletes stay findable under a Deleted status so they can be undone.
Open domain →Staff attendance and sales tracking feeding pay.
Open domain →People
Creators, staff, and who is allowed to do what.
Public invite-token onboarding form, an intake queue, and an accept step that provisions the creator's Drive folder structure via a scheduled (never awaited) job so a Drive outage cannot fail an onboarding.
Open domain →Staff records, team assignment (A/B/C Team), and member onboarding.
Open domain →Two parallel permission systems: the canonical Convex ladder (10 roles x preview/edit/upload/download/delete) and a separate Supabase-backed table read by permissionUtils for file operations.
Open domain →Bespoke auth: haloAuth.
Open domain →The root entity of the whole CRM — the creator record every other domain hangs off.
Open domain →Content
The media pipeline and the assets it manages.
Google Drive v3 over REST with a stored OAuth refresh token.
Open domain →ElevenLabs voice cloning with the API key correctly held server-side in the Convex deployment env.
Open domain →Canvas signature capture with public token-link signing.
Open domain →Tracks custom content orders through status transitions.
Open domain →Platform
Cross-cutting surfaces the rest of the app sits on.
Scope
Source: site/data/domains.json · counts reconciled in research/CANONICAL-NUMBERS.md · regenerate with node site/scripts/generate-domain-pages.mjs