Skip to content

Character identity + entity extraction + Review Cast panel #13

Description

@taskmasterpeace

✅ Decided — locked, do not re-litigate

  • UI: the "Review Cast" panel — the machine proposes, you confirm once and every mention re-links across the transcript; aliases drive find-and-replace; status colors green = confirmed, amber = needs review, red = conflict — never purple.
  • Reuse, don't reinvent: Director's Palette already ships extractEntities (with alias-merging — "a.k.a."/nicknames collapse into one character + aliases[]), the name/tag/alias model (StoryboardCharacter: name + metadata.aliases[] + reference_tag), and the alias-aware name-replacement.service — all stateless, portable. Mirror them into the desktop, don't rebuild.

Part of the design spec (Pillar 5). Make "Lands" in the audio reliably become "Lands Davis" → @ldavis → the right reference images, with a great review UX.

Feature goals

  • Character model gains reference_tag (@ldavis) + aliases[] ("Lands", "L-Dav") alongside name, mirroring DP's StoryboardCharacter. (Today desktop Character has only name, and @lands doesn't even match "Lands Davis" — a real bug.)
  • Entity extraction on transcript load — reuse DP's extractEntities (already merges aliases + writes visual descriptions).
  • Review Cast panel (chosen UI): side panel beside the transcript; each detected character = name + mention count + confidence + context snippets. One gesture: link to existing (autocomplete by name/@tag/alias) or create new; confirm once → all mentions re-link; Same / Different / Not sure for look-alikes; aliases = find-and-replace that persists back to the character (next song auto-resolves more). Inline click-a-mention to fix one instance. Status colors green/amber/red (no purple).
  • Resolution into generation: a confirmed @tag auto-attaches the character's references (alias-aware, reuse DP's name-replacement.service).

Quality goals

  • Small/obvious cast = a fast keyboard flick, no per-mention babysitting.
  • One confirmation makes "Lands" → @ldavis → right references everywhere; find-and-replace shows a re-link count with undo; user never forced into a wrong commit (Not-sure defers).
  • New aliases learned here persist, so each subsequent transcript auto-resolves more (compounding).

Acceptance

Load a song transcript → "We found 3 characters" → confirm + link @ldavis once → all mentions re-link, references attach, that section generates with the right character automatically.

Dependencies / reuse / files

Depends on Pillar 4 (transcript, #12). DP: extractEntities, StoryboardCharacter, name-replacement.service. Desktop: backend/state/library_store.py (+reference_tag,aliases), backend/server_utils/prompt_language.py (alias-aware), frontend/views/Characters.tsx, frontend/hooks/useMentionOptions.ts, new Review Cast panel component.

Metadata

Metadata

Assignees

No one assigned

    Labels

    designHas a design specmvpPart of the core AI-native timeline loop

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions