No site selected

Personalities

Admin source-of-truth catalog for INSPIRE / HUMOR / posts.

About this section: Personalities catalogList of every authoring identity in admin_panel.

Purpose

Personalities are the admin source of truth for who authors content on customer-serving surfaces. INSPIRE per-site defaults, HUMOR per-personality eligibility, and any future surface that picks an author identity all read this catalog. The PUBLIC plane mirrors the table via the publish projection.

Fields

Personality Tag
Stable internal/editorial identifier (lowercase snake_case). UNIQUE across the catalog. Other tables reference personalities by id, but the tag is the human-friendly handle for ops.
Display Name
Author-facing label rendered in pickers and on customer-serving surfaces. Added per decision 641 alongside the editor.
Kind
human / ai_persona / system. Pickers filter out system. Human personalities additionally pair with a backing account so the human can self-edit when that feature lands.
Lifecycle
draft / active / inactive / archived. Pickers default to active; archived rows survive for audit but disappear from pickers. The draft value was appended to the existing ENUM per decision 641.
Backing Account ID
Logical FK to PUBLIC.account.id of the synthetic backing account auto-provisioned per Phase 45 decision 568. Required for human kind; NULL for ai_persona and system unless the system has a long-lived service account.
Avatar Asset ID
FK to asset.id (set null on asset delete). Reuses the global asset library and the /admin/asset/... derivative serving path.
Sort Order
Display order in pickers; 0 = first.
Bio
Free-form admin-facing notes; some surfaces may project this to PUBLIC depending on per-personality publishing rules.
Auto Elect Eligible
Per Phase 43 decision 554 boolean kill switch governing the cohort lane auto-elect default. Edited via the existing personality_event flow; not on this form yet.

Example

A new AI persona is added in draft, copy is reviewed in the bio field, then lifecycle is flipped to active so it appears in pickers.

Consequences

  • Renaming personality_tag after other rows reference it can confuse tooling even if the database accepts it.
  • Deleting a personality that is set as a site's INSPIRE default is blocked by the UI; clear the site's INSPIRE default first.
  • Archiving a personality removes it from pickers immediately; existing posts that already reference it are unaffected.

Deeper dive

Why personalities live in admin (decision 641)

AI personas are admin-curated content authored by editorial / operations and pushed to PUBLIC like any other admin-owned entity. Treating PUBLIC as the source of truth would force admins to write into the customer-serving plane during authoring, which violates admin/PUBLIC separation.

Putting them in admin_panel also lets us tie ownership and lifecycle into the standard admin tooling (audit trail, lifecycle pills, policy gates). The PUBLIC mirror is rebuilt by the publish projection on save.

How INSPIRE consumes this catalog

Each site picks one personality as its INSPIRE default via site_config.inspire_default_personality_id. That column is now a real FK with ON DELETE SET NULL.

When INSPIRE renders per-asset cards, the site's default personality is the front of the card; the per-asset score + quote come from asset_inspire_analysis.

How HUMOR consumes this catalog

HUMOR uses personality_section_eligibility(personality_id, section_code='HUMOR') to opt specific personalities into authoring HUMOR posts. Each humor post inherits the personality's display name and avatar.

Per decision 643, the humor access_package is per-site (code = HUMOR_<site_slug>). Eligibility is per-personality and platform-wide; per-site visibility flows through the site_section_enablement gate plus the site's humor package binding.

Personalities 10

Source of truth for INSPIRE personality defaults, HUMOR eligibility, and any other surface that picks an author identity.

IDTagDisplay NameKindLifecycleBacking acctUpdated
7maya_wireMaya Wireai_personaactive-2026-05-02 15:43:40Edit
8leo_lensLeo Lensai_personaactive-2026-05-02 15:43:40Edit
9nina_northNina Northai_personaactive-2026-05-02 15:43:40Edit
10oscar_byteOscar Byteai_personaactive-2026-05-02 15:43:40Edit
11piper_popPiper Popai_personaactive-2026-05-02 15:43:40Edit
12quinn_queryQuinn Queryai_personaactive-2026-05-02 15:43:40Edit
13rhea_roastRhea Roastai_personaactive-2026-05-02 15:43:40Edit
14sami_signalSami Signalai_personaactive-2026-05-02 15:43:40Edit
15tessa_tabletTessa Tabletai_personaactive-2026-05-02 15:43:40Edit
16zane_zoomZane Zoomai_personaactive-2026-05-02 15:43:40Edit