Live Production

Live Production

The Live Production section manages every scripted or riff video being filmed and edited by the team. Each record is a production — opened as its own Production page — a single panel that tracks the full lifecycle from Scripted through filming, editing, qual review, approval, and posting.

Click any step to jump to its details below.

Live Production grid

Load video cards grid

Shows all non-Posted live production video cards in a sortable, resizable table. Archived clients' cards are hidden. Client Users and Talent are scoped to their assigned clients only.

Status chip filter

One pill per status (each with a live count), plus an All pill in first position that shows every status including Posted. Click a status pill to filter to it (click again or "Clear ×" to remove the filter). The dropdown's "All — including Posted" and the All pill are the same filter; "Show archived" stays independent.

Search box

Filters loaded cards by script name, the resolved talent names shown in the Talent column, the legacy actor name, notes, file name (still searchable though its column is gone), or client name. Client-side — filters the already-loaded list.

Status dropdown filter

Secondary status filter including Posted as an explicit archived view.

Client filter

Filters to one client. The options are derived from the data: any client with at least one row in the current view appears (including inactive clients that still hold work); clients with none do not.

Editor filter

Filters to cards assigned to one editor.

Column sort

Sort by Script/Title, Client, Producer, Status, or Date. Toggles ascending/descending. Saved to URL. The Talent column is not sortable — it is multi-valued and derived; use search and the collapse toggle instead.

Talent column

Sits between Date and Notes and shows who the card would shoot with, highest source first: talent booked on the card's shoot segments (solid), the mapping default resolved from the script's characters (greyed — intent, not a booking), the card-level assigned talent, or the legacy free-text actor name (marked as unstructured). A card with none of these shows an explicit "No talent". A whole-column collapse toggle (▾/▴ in the header) switches every row between a one-line strip and full wrap, like the Scripts list's Characters column. The old Frame Links and File columns are gone from the grid — the fields survive unchanged on the Video Card.

Inline Notes editing

Click the Notes cell to edit it in place — it writes the same field as the Production page's Notes and is audit-logged. On Riff rows this field holds the card's TITLE, so the editor is labelled "Title" there and editing it renames the card. Any internal user may edit; external accounts cannot.

Column resize

Drag column borders to resize. Persisted to localStorage.

Incomplete alert banner

Appears automatically when any loaded card has Incomplete status. "Show Incomplete" button sets the status filter to Incomplete.

Inline status change (row dropdown)

Change a card's status directly from the grid row. The same notifications fire as from the Production page's status controls. Server enforces valid transitions and role gates (Approved requires Qual Reviewer, Power User, or Admin).

Right-click "Open in new tab"

Right-click a row's title to open the card's deep link in a new tab.

Deep-link to a card

Visiting /live?card=[id] or navigating from a notification automatically opens that card's modal.

Add Riff Card

All users

Creates a script-less video card for riff/freestyle content. Fill in Client and Title (required), plus optional Talent (the legacy free-text name — stored as actor_name), Producer, Editor. Available to all roles with page access.

The Production page

Opening a production — from the Live Production grid, a notification, the Production Calendar, the Edit Queue, a footage match, or a Clio chip — lands on its own page at /production/<id>. Old /live?card=<id> links redirect there, so nothing you bookmarked breaks.

Notes on the card.

Under the stage buttons at the top right sits the card's notes thread. (The short box on the Script stage labelled Grid note is different: that one line is what the Live grid's Notes column shows.) Every note shows who wrote it and when; tag one Hand-off when it is for the editor, and use the Hand-off · N chip to read only those. Type in the box and press Post (or Ctrl+Enter). You can edit or delete your own notes; Admins can delete any. Notes written in the old "Edit notes" box are already in the thread, marked from Edit notes.

Header (always visible)

Project name and production title; the status chip with the same advance controls and rules as before (Start Filming, Mark as Filmed, Send to Editing, Send to Qual, Approve, Mark as Posted, Mark Incomplete, one step back, Archive/Unarchive when Posted); Producer, Talent, Editor and Writer under the existing permissions (Producer lists Producer-role members only; Talent is read-only — the booked or character-registry cast when there is one, otherwise "— Assigned at booking"; Writer is set on the script); key dates; a small video thumbnail (click → Review); attention badges — Cut list ready, Incomplete, open comments, archived versions. Copy Link copies the page URL. View Script opens the script. The ⋯ menu holds Export CSV, archived versions and Delete (with confirmation). When Incomplete, the reshoot date + "Schedule & Resume Filming" sit in the header.

Stage rail

