Brand Entities
Complete reference for the brand hierarchy, ownership model, and brand-to-app mapping
Brand Entities
Brand Studio manages all brands through the brand_entities table. Each brand has a slug, display name, owner, and optional parent, forming a hierarchical tree rooted at the global entity.
Brand Hierarchy
All Brand Entities
| Slug | Display Name | Type | Owner | Tagline |
|---|---|---|---|---|
global | Global Brand Defaults | global | (none) | (none) |
rdc | Regenerative Development Corporation | company | rdc | Life before Profits. |
prt | Planetary Regenerative Trust | product | rdc | Life thrives through regeneration... |
life_ai | Life AI | company | rdc | Machines handle calculation; humans handle conscience. |
place_fund | The Place Fund | product | rdc | Where places become investable. |
rccs | Regenerative Capital Credit System | product | rdc | Verification that earns its weight. |
zoen | Zoen | product | rdc | Living is zoen. |
keystone_species | Keystone Species Co. | product | rdc | (none) |
evergreen_foundry | Evergreen Foundry LLC | project | evergreen-foundry | (none) |
Brand Type Enum
Every brand entity has a brand_type value:
| Type | Meaning | Example |
|---|---|---|
global | The single root entity. is_global = true. Cannot be deleted. | global |
company | A legal entity or operating company. | rdc, life_ai |
product | A product, platform, or service owned by a company. | prt, zoen, rccs |
project | A time-bound project with its own branding needs. | evergreen_foundry |
Ownership Model
Every brand (except global) must have an owner_slug pointing to a valid brand_entities row. The database trigger rejects inserts without an owner.
owner_slugidentifies who controls the brand's tokens and assets.parent_entity_slugdefines the inheritance chain for token resolution. A brand inherits tokens from its parent, which in turn inherits from its parent, up toglobal.
For most brands, the owner and parent are the same entity (rdc). The exception is evergreen_foundry, which is owned by evergreen-foundry (its own entity).
Slug to App Mapping
Each monorepo app is associated with a brand slug. The app loads tokens for that brand via the Brand Studio API or direct Supabase queries.
| App | Package | Brand Slug | Include Pattern |
|---|---|---|---|
apps/prt | @regen/prt | prt | A (Next.js) |
apps/rdc | @regen/rdc | rdc | A (Next.js) |
apps/rdc-marketing-engine | @regen/rdc-marketing-engine | rdc | A (Next.js) |
apps/place-fund | @regen/place-fund | place_fund | A (Next.js) |
apps/lifeai | @regen/lifeai | life_ai | A (Next.js) |
apps/rccs-admin | @regen/rccs-admin | rccs | A (Next.js) |
apps/regenity | @regen/regenity | rdc | A (Next.js) |
Include patterns are defined in the design system global rule. Pattern A fetches tokens server-side via the Brand Studio API and injects CSS variables in the layout.
Querying Brands
List all brands
Fetch a single brand with its token overrides
Fetch a brand with legacy tables
Registering a New Brand
New brands require an owner. The database trigger rejects inserts without a valid owner_slug.
Alternatively, use the New Brand Wizard at /brands/new in Brand Studio. The wizard has three steps:
- Identity -- set
display_name,slug,tagline, andparent_entity_slug. - Token Source -- choose blank (inherit 100% from global), fork from global (copy all 54 tokens as overrides), or fork from an existing brand (copy that brand's overrides).
- Confirm -- creates the
brand_entitiesrow and, if forking, bulk-inserts override rows intobrand_token_overrides.
Database Schema
brand_entities
| Column | Type | Description |
|---|---|---|
id | uuid | Primary key |
slug | text | Unique identifier used in URLs and API calls |
display_name | text | Human-readable name |
tagline | text | Brand tagline |
parent_entity_slug | text | FK to brand_entities.slug for inheritance chain |
owner_type | text | Type of the owning entity |
owner_slug | text | Slug of the owning brand entity |
brand_type | text | One of: global, company, product, project |
is_global | boolean | True only for the global root entity |
is_active | boolean | Whether the brand is active |
Related Tables
| Table | Purpose |
|---|---|
global_design_tokens | 54 base tokens inherited by all brands |
brand_token_overrides | Per-brand delta overrides (Phase 22+) |
brand_colors | Legacy per-brand color rows (pre-Phase 22) |
brand_typography | Legacy per-brand typography rows |
brand_spacing | Legacy per-brand spacing rows |
brand_table_styles | Table rendering styles per brand |
brand_assets | Asset metadata with R2 storage paths |
brand_design_docs | Per-brand DESIGN.md content for the Voice page |