How one filmed floral-design lesson becomes a finished video in every language we publish — and exactly where the hired video editor's job starts and stops. Everything below the picture-lock gate is downstream of one file. Everything above it is how that file gets made.
Read down the spine. Colour tells you who owns the work, not what the work is — because every place the colour changes is a place a lesson can sit and wait.
Three cameras roll on one lesson — Front View, Side View, Overhead — alongside a dedicated audio recorder. Four recordings, not three.
The creator pauses and resumes as she works, so any angle can arrive as several files
numbered -1, -2. That is normal, and putting them back in order
is part of the editor's job every single time.
The lesson gets a code and its own Drive folder. Every file is previewed, tagged with the camera it came from, and renamed to a canonical name so it sorts predictably:
FM-0042__bridal-bouquet-mechanics__front-view.mp4
Today the app marks a lesson “ready” once the three cameras are present. It never checks for the audio recording.
Since the dedicated recorder is the authoritative voice track, the app would happily hand the editor a lesson with no usable sound. A lesson now waits at “Ready — waiting on audio” until all four files exist.
ready_for_production — enters the editor's queueThe stage being scoped and hired for. Nineteen steps, the same nineteen every lesson. Two of them are done by the software; two are where the software must be overruled.
Silence is not dead air. It is the lesson.
The designer regularly works with her hands for thirty or forty seconds without speaking, and that is precisely what a student paid to watch. Every editing tool has a “remove silence / tighten this up” automation, and on this footage it destroys the product while looking like good work.
Remove speech errors. Never remove speech gaps. When unsure, keep it — an extra half-second of quiet has never been rejected here; a missing demonstration step always is.
Titles · overlays · captions · lower thirds · logos · music · graphics · intros · anything in any language.
All of it is added downstream, once per language. Added here, it has to be stripped out and the master re-delivered clean.
master_deliveredOne touchpoint, and it is the one that has to happen anyway before a lesson goes further. There is deliberately no draft-approval round beforehand — the editor's signed checklist replaces it, which is why that checklist is as long as it is.
Accept → the lesson is picture-locked and everything downstream begins.
Reject → timecoded notes go back to the editor. Two rounds are included in
the flat rate; the app counts them so nobody has to remember.
FM-0042__bridal-bouquet-mechanics__clean-master.mp4
Never render from a render
Each render job takes the overlay-free master, one audio track, and one set of on-screen text — and burns in exactly one language. English is simply the first language, not the parent of the rest.
The earlier plan built each language on top of the finished English video.
That cannot work: the English render already has English text burned into the picture, and no amount of layering puts Spanish cleanly on top of it. Deriving every language from the overlay-free master means each render burns in exactly one set of overlays — its own.
Three things follow. Adding a language later is one new render job — nothing upstream re-runs. Every render is independent, so a failed Spanish job has no effect on French. And dubbing bends audio to fit the locked picture, never the reverse.
The master is now a single point of failure for the entire catalogue.
If the master is wrong, every language is wrong. That is exactly why the editor adds nothing to it, and why the one review gate at Stage 3 must not be waved through.
Where any lesson sits, at any moment. Everything up to ready_for_production exists
today; the four after it are what gets built for the editor stage.
master_delivered → revision_requested → in_editing
Any new status here would have been silently erased.
The app recalculates a lesson's status every time it re-checks the files in Drive, and it currently protects only one value. An editor could be three hours into a lesson and have it reset to “not started” — their claim gone, the lesson back in the queue, and no error message anywhere.
This is the first thing that gets fixed, before anything else is built.
Three files per lesson, back into the same Drive folder, named to sort beside their sources.
| File | Specification | Why |
|---|---|---|
| …__clean-master.mp4 | H.264, source resolution, high bitrate. Roughly 2–4 GB per hour. | Re-encoded on every language render anyway, so mastering-codec quality is thrown away — while a 60–100 GB file would be a multi-hour upload from a remote connection, every lesson. |
| …__english-clean-audio.wav | 48 kHz / 24-bit. Exactly the same length as the master. | Used for timing downstream. A one-frame difference is a defect, and it is invisible to the eye. |
| …__project.drp | DaVinci project file. Not a .dra archive. |
An archive bundles every source file — 100+ GB duplicating footage already sitting in Drive. |
Edit one real lesson personally, following the written procedure exactly.
Not to become an editor — to find out how long a lesson actually takes, which written steps turn out to be ambiguous when a real person performs them, and how good the automatic camera-switching really is on this specific footage.
At five to seven lessons a week, a guess that is an hour out costs a working day every week for as long as the arrangement lasts. That number is the most valuable unknown left in the project, and a fixed price cannot honestly be set without it.
Three things are true of this diagram, and they carry most of the meaning. Colour is who owns it, not what it does — every crossing between owners is a place a lesson can sit for three days. A solid arrow is built; a dashed arrow is not. And the thick amber boxes are the gates — picture lock, and the master itself.
flowchart TD
subgraph S0["STAGE 0 · CAPTURE — on site · the creator"]
direction TB
A1["Lesson is filmed<br/>3 cameras rolling"]
A2["Front View · Side View · Overhead<br/>+ dedicated audio recorder"]
A3["Pauses and restarts split each angle<br/>into segments -1, -2, ..."]
A1 --> A2 --> A3
end
A3 --> B1
subgraph S1["STAGE 1 · ORGANIZE — recording-organizer web app · ✅ BUILT AND LIVE"]
direction TB
B1["Files land in Google Drive"]
B2["Episode created<br/>gets code FM-0042 + its own Drive folder"]
B3["Each file previewed and tagged<br/>with its camera role"]
B4["Renamed to canonical names<br/>FM-0042__title__front-view.mp4"]
B5{"All 3 angles present<br/>AND audio present?"}
B6["STATUS: ready_for_production<br/>episode enters the editor queue"]
B1 --> B2 --> B3 --> B4 --> B5
B5 -->|"yes"| B6
B5 -->|"no — missing audio · VE-9 gate"| B7["Held back<br/>cannot be claimed"]
end
B6 --> C1
subgraph S2["STAGE 2 · EDIT — the hired VA in DaVinci Resolve Studio · 🔨 BEING SCOPED"]
direction TB
C1["VA claims the episode in the app<br/>STATUS: in_editing"]
C2["Assemble · sync · multicam · SmartSwitch"]
C3["Correct the switching · trim · scrub speech<br/>clean audio · match colour"]
C4["Self-QC against the written checklist"]
C5["PICTURE LOCK — no more cuts"]
C6["ONE master render<br/>on the VA's own machine"]
C7["Deliver 3 files to Drive<br/>STATUS: master_delivered"]
C1 --> C2 --> C3 --> C4 --> C5 --> C6 --> C7
end
C7 --> D1
subgraph S3["STAGE 3 · THE GATE — Abel · the only human review"]
D1{"Abel spot-checks<br/>the master"}
end
D1 -->|"reject — timecoded notes<br/>STATUS: revision_requested<br/>2 rounds included"| C2
D1 -->|"accept<br/>STATUS: picture_locked"| M
M["🎬 THE CLEAN MASTER<br/>the single video source for<br/>every language, forever<br/>⛔ never render from a render"]
M --> E1
M -.-> G1
M -.-> R_EN
M -.-> R_ES
M -.-> R_XX
subgraph S4["STAGE 4 · LANGUAGE PREP — 📋 OUT OF SCOPE · sketch only"]
direction TB
E1["Write the English overlay<br/>and caption text — the source"]
G1["Per language: translate the<br/>overlay + caption text"]
G2["Translate script ·<br/>render AI dubbed audio"]
G3["Dubbing timeline edits<br/>trims · speed-ups · slow-downs<br/>⚠️ audio bends to the locked picture,<br/>never the reverse"]
E1 -.-> G1 -.-> G2 -.-> G3
end
E1 -.-> SAN
G3 -.-> SAN
subgraph S5["STAGE 5 · RENDER — one job per language · 📋 OUT OF SCOPE"]
direction TB
SAN["Prerender sanitation layer"]
R_EN["🇬🇧 OpenShot on Fargate<br/>master + English audio<br/>+ English overlays"]
R_ES["🇪🇸 OpenShot on Fargate<br/>master + Spanish audio<br/>+ Spanish overlays"]
R_XX["🌐 OpenShot on Fargate<br/>master + N audio<br/>+ N overlays"]
OUT["S3 destination bucket<br/>one finished video per language"]
SAN -.-> R_EN
SAN -.-> R_ES
SAN -.-> R_XX
R_EN -.-> OUT
R_ES -.-> OUT
R_XX -.-> OUT
end
classDef creator fill:#f4e4d4,stroke:#b5814a,stroke-width:2px,color:#3d2b17
classDef system fill:#d9e8f5,stroke:#3f7fb5,stroke-width:2px,color:#12293d
classDef editor fill:#e2dcf0,stroke:#7259b5,stroke-width:2px,color:#241a3d
classDef abel fill:#f7d9d9,stroke:#c25454,stroke-width:2px,color:#3d1414
classDef aws fill:#dfeee0,stroke:#4e9159,stroke-width:2px,color:#15301a
classDef gate fill:#fdf0c8,stroke:#c79a1e,stroke-width:4px,color:#3d3010
classDef held fill:#eeeeee,stroke:#999999,stroke-width:2px,color:#333333
classDef master fill:#fdf0c8,stroke:#c79a1e,stroke-width:5px,color:#3d3010
class A1,A2,A3 creator
class B1,B2,B3,B4,B5,B6 system
class B7 held
class C1,C2,C3,C4,C6,C7 editor
class C5,D1 gate
class M master
class E1,G1,G2,G3 abel
class SAN,R_EN,R_ES,R_XX,OUT aws
This block is Mermaid source. It draws as a diagram on the published page; opened as a local
file it stays as text, because rendering it needs the Mermaid library and this page loads no
external scripts on purpose. To see it drawn while editing locally, paste it into the
PIPELINE-DIAGRAM.md preview in your editor.
B5 is the software asking “do I have all four files?” and D1 is Abel
asking “is this good enough to lock?” Everything else is either a creator recording or an
editor executing a written procedure. That is the whole argument for why this job is hireable
at a flat rate: there is one place where taste is required, and Abel keeps it.
D1 back to C2 — assemble and sync, not the render. A rejection means
real editing work is redone, which is exactly why free rounds are capped at two. Note also
that there is no loop anywhere in Stages 4 and 5: once past the gate, nothing comes back.
B7 is new, and it fixes a real bug
Today the organizer marks a lesson ready when three camera angles are present. It does
not check for audio — but the dedicated recording is the authoritative voice track. So today
the app would cheerfully hand the editor a lesson with no usable sound. B5's audio
branch closes that.
Every stage converges on M, the clean master, and every language radiates from it.
The earlier sketch was a chain — each language built on the finished English video —
which could not work, because that video already has English text burned into the picture.
The cost of the fan-out is that M is now a single point of failure for the whole
catalogue.
This diagram is duplicated from PIPELINE-DIAGRAM.md in the same folder.
If you change one, change the other. That doc also carries Diagram 2 (the editor's nineteen steps) and Diagram 3 (the status ladder as a state machine), along with the node and edge colour reference used across all three.