Script · Shoot · Edit · Review · Post, each marked done / active / waiting. The page opens on the stage that matches the status — Scripted → Script; Filming, Filmed → Shoot; Editing, Incomplete → Edit; Qual, Approved → Review; Posted → Post — and you can click any stage. ?stage= in the URL deep-links a stage. One stage is visible at a time.

Script stage

Script name, format, qual status, a read-only preview of the rows, View Script, Export CSV, the Characters panel (per-script cast overrides, cam tags, refresh, remove) and the internal Notes. In the Characters panel each character shows one of three states: the cast talent (a per-script override, editable in place), a muted NAME · DEFAULT chip (the project's standing cast from the character registry — what the card will shoot with unless you override it), or a dashed UNCAST chip. Click either chip to open the talent picker for this script; the ✕ at the row's end is the only thing that removes a character. The list follows the script as it is edited: new names appear on save, and names that vanished from the script and were never cast disappear with them. Riff productions (no script) show the Riff title here instead. Cooking productions show Phase 1 and Phase 2 side by side with Open / Write Phase 2 Script (same visibility rules as before).

Shoot stage

the camera segments with their bookings and a Plan shoot segments / Edit shoot plan button that opens the Schedule Plan modal for this production (same modal as the Script List's Ready tab; saving replaces the unfilmed segments and keeps filmed ones; talent-only rows on Riff productions), plus Production Calendar ↗ to that production's row in the Script List — there is no manual Shoot scheduled or Date filmed field any more (the shoot date comes from the segments; the filmed date is set when the last segment is ticked filmed); the Raw Footage section (collapse, Select, Download all / selected as zip, per-clip play, Transcribe with its state, Process Clips, download); and Scene coverage — one chip per script row, the Scenes called on set: N% meter, and the silent-row corrections ("App thinks this row is silent — wrong? Mark speaking." / "Mark silent"). A row whose Line is only punctuation ("...") is a reaction beat: it is not counted in coverage, and any take the crew calls for it lands in the REACTIONS block at the end of the cut list. A short line ("Hey boss?", "Yeah?", "VO: One…") counts as covered when it is heard word-for-word and checked against the script — either it is the only row with those words, or a neighbouring row is heard right beside it in script order. Very common short lines ("Thank you!", "Oh my god") always need that neighbour, because crews say them all day.

Edit stage

Editor, Edit scheduled, Edit notes, the project file (upload / replace / download / remove), and the Cut list: the current build (the latest stored version) with Download for Premiere, a one-line summary for the editor — version · scene count · any missing scenes · clips to crop (16:9 source) with their file names · the screening's count of blockers and notes — and, for internal users, a Diagnostics toggle (closed by default) that opens the build's telemetry: cuts and welds, fallbacks, reaction and voiceover counts, amendments, trims, call words, spend and cache, the eye, the judge, the span check, the model that read the clips; older builds sit under a Version History control at the bottom (stored date · version · the same one-line summary · View · Download) — View opens an old build read-only, marked "viewing vN — not current" (no picks, no swaps, no uploads), and Back to current is one click; Build cut list, Takes by scene (every take the model mapped for every script row, labelled clean / partial / flub / director feed — "director feed (eye, corroborated)" when the stored frames show nobody on camera mouthing a line that belongs to a character other than the clip's bound performer — plus every take the model claimed for a row that failed the word check, listed as rejected with its reason; when the Admin setting judge is on, every real delivery also carries the judge's label — "as scripted (judge)", "variant (judge, better than scripted)", "flub (judge) · rejected" — and a ⚖ note quoting the evidence it cited ("director: 'bounce scare again, faster'"; "room laughs, director says moving on"), a judged pick reads "variant (judge)" in the row summary and offers revert to strict pick; the rough-cut pick marked; rows shot together in one take carry a scene 5–7 chip; the eye's notes on a take — "👁 visible break (laugh) at 2:41 (clean → partial)", "slate in frame" — and Use this take to make any take, a rejected one included, the pick on the next build; the header names who is on camera in each clip and how that was decided), Upload editor cut (FCP7 XML) on each version row with the resulting "Editor kept 78% of the machine's picks" score and a per-scene list, and Unsorted takes (N) — parked at the end of the timeline with a plain reason per take (for example "words didn't match any scene", "scene call and words disagreed"). If any clip on the production has no transcript yet, a "Cut list is waiting on transcripts" note names the clips with a Transcribe button each — the cut list builds from transcripts. Scene clips extracted by Process Clips are counted here and played on the Shoot stage.

What's in the download.

One Premiere file (Final Cut Pro 7 XML) with one sequence by default: ROUGH CUT — <title>, a first-pass edit you can watch straight away. Before the cut is planned, the model set in Admin → Scene Scrub (by default claude-opus-5) reads every clip's whole transcript against the script and maps it into takes — who is performing which row, whether the take is clean, partial or a flub, where a line restarts, and which stretches are the director feeding the other character's line from off-camera, slate calls, or chatter. Nothing the model says is trusted on its own: a take counts only when the row's own words are actually heard, in order, inside the stretch it names (the app checks this deterministically); anything that fails that check lands in Unsorted takes. The rough cut then takes, for each script row, the last clean take (clean = the whole line, no stumble, at least 70% of its scripted words heard); when no clean take exists it uses the best partial and says so, and a flubbed take is never picked while a clean or partial one exists. One take per shoot scene: when the card's Shoot Plan has segments with their cast, the script's consecutive rows on one camera side — alternating actors included — are one shoot scene (the panel names it "Seg: PG+Diane"); without segments, the rows a performer attempted together in one take form the shoot scene. Every row of that scene is cut from ONE take — the last clean take that covers the whole scene, else the last usable one (flagged); a row that take skipped is filled only from another take on the same camera, otherwise it is left as a labelled hole rather than butting a second take of the same scene against the first. Rows a performer ran through in one breath are welded: one clip spans the run, with no cut inside it. No cut mid-sentence: every placed span runs to the end of the take's own utterance — when the transcript shows the sentence continuing without a pause, the words that finish it are kept (never a "cut" call, never another row's own words) — then the usual tail pad; no span starts or ends inside a word. Rows with no words ("...") are reaction rows, never counted as holes: when the eye can see the character on their camera between the lines, a reaction shot (picture only) is placed there with its frame evidence, otherwise the chip says why. Rows beginning "VO:" are voiceovers, labelled VO: their audio plays under their carrier row's picture on a third audio track ("[VO under Sc N]"), the carrier extending while the eye still shows its character or the VO flagged "vo overhang". The set's script decisions — lines cut or reworded on set, found in the crew talk with the quote — are listed in the panel as amendments: a hole on a cut row reads "cut on set", an amended row is judged against its new wording under the judge, and any amendment can be dismissed in one click. A row is only ever cut from a clip whose on-camera performer is that row's character (or unknown) — a director feed is never used as a performance. Picture cuts are plain butt-cuts on V1 and the sound is checkerboarded on A1/A2; every join is a straight cut by default — sound and picture cut together at the take's bounds, no audio fades, no offsets (an Admin can switch Rough cut joins to jl to bring back the J-cut / L-cut offsets chosen by listening to the handles, with the same choices on a rebuild). The format is pinned: the sequence is declared at the width × height set in Admin (1080 × 1920 by default) and every media file is declared with its true picture size (rotation applied), pixel aspect, audio channel count, bit depth, sample rate and frame rate read from the file itself — a 16:9 clip in a vertical sequence is still placed and is listed on the version line as a clip to crop (the house pattern: shoot 16:9, crop to 9:16 in the edit); a warning appears only when a source is narrower than the sequence (an upscale) or when the eye's orientation verdict disagrees with the file. The eye. Before the cut is planned, every clip is also watched: one frame every two seconds (Admin setting) is read by a small vision model — who is in frame and whether their lips are moving, whether a slate or a phone is up, whether the actor visibly broke (a laugh, a look to crew, a walk-off), and which way the picture actually points. The app then binds each person it saw to a script character by correlation alone — the character whose verified lines fill at least 60% of that person's speaking moments across two or more takes — with no reference photos; that binding decides whose camera each clip is (it outranks the shoot plan and the take map's own guess). A take that overlaps a visible break is downgraded from clean to partial (the eye can lower a take, never raise one); a take nobody on camera is mouthing — the stored frames inside it show no moving lips — is reclassified as a director feed (eye, corroborated) and never used, but only when the line belongs to a character other than the one the clip's camera is bound to (the Admin setting span check mode: corroborate, the default; strict reclassifies every silent-mouth take, the earlier rule; off never does) — a performer's own line on their own camera, or any line on a clip whose camera is not known, is never taken away by the eye, whose lips reading is unreliable where faces are small; when one face fills a clip, that clip's camera is bound to the character whose verified lines the face appears with, even where lips were too small to read; a take with a slate in frame for most of its length is excluded; and the picture's true orientation overrides the file's rotation flag, so a Sony FX3 clip shot vertical is declared 2160 × 3840 rather than letterboxed. The eye runs once per clip at upload (never blocking it) and, for older footage, at the first cut-list build, within its own spend caps; it stores its reading with the clip, so it is never paid for twice. A marker sits on every join ("Straight cut · Sc 7→8 · 2 alternates — pick in Heliconflow") and names a fallback, a scene take that had to settle for a partial, or an editor pick; a row with nothing usable is a labelled hole ("Sc 9 missing — see Heliconflow panel"); a two- or three-word interjection heard with one word mangled is cut in as a flagged recovered placement only when it is the row's only candidate, the model called it clean or partial, and the eye saw the performer's lips move during it; and a whole take longer than the cap (15 s by default) becomes a hole too ("Sc 6 — whole take 82s exceeds cap — see Heliconflow panel") rather than a minute of raw footage in the cut. The judge (optional — Admin → Scene Scrub → judge: strict | judge; strict is the default and changes nothing). With the judge on, the words check stops being a gate and becomes evidence: one model pass reads every real recorded delivery of every row — the verified takes AND the near-misses the words check refused, never a director feed, a slate or crew talk — in the story (the script rows around it) and in the room (everything the same camera's microphone heard in the minute before and after: the director's notes, "again" / "good" / "moving on", lines being fed, laughter), and labels each one as scripted, variant (a changed line the set accepted) or flub, keep or reject, with a one-line reason that quotes its evidence. Placement stays deterministic: an editor pick still wins; then a variant the room explicitly preferred over the script (the set's stated preference beats an as-scripted read); then the last clean as-scripted keep; then any kept variant when nothing as-scripted exists; then the usual ladder. A feed never places, a judged flub never places while a usable take exists, and the judge cannot invent or move a take — it only labels what was recorded. A placed variant carries its verbatim words and the judge's reason into the marker and the clip label ("[variant (judge): "Hey boss quick question" — crew: 'Got it I'm happy']"), and one click in the panel reverts it to the strict pick. The judge spends inside the same per-build cap as the take-map read and caches its verdicts, so a rebuild on the same footage costs nothing.

The screening (judge mode).

Once the cut is assembled the same model watches it whole — every shot with the words actually heard in it, the script as the set amended it, and the entire shoot transcript — and reports what a director would catch on a first viewing: the same film played twice, a line that runs out mid-thought, an answer landing before its question, a beat that never landed, a continuity slip. Each issue names its shots and rows and cites its evidence (a quote in a clip at a time, or the script rows); click the citation to open that row's takes. The verdict is the model's own — READY, or the blocker and note counts — and it is the first marker of the download. The screening may lengthen a shot by a few proven words (a screening extension, marked 🎬); it may suggest a better take, but never swaps one for you — "apply as editor pick" makes that an ordinary editor pick with its audit row. When the screening's cost would not fit the build's cap it stops and says so. Strict mode has no screening.

Two rules the cut always keeps.

The director's call never plays inside a shot: a leading "action" is stripped from the picked span whatever its distance to the line, a trailing "cut" when a quarter-second of air separates it (a call strip, marked ✂), and the version line warns if any shot still carries one. The same film never plays twice back to back: two rows that resolve to the same take weld into one shot ("Sc 1+3"), and a repeat placed apart is flagged duplicate film ⚠. Both apply in strict and judge mode alike — they are defect fixes, not judgments.

Where a voiceover's picture comes from.

Every second of a VO line plays over a named picture. When the shoot recorded a reaction pass — a stretch where the director cues listening faces ("look at him", "reactions", "wide-eyed") with no scripted line — that pass is shopped first: a silent shot of the listener (or, by setting, the line's own speaker) from it, and the voice then follows the carrier's line instead of playing over it. Otherwise: the carrier's own shot first; then the carrier held while the eye still shows its character, a silent shot of the listener minted from the stored eye, or the carrier held unverified (flagged ⚠ when the clip has no eye); then the shots that follow, named "[VO rides Sc N]"; only a final tail with no footage left at all is a vo overhang. The VO row in Takes by scene names its VO chain; the marker repeats it; nothing overlaps another take, no feed or call ever sits inside a carrier, and an editor pick is never stretched.

Naming the faces.

When the eye has indexed a clip, the clip's page (Raw Footage → the clip) lists the people it saw as cards — the eye's description, the usual position, and jump links into the player. Pick the character from the registry and Save (the button reads "Saving…" while it works; when it lands a "Saved" mark stays beside it — "Cleared" after a Clear — until you do something else to that face or close the panel; if the server refuses, the reason shows on the card). Next to the mark sits Undo: one step back, restoring exactly what that face had before — the previous name, or no name if it was the first — and it is logged like any other change, marked as an undo. From then on that name is the eye's authority on the clip: the camera guard, the span check, carrier holds and minted listener shots all read it first. A two-shot with both faces named becomes a two-character camera. Clear removes the name; both are audited. Director and Crew are two more choices for the people who are on set but not in the cast — the director standing in a two-shot, a crew member holding the slate. A face named Director or Crew is never treated as a performer: it never stands in for a character, never makes the clip that person's camera, and its moving lips never count as a line being performed — on the contrary, when the only lips moving during a claimed take belong to a face named Director or Crew, the take is the director's feed and is set aside. Naming from the production card: on the card's Shoot stage, every raw-footage row whose clip the eye has indexed shows a small naming control between the file name and the Transcript button — one mini-select per face for up to two faces (choose a name and it saves at once; the "Saved" or "Cleared" mark and its Undo appear right there), or a "Faces…" button that opens the same cards when there are more; saved names show as chips. Editors see the chips but cannot change them.

The Raw Footage list and its pills.

"All" shows every clip that is not archived — every page of them, so an older Matched clip is as present as yesterday's upload — and the count in the header is the number of rows you are looking at. Archived clips (footage whose production has been Posted, or that was archived by hand) appear only under 📁 Archived, which pages the same way. A clip on a Posted production that was never archived is not archived: it still lists under "All" and its match status.

Where the alternates live.

In the app, not the file: the Edit stage's Takes by scene list shows every script row with every take the model mapped — file, in/out, clean / partial / flub / director feed (or "director feed (eye, corroborated)" when the eye reclassified it), restarts, the words heard — plus every take it claimed for the row that failed the word check ("rejected — only 2/5 scripted words heard in order"), and marks the rough-cut pick. Rows shot together in one take carry a "scene 5–7" chip. Click Use this take on any take, rejected ones included, and the next build cuts that take in (marker "editor pick", or "editor pick (unverified take)" for a rejected one); every such choice is kept with who, when and what it replaced. The version row shows "Rough cut: 14 scenes · 12 straight cuts · 1 fallback pick · 0 gaps · 3 welds · 5 shoot scenes · 4 single-take · 3 clips to crop (16:9 source): C2584.MP4, … · read by claude-opus-5" (under the jl join style the straight-cut count gives way to the J/L split), names any clip the model could not read (the older cue-based matcher fills in for it), shows the read's cost, and says which span check ran ("span check corroborate: 0 corroborated feeds · 22 silent-mouth takes kept"). 02 ALL TAKES — by scene (the parts-bin sequence: every take of every speaking row, the pick first, then REACTIONS and REVIEW, each item labelled clean / partial / flub / director feed / restart-of) is still available when an Admin turns on include the 02 ALL TAKES sequence; the file then carries both sequences as before.

Closing the loop with the editor.

When the editor finishes in Premiere, they export the sequence as Final Cut Pro 7 XML (File → Export → Final Cut Pro XML) and click Upload editor cut on the version they started from. The app matches each clip in the export to the machine's picks by file and source timecode and grades every scene: kept as-is (a trim of a second or less still counts), trimmed, replaced with another take of the same scene, reordered, or dropped; clips from outside the rough cut are listed as added. The version row then reads "Editor kept 78% of the machine's picks (42/54)" with the per-class counts and a per-scene list. Uploading again replaces the score for that version. Nothing but the score is stored — the XML itself is never kept — and the scores are never deleted: they are the record the future taste loop learns from. Admins can turn on the Editor cut scored notification.

Review stage

The video player as the centerpiece (or the uploader when no video exists yet) with its action row: Share, Transcribe / Retry, Download Video, Comments (opens the Video Review page), and a ⋯ menu holding Download as Zip, archived versions and Delete / Archive Video (with confirmation). File Name and File Location are edited here.

Post stage

Posted date, Channel (the project), the posting-scheduler slots with a link to the Posting Scheduler, Archive/Unarchive for Posted productions (in the header), and a collapsed Legacy links drawer with the Frame.io-era Frame Link / Frame Folder Link fields (still editable). Cooking productions show posting by phase.

Saving

Field edits collect into a sticky "Unsaved changes" bar with Save Changes / Discard — one save, like the old card.

Who sees what

Exactly what the Video Card allowed: external users see and edit what they could before; Scene Scrub sections (coverage, cut lists) are internal-only and never render for external accounts.