Page 1 of 16
System Requirements Document for pria-wanita-zombie
1. Introduction
pria-wanita-zombie is a script-to-video generation product for a single filmmaker-operator. It turns a written cinematic script and shot-by-shot scene breakdown into a rendered video clip, using the Seedance 2.5 model, at a fixed 5-second duration, 9:16 aspect ratio, and 1080p resolution.
The product's intent is to preserve the authored cinematic language of the source script through generation: a consistent live-action, photorealistic style; cold desaturated color for horror scenes; warm golden-hour tones for flashback scenes; and character consistency achieved by referencing each character's own character sheet rather than re-describing them verbally. The audience is a creator who arrives with a shot list already written — a 10-second horror confrontation beat and a 7-second golden-hour match-cut flashback — and needs that written scene breakdown rendered into a video output matching the requested parameters.
Page 2 of 16
2. System Overview
The current product is a three-surface, custom-UI web application with a backend generation integration:
- Landing — an anonymous public entry surface that explains the product turns cinematic scripts into generated videos for creators and routes to video creation.
- Video Generator — accepts the cinematic script and scene breakdown and manages generation under the required duration, aspect ratio, resolution, model, style, audio, and character-reference constraints.
- Results — presents the generated video for the creator to view or download.
Actors. The single accepted active human persona is the Video Creator. The Seedance 2.5 model is a non-persona external generation provider owned outside the application; the application owns the request, the constraint set, and the presentation of the returned output.
Accepted behavior. The creator supplies the cinematic script and scene breakdown, the request retains the locked constraints (5s · 9:16 · 1080p · Seedance 2.5), the cinematic style rules (cold desaturated horror / warm golden-hour flashback), the Scene 1 audio rule (no background music, ambient effects only), and character-sheet references; generation runs; the resulting video is available to view or download.
Narrow exclusions. No background music is added to Scene 1. Characters are not re-described verbally in the prompt; they are referenced to their character sheets. No account, role, or permission model is established by the source.
Page 3 of 16
2a. Product Interpretation and Delivery Boundary
The product is delivered as a first-party custom web interface. All three surfaces — Landing, Video Generator, and Results — are application-owned and reachable without an access requirement; the source establishes no identity, sign-in, or permission boundary, and none is inferred. The creator moves from the public entry directly into generation and then to the result.
The application owns the script intake, the locked constraint set, the style and audio rules, the character-sheet reference mechanism, and the presentation of the generated output. The actual video synthesis is owned by the external Seedance 2.5 model; the application submits the request and receives the rendered clip. Nothing in the current scope establishes account management, collaboration, billing, asset libraries, or editing of the rendered output.
The source script describes two scenes — Scene 1 (Konfrontasi, ±10 seconds, 21:9) and Scene 2 (Transisi ke Kilas Balik, ±7 seconds, 21:9) — as the authored cinematic material. The generation request itself is fixed at 5 seconds, 9:16, 1080p on Seedance 2.5. Both facts are preserved: the scene breakdown is authored content supplied to generation, and the output parameters are the locked generation constraints.
Page 4 of 16
2b. Source Content Inventory
The authoritative source supplies the following cinematic content, preserved in full as the script and scene breakdown the creator provides to generation.
Global cinematic style (applies across the whole video):
- Live-action, photorealistic.
- Cold color with desaturation for horror scenes.
- Warm color with golden-hour nuance for flashback scenes.
- Every character who appears is always referenced to their respective character sheet (not re-described verbally) so that faces and clothing stay consistent.
Scene 1 — Konfrontasi
- Duration: ±10 seconds | Ratio: 21:9
- Second-by-second progression:
- 0–1 second: Extreme close-up of a man holding a gun while crying, with a destroyed kitchen blurred in the background.
- 1–3 seconds: Over-the-shoulder shot from behind the man, aimed at a zombie woman standing still in the distance.
- 3–4 seconds: Medium shot, the man aims the gun straight forward, tears on his face.
- 4–5 seconds: Extreme close-up, the zombie woman hisses and grins toward the camera.
- 5–6 seconds: Close-up of the man, eyes closed enduring pain, slowly lowering the gun.
- 6–7 seconds: Medium shot from a side angle, the man spreads both arms wide (a gesture of surrender), drops the gun, eyes still closed.
- 7–9 seconds: Tracking shot from a side angle, the zombie woman suddenly runs and lunges at the man with both arms outstretched, then collides with him; the camera stays in the side angle throughout the impact.
- 9–10 seconds: Close-up from a side angle, exactly as their bodies collide, the man's surrender gesture absorbs the impact, dust scattering into the air.
- Audio: No background music; only ambient sound — stone and debris being stepped on, wind from the broken window, the man's breathing and sobs, footsteps and every impact, and the woman's hiss as she runs.
Scene 2 — Transisi ke Kilas Balik
- Duration: ±7 seconds | Ratio: 21:9
- Second-by-second progression:
- 0–2 seconds: Tracking shot from a side angle in a golden meadow lit by the sun; the woman (the version before becoming a zombie) runs joyfully toward the man, who stands waiting with open arms; the framing and her running motion imitate the same angle as the previous scene (horror → romantic match-cut).
- 2–3 seconds: Side angle, the woman runs and embraces the man with the momentum of her run, laughing, then.
Generation request (locked): Create video. Duration 5s. Aspect ratio 9:16. Resolution 1080p. Model Seedance 2.5.
Page 5 of 16
2c. Page Content and Component Coverage
Landing
- Information / state: Anonymous public entry. States the product turns cinematic scripts into generated videos for creators. Presents the product wordmark and the headline concept "SCRIPT → SCENE". No protected state is shown.
- Primary action: Route to video creation (enter the Video Generator).
- Supporting actions: None required by source.
- Domain entities: Product identity; the generated-video concept; the locked constraint set as read-only telemetry (5s · 9:16 · 1080p · Seedance 2.5).
- Component responsibilities:
- Full-bleed dark stage with a faint drifting dust field.
- Oversized flush-left headline "SCRIPT → SCENE" with the arrow glyph in cyan.
- A 9:16 video slab floated off-centre, lit by a 1px cyan stroke, showing a cold-graded horror frame.
- A thin cyan ring gauge around the slab counting 5s.
- Three constraint chips (5s · 9:16 · 1080p) in mono, bottom-left.
- Entry control routing to the Video Generator.
- States:
- Loading: Static composition; no data fetch required for the entry surface.
- Empty: Not applicable — the surface is a fixed public entry.
- Success: Creator reaches the entry control and routes to the Video Generator.
- Error: Not applicable to the static entry; no failure path is source-backed.
- Recovery: Not applicable.
Page 6 of 16
Video Generator
- Information / state: Accepts the cinematic script and scene breakdown. Displays the locked generation constraints as instrument telemetry: 5s · 9:16 · 1080p · Seedance 2.5. Displays the shot-list timing spine for the authored scene breakdown. Displays the active scene grade state (Scene 1 cold desaturated horror / Scene 2 warm golden hour). Displays attached character-sheet references. Shows generation progress and, on completion, routes to Results.
- Primary action: Submit the generation request.
- Supporting actions: Enter/edit the cinematic script and scene breakdown; attach character-sheet references as chips; toggle the cold/hot scene state; scrub the shot-list timing spine to preview the corresponding frame.
- Domain entities: Cinematic script; scene breakdown (Scene 1 Konfrontasi, Scene 2 Transisi ke Kilas Balik); shot timings (0–1s, 1–3s, 3–4s, 4–5s, 5–6s, 6–7s, 7–9s, 9–10s); character sheets (CHAR-01, CHAR-02); locked constraints (5s, 9:16, 1080p, Seedance 2.5); style rules (cold desaturated horror, warm golden-hour flashback); Scene 1 audio rule (no background music; ambient effects only); generation request; generation status.
- Component responsibilities:
- Script and scene-breakdown input area.
- Shot-list timing spine: vertical rail with tick marks and mono timecodes that scroll-scrubs the preview frame.
- Cold/hot scene toggle flipping the UI accent between cyan (Scene 1) and amber (Scene 2) with a 400ms crossfade.
- Character-sheet reference tiles: small glass panels with cyan corner brackets and mono ID labels (CHAR-01 / CHAR-02), attachable as chips into the prompt area.
- Constraint chips rendered as instrument readouts (mono, uppercase, 2px radius, hairline cyan border) forming a locked telemetry strip under the generate action.
- Generate action (primary, amber accent).
- Duration ring gauge counting the 5s duration.
- States:
- Loading: Generation in progress; progress indicated while the request is submitted to Seedance 2.5 and the render is awaited.
- Empty: No script or scene breakdown entered yet; the input area is presented with the locked constraint telemetry visible and the generate action unavailable until a script is provided.
- Success: Generation completes; the creator is routed to Results.
- Error: Generation fails or the provider does not return a usable clip; the failure is surfaced to the creator with the request retained so it can be resubmitted.
- Recovery: The creator can correct the script or references and resubmit the generation request.
Page 7 of 16
Results
- Information / state: Presents the generated video. Shows the output under the locked parameters (5s, 9:16, 1080p, Seedance 2.5). No protected state.
- Primary action: View the generated video.
- Supporting actions: Download the generated video.
- Domain entities: Generated video output; locked output parameters (5s, 9:16, 1080p, Seedance 2.5).
- Component responsibilities:
- 9:16 video viewport with tick marks around it.
- Playback control for viewing the generated video.
- Download control for retrieving the generated video.
- Constraint telemetry strip reflecting the output parameters.
- States:
- Loading: The generated video is being prepared for playback.
- Empty: No generated video is available to present (for example, arriving without a completed generation); the surface indicates no result is available and offers a route back to the Video Generator.
- Success: The generated video plays and can be downloaded.
- Error: The generated video cannot be loaded or played; the failure is surfaced with a route back to the Video Generator.
- Recovery: The creator returns to the Video Generator to resubmit.
Page 8 of 16
3. Functional Requirements
FR-1 — Generate a video from the provided cinematic script using Model Seedance 2.5
As a Video Creator, I should submit my cinematic script and scene breakdown so that the product generates a video using Model Seedance 2.5.
- Provenance: explicit
- Trigger/input: The creator provides the cinematic script and scene breakdown on the Video Generator.
- Observable result: A generation request is submitted to Seedance 2.5 and a rendered video is produced.
- Access state: No access requirement; the Video Generator is reachable without identity.
- Failure/recovery: If generation fails, the failure is surfaced and the request is retained for resubmission.
- Continuation: On success, the creator is routed to Results to view or download the output.
FR-2 — Fixed 5-second output duration
As a Video Creator, I should have the generated video produced at a 5-second duration so that the output matches my locked duration constraint.
- Provenance: explicit
- Trigger/input: The generation request is submitted.
- Observable result: The generated video is 5 seconds long; the duration is shown as locked telemetry (5s).
- Access state: No access requirement.
- Failure/recovery: If the provider returns a clip of the wrong duration, the result is not accepted as matching the constraint and the request can be resubmitted.
- Continuation: The creator proceeds to view or download the 5-second output.
FR-3 — Fixed 9:16 aspect ratio
As a Video Creator, I should have the generated video produced at a 9:16 aspect ratio so that the output matches my locked framing constraint.
- Provenance: explicit
- Trigger/input: The generation request is submitted.
- Observable result: The generated video is 9:16; the ratio is shown as locked telemetry (9:16) and the viewport is a 9:16 frame.
- Access state: No access requirement.
- Failure/recovery: If the output does not match 9:16, it is not accepted as matching the constraint and the request can be resubmitted.
- Continuation: The creator proceeds to view or download the 9:16 output.
FR-4 — Fixed 1080p resolution
As a Video Creator, I should have the generated video produced at 1080p resolution so that the output matches my locked resolution constraint.
- Provenance: explicit
- Trigger/input: The generation request is submitted.
- Observable result: The generated video is 1080p; the resolution is shown as locked telemetry (1080p).
- Access state: No access requirement.
- Failure/recovery: If the output does not match 1080p, it is not accepted as matching the constraint and the request can be resubmitted.
- Continuation: The creator proceeds to view or download the 1080p output.
FR-5 — Model locked to Seedance 2.5
As a Video Creator, I should have generation performed with Model Seedance 2.5 so that the output is produced by the specified model.
- Provenance: explicit
- Trigger/input: The generation request is submitted.
- Observable result: The request is executed with Seedance 2.5; the model is shown as locked telemetry (Seedance 2.5).
- Access state: No access requirement.
- Failure/recovery: If the model is unavailable, the failure is surfaced and the request can be resubmitted.
- Continuation: The creator proceeds to view or download the output produced by Seedance 2.5.
FR-6 — Consistent cinematic style across the whole video
As a Video Creator, I should have a consistent cinematic style maintained throughout the video — live-action, photorealistic, cold desaturated color for horror scenes and warm golden-hour tones for flashback scenes — so that the film's grade stays coherent.
- Provenance: explicit
- Trigger/input: The generation request carries the style rules.
- Observable result: The generated video is live-action and photorealistic, with cold desaturated color in horror scenes and warm golden-hour tones in flashback scenes.
- Access state: No access requirement.
- Failure/recovery: If the style is not maintained, the creator can adjust the script or references and resubmit.
- Continuation: The creator proceeds to view or download the styled output.
FR-7 — Character consistency via character-sheet references
As a Video Creator, I should reference each appearing character to their respective character sheet rather than re-describing them verbally so that faces and clothing stay consistent.
- Provenance: explicit
- Trigger/input: The creator attaches character-sheet references (CHAR-01, CHAR-02) as chips into the prompt area on the Video Generator.
- Observable result: The generation request carries the character-sheet references, and the generated video keeps faces and clothing consistent across appearances.
- Access state: No access requirement.
- Failure/recovery: If consistency is not achieved, the creator can re-attach or correct the character-sheet references and resubmit.
- Continuation: The creator proceeds to view or download the output with consistent characters.
FR-8 — Scene 1 (Konfrontasi) authored breakdown
As a Video Creator, I should supply the Scene 1 (Konfrontasi) breakdown — approximately 10 seconds, 21:9 ratio, with the specified second-by-second shot progression — so that the horror confrontation is rendered as authored.
- Provenance: explicit
- Trigger/input: The creator enters the Scene 1 breakdown on the Video Generator: 0–1s extreme close-up of the crying man holding a gun with the destroyed kitchen blurred behind; 1–3s over-the-shoulder shot from behind the man toward the zombie woman standing still in the distance; 3–4s medium shot of the man aiming the gun straight forward with tears on his face; 4–5s extreme close-up of the zombie woman hissing and grinning toward the camera; 5–6s close-up of the man with eyes closed enduring pain, slowly lowering the gun; 6–7s medium side-angle shot of the man spreading both arms wide in surrender, dropping the gun, eyes still closed; 7–9s side-angle tracking shot of the zombie woman suddenly running and lunging with both arms outstretched and colliding with him, camera staying in the side angle throughout the impact; 9–10s side-angle close-up at the moment of collision, the surrender gesture absorbing the impact, dust scattering into the air.
- Observable result: The Scene 1 breakdown is captured in the request and reflected in the generated video.
- Access state: No access requirement.
- Failure/recovery: If the breakdown is incomplete or the render does not reflect it, the creator can correct the breakdown and resubmit.
- Continuation: The creator proceeds to view or download the output.
FR-9 — Scene 1 audio rule
As a Video Creator, I should have Scene 1 rendered with no background music and only the specified ambient sounds so that the horror beat keeps its intended sound design.
- Provenance: explicit
- Trigger/input: The generation request carries the Scene 1 audio rule.
- Observable result: Scene 1 has no background music; its audio consists only of ambient sound — stone and debris being stepped on, wind from the broken window, the man's breathing and sobs, footsteps and every impact, and the woman's hiss as she runs.
- Access state: No access requirement.
- Failure/recovery: If background music is present or ambient elements are missing, the creator can correct the request and resubmit.
- Continuation: The creator proceeds to view or download the output.
FR-10 — Scene 2 (Transisi ke Kilas Balik) authored breakdown
As a Video Creator, I should supply the Scene 2 (Transisi ke Kilas Balik) breakdown — approximately 7 seconds, 21:9 ratio, with the specified second-by-second shot progression — so that the golden-hour flashback is rendered as authored.
- Provenance: explicit
- Trigger/input: The creator enters the Scene 2 breakdown on the Video Generator: 0–2s side-angle tracking shot in a golden meadow lit by the sun, the woman (pre-zombie version) running joyfully toward the man who stands waiting with open arms, framing and running motion imitating the same angle as the previous scene; 2–3s side angle, the woman running and embracing the man with the momentum of her run, laughing.
- Observable result: The Scene 2 breakdown is captured in the request and reflected in the generated video.
- Access state: No access requirement.
- Failure/recovery: If the breakdown is incomplete or the render does not reflect it, the creator can correct the breakdown and resubmit.
- Continuation: The creator proceeds to view or download the output.
FR-11 — Match-cut transition from horror to romantic framing
As a Video Creator, I should have Scene 2 use a match-cut transition from horror to romantic framing, mirroring the same angle and running motion as the previous scene, so that the two scenes cut together.
- Provenance: explicit
- Trigger/input: The generation request carries the match-cut instruction linking Scene 2's framing and running motion to Scene 1's angle.
- Observable result: Scene 2 mirrors the same angle and running motion as Scene 1, producing a horror → romantic match-cut.
- Access state: No access requirement.
- Failure/recovery: If the match-cut is not achieved, the creator can adjust the breakdown and resubmit.
- Continuation: The creator proceeds to view or download the output.
FR-12 — Provide the cinematic script and scene breakdown before generation
As a Video Creator, I should provide the cinematic script and scene breakdown before generation so that the request is executable.
- Provenance: required_inference
- Trigger/input: The creator enters the script and scene breakdown on the Video Generator.
- Observable result: The generation request is executable and can be submitted.
- Access state: No access requirement.
- Failure/recovery: If the script is missing, the generate action is unavailable and the creator is prompted to provide it.
- Continuation: The creator submits the generation request.
FR-13 — Retain the locked constraints in the generation request
As a Video Creator, I should have the generation request retain the required five-second duration, 9:16 aspect ratio, 1080p resolution, Seedance 2.5 model, cinematic style, audio, and character-sheet reference constraints so that the output matches my specification.
- Provenance: required_inference
- Trigger/input: The generation request is submitted.
- Observable result: The request carries 5s, 9:16, 1080p, Seedance 2.5, the cinematic style rules, the Scene 1 audio rule, and the character-sheet references.
- Access state: No access requirement.
- Failure/recovery: If any constraint is dropped, the creator can correct the request and resubmit.
- Continuation: The creator proceeds to view or download the output.
FR-14 — Output available for viewing or downloading
As a Video Creator, I should have the generated output available for viewing or downloading after generation so that I can use the rendered clip.
- Provenance: required_inference
- Trigger/input: Generation completes.
- Observable result: The generated video is presented on Results and can be viewed and downloaded.
- Access state: No access requirement.
- Failure/recovery: If the output cannot be loaded or played, the failure is surfaced with a route back to the Video Generator.
- Continuation: The creator views or downloads the clip, or returns to the Video Generator to generate another.
Page 9 of 16
4. User Personas
Page 10 of 16
Video Creator
Product context. The Video Creator is a filmmaker-operator working alone. They arrive with the cinematic material already written: a shot-by-shot horror confrontation (Scene 1 — Konfrontasi, ±10 seconds, 21:9) and a golden-hour match-cut flashback (Scene 2 — Transisi ke Kilas Balik, ±7 seconds, 21:9). They think in shot lists, aspect ratios, and color grades, and they treat the product as a rendering engine for a dark scene rather than a friendly upload form.
Primary goal. Turn the written scene breakdown into a rendered video output that matches the requested parameters — 5 seconds, 9:16, 1080p, Model Seedance 2.5 — while preserving the authored cinematic style and character consistency.
Distinct accepted responsibilities.
- Authoring and supplying the cinematic script and scene breakdown, including the second-by-second shot progression for both scenes.
- Attaching each appearing character's character sheet as a reference (CHAR-01, CHAR-02) instead of re-describing the characters verbally, so faces and clothing stay consistent.
- Holding the locked generation constraints (5s · 9:16 · 1080p · Seedance 2.5) through the request.
- Carrying the style rules (cold desaturated horror / warm golden-hour flashback) and the Scene 1 audio rule (no background music; ambient effects only) into the request.
- Submitting the generation request and, on completion, viewing or downloading the rendered clip.
Relevant inputs or decisions.
- The script text and the two scene breakdowns with their per-second shot descriptions.
- Which character sheets to attach and how they map to the characters appearing in each scene.
- The cold/hot scene state (Scene 1 horror grade vs. Scene 2 golden-hour grade) as they review the shot-list timing spine.
- Whether a returned output satisfies the locked constraints and style, or must be resubmitted.
Interactions with other accepted participants. The Video Creator is the only accepted active human persona. Their work interacts with the external Seedance 2.5 generation provider, which performs the synthesis; the creator does not interact with that provider directly but receives its rendered output through the application.
Observable success. A generated video is produced at 5 seconds, 9:16, 1080p on Seedance 2.5, with a consistent live-action photorealistic style, cold desaturated horror grading in Scene 1 and warm golden-hour grading in Scene 2, a horror → romantic match-cut between the scenes, Scene 1 audio carrying no background music and only the specified ambient sounds, and characters whose faces and clothing stay consistent through their character-sheet references — and that video is available to view and download.
Page 11 of 16
5. Core User Flows
Flow 1 — Generate the cinematic video from the authored script
- The Video Creator arrives at the Landing surface. The dark stage presents the "SCRIPT → SCENE" headline, the 9:16 video slab with its cyan stroke and 5s ring gauge, and the constraint chips (5s · 9:16 · 1080p). No identity is required.
- The creator routes from Landing into the Video Generator.
- On the Video Generator, the creator enters the cinematic script and the scene breakdown. They enter Scene 1 — Konfrontasi (±10 seconds, 21:9) with its second-by-second progression: 0–1s extreme close-up of the crying man holding a gun with the destroyed kitchen blurred behind; 1–3s over-the-shoulder shot toward the zombie woman standing still in the distance; 3–4s medium shot of the man aiming the gun straight forward with tears on his face; 4–5s extreme close-up of the zombie woman hissing and grinning toward the camera; 5–6s close-up of the man with eyes closed, slowly lowering the gun; 6–7s medium side-angle shot of the man spreading both arms wide in surrender, dropping the gun, eyes still closed; 7–9s side-angle tracking shot of the zombie woman suddenly running and lunging with both arms outstretched and colliding with him, camera staying in the side angle throughout the impact; 9–10s side-angle close-up at the moment of collision, the surrender gesture absorbing the impact, dust scattering into the air.
- The creator enters Scene 2 — Transisi ke Kilas Balik (±7 seconds, 21:9): 0–2s side-angle tracking shot in a golden meadow lit by the sun, the woman (pre-zombie version) running joyfully toward the man who stands waiting with open arms, framing and running motion imitating the same angle as the previous scene; 2–3s side angle, the woman running and embracing the man with the momentum of her run, laughing.
- The creator attaches the character-sheet references as chips into the prompt area — CHAR-01 and CHAR-02 — rather than re-describing the characters verbally, so faces and clothing stay consistent. The tiles appear as small glass panels with cyan corner brackets and mono ID labels.
- The creator confirms the style rules are carried: live-action, photorealistic, cold desaturated color for the horror scene and warm golden-hour tones for the flashback scene. They set the scene state so the shot-list timing spine reflects Scene 1's cold grade, and the UI accent sits in cyan.
- The creator confirms the Scene 1 audio rule: no background music, only ambient sound — stone and debris being stepped on, wind from the broken window, the man's breathing and sobs, footsteps and every impact, and the woman's hiss as she runs.
- The creator reviews the locked telemetry strip under the generate action: 5s · 9:16 · 1080p · Seedance 2.5. These are read as instrument readouts, not editable form fields.
- The creator scrubs the shot-list timing spine — the vertical rail with tick marks and mono timecodes (0–1s, 1–3s, 3–4s, 4–5s, 5–6s, 6–7s, 7–9s, 9–10s) — to preview the corresponding frame. Moving down the spine scroll-scrubs the preview frame.
- The creator toggles the cold/hot scene state to review Scene 2. The UI accent crossfades from cyan to amber over 400ms, and the preview crossfades from the cold grade into golden hour.
- The creator submits the generation request via the generate action. The request retains the five-second duration, 9:16 aspect ratio, 1080p resolution, Seedance 2.5 model, cinematic style, audio, and character-sheet reference constraints.
- Generation runs. The Video Generator shows generation in progress while the request is submitted to the external Seedance 2.5 provider and the render is awaited. The duration ring gauge counts the 5s duration.
- On success, the creator is routed to Results. The generated video is presented in the 9:16 viewport with tick marks, under the locked output parameters (5s, 9:16, 1080p, Seedance 2.5).
- The creator views the generated video and downloads it.
- Continuation: The creator can return to the Video Generator to generate another clip.
Flow 2 — Recover from a failed or non-conforming generation
- The Video Creator submits a generation request from the Video Generator as in Flow 1.
- Generation fails, or the provider does not return a usable clip, or the returned output does not match the locked constraints (5s, 9:16, 1080p, Seedance 2.5) or the required style and audio rules.
- The failure is surfaced to the creator on the Video Generator, with the request retained.
- The creator corrects the script, the scene breakdown, or the character-sheet references, and resubmits the generation request.
- On success, the creator is routed to Results and views or downloads the corrected output.
Page 12 of 16
Flow 3 — View or download a generated video
- The Video Creator arrives at Results after a completed generation.
- The generated video is presented in the 9:16 viewport with tick marks, alongside the constraint telemetry strip reflecting the output parameters (5s, 9:16, 1080p, Seedance 2.5).
- The creator plays the video to view it.
- The creator downloads the generated video.
- If the video cannot be loaded or played, the failure is surfaced with a route back to the Video Generator.
- If no generated video is available (for example, arriving without a completed generation), the surface indicates no result is available and offers a route back to the Video Generator.
- Continuation: The creator returns to the Video Generator to generate another clip.
Page 13 of 16
6. Visuals Colors and Theme
Muse: Gleb Kuznetsov. Headline concept: "SCRIPT → SCENE" — a director's monitor for a dark scene, not a friendly upload form.
Mode: Dark mode only. The product lives in a dark control-room register; no light/white-first surfaces.
Color tokens (exact hex by role):
| Role | Token | Value |
|---|
| Background (deep near-black ground) | --bg | #07080C |
| Surface (graphite glass panel, 70–85% opacity) | --surface | #11141C |
| Text (body and headings) | --text | #E8ECF4 |
| Primary (instrument/data colour: shot timings, frame markers, active controls) | --primary | #3FE0D0 |
| Accent (flashback colour and single hot accent: Scene 2 / golden-hour state and primary generate action) | --accent | #FF8A3D |
| Muted (micro-labels only, 12px+, on surfaces; never for reading copy) | --muted | #7A8496 |
- Cyan-teal
#3FE0D0 is the instrument/data colour: shot timings, frame markers, active controls.
- Amber-orange
#FF8A3D is the flashback colour and the single hot accent — used only for the Scene 2 / golden-hour state and the primary generate action.
- Body text
#E8ECF4 on #07080C clears WCAG AA at all sizes; muted #7A8496 only for micro-labels at 12px+ on surfaces, never for reading copy.
- No blue-indigo anywhere. The generic indigo/blue-on-white SaaS template is forbidden for this project.
Typography:
- Headings: Space Grotesk — wide geometric grotesk, uppercase for HUD labels with 0.14em tracking, 300–500 weights for large display, 700 only for the wordmark. Display sizes are huge and clipped tight (line-height 0.92).
- Numeric metadata: Space Mono.
- Body: Space Grotesk.
- Type scale (1.25 modular): display 44px mobile / 72px tablet / 112px desktop; h2 28/40/56; h3 20/24/28; body 15/16/17; micro-label 11px uppercase +0.14em. Numerals and shot timings in Space Mono 12/13/14.
- Forbidden for headings or body: Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, system-ui.
Shape language: Thin luminous strokes (1px, 20–35% opacity cyan) over dark glass panels with 14px radii. Circular and radial motifs for time: ring gauges for the 5s duration, a 9:16 frame mask, tick marks around the video viewport. Sharp 2px radius on data pills and shot chips, rounded on panels — the contrast between instrument precision and glass softness. No blobs, no soft-shadow cards.
Spacing rhythm: 12-column grid, 24px gutters mobile, 40px desktop, max content width 1440px with the hero type allowed to bleed past it.
Imagery style: The product's own output as the only imagery — photorealistic cold-graded horror frames and warm golden-hour flashback frames, plus abstract volumetric dust/particle fields derived from the render (not stock). Character-sheet reference thumbnails shown as small glass tiles with cyan corner brackets. No flat illustration, no clip art, no gradient blobs, no stock photography of people.
Readable text and controls stay whole at every viewport: headlines, wordmarks, labels, numbers, cards' text and controls stay entirely inside the viewport and their container at 375px, 768px and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them. Imagery, decoration and motion may be cropped, bled off an edge, rotated, overlapped or cut as the direction asks, as long as they cover no readable text or control.
Page 14 of 16
7. Signature Design Concept
The public entry — Landing — is a full-bleed near-black stage (#07080C) with a faint drifting dust field. The dominant element is an oversized wordmark-scale headline "SCRIPT → SCENE" set in Space Grotesk 112px desktop / 44px mobile, flush-left, spanning ~9 of 12 columns, in #E8ECF4, with the arrow glyph in cyan #3FE0D0.
Behind and to the right, a 9:16 video slab floats at a slight scale, its edge lit by a 1px cyan stroke, showing a cold-graded horror frame. A thin cyan ring gauge around it counts 5s. Bottom-left, three constraint chips (5s · 9:16 · 1080p) in Space Mono.
The composition is asymmetric, dark, and reads as a director's monitor, not a SaaS hero. There is no centred headline, no subtext paragraph, no blue button, and no gradient blob. The product's own output is the hero image, and the metadata reads as instrument telemetry.
8. Interaction Model & Motion Direction
Interaction Model: Parallax
Motion Tempo: cinematic
Hero Dimensionality: layered_2d
Landing Hero Motion Brief
- Focal subject: The 9:16 video slab floated off-centre on the dark stage, lit by a 1px cyan stroke, showing a cold-graded horror frame, with a thin cyan ring gauge sweeping 0→5s around its corner.
- Input → transformation → outcome thesis: As the creator scrolls the dark stage, the layered parallax drift separates the background dust field (0.2x), the glass panels (0.5x), and the video slab (1x), so the slab advances toward the viewer while the ring gauge ticks the 5s duration and the constraint chips hold their position — the creator's authored scene reads as a live render under instrument telemetry, and the entry control routes them into the Video Generator.
- Motion vocabulary: Slow continuous parallax drift; scroll-scrubbed scene transitions that flip the accent from cyan to amber and crossfade the cold grade into golden hour; type reveals by mask-wipe, 600ms,
cubic-bezier(0.16,1,0.3,1); number counters ticking on the duration ring. Nothing bounces.
- Composed first frame: Full-bleed
#07080C with a faint drifting dust field; "SCRIPT → SCENE" flush-left in #E8ECF4 with the arrow in #3FE0D0; the 9:16 slab off-centre right, cyan-stroked, showing a cold-graded horror frame; the cyan ring gauge at 0s; three mono constraint chips bottom-left.
- Reduced-motion state: All drift and scrub stop; scenes become stacked static panels; counters render final values. The slab, headline, ring gauge, and chips remain whole and readable.
Page 15 of 16
9. Non-Functional Requirements
- NFR-1 — Output duration. The generated video must be 5 seconds. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-2 — Output aspect ratio. The generated video must be 9:16. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-3 — Output resolution. The generated video must be 1080p. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-4 — Generation model. Generation must be performed with Model Seedance 2.5. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-5 — Scene 1 audio. Scene 1 must carry no background music; only ambient sound effects — stone and debris being stepped on, wind from the broken window, the man's breathing and sobs, footsteps and every impact, and the woman's hiss as she runs. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-6 — Character reference method. Characters must be referenced to their respective character sheets rather than described verbally, to keep faces and clothing consistent. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-7 — Style consistency. The video must maintain a consistent cinematic style throughout: live-action, photorealistic, cold desaturated color for horror scenes and warm golden-hour tones for flashback scenes. (Provenance: explicit. Rationale: locked hard constraint in the authoritative source.)
- NFR-8 — Readable text and controls. Headlines, wordmarks, labels, numbers, cards' text and controls must stay entirely inside the viewport and their container at 375px, 768px and 1280px, wrapping or scaling to fit, with no other element covering any part of them. (Provenance: explicit. Rationale: user design constraint.)
- NFR-9 — Reduced motion. Under
prefers-reduced-motion, all drift and scrub stop, scenes become stacked static panels, and counters render final values. (Provenance: explicit. Rationale: creative direction.)
- NFR-10 — Contrast. Body text
#E8ECF4 on #07080C must clear WCAG AA at all sizes; muted #7A8496 is restricted to micro-labels at 12px+ on surfaces and must never be used for reading copy. (Provenance: explicit. Rationale: creative direction.)
10. Tech Stack
- Frontend: React (custom UI, dark-mode control-room register).
- Backend: Python / FastAPI, owning script intake, the locked constraint set, the style and audio rules, the character-sheet reference mechanism, and the generation request lifecycle.
- Generation provider: Model Seedance 2.5 (external, provider-owned synthesis; the application submits the request and receives the rendered clip).
- Storage: Appropriate storage for the submitted script and scene breakdown, attached character-sheet references, and the generated video output.
- Containerization: Docker / docker-compose for local and deployment packaging.
- Orchestration: Kubernetes only if deployment requires it.
Page 16 of 16
11. Assumptions and Constraints
- Assumption (narrow): The creator supplies the cinematic script and scene breakdown as text on the Video Generator before generation; this is required to make the accepted journey executable and adds no adjacent capability.
- Assumption (narrow): The generated output is retained and presented on Results for viewing and downloading after generation completes.
- Constraint (explicit): Video duration must be 5 seconds.
- Constraint (explicit): Aspect ratio must be 9:16.
- Constraint (explicit): Resolution must be 1080p.
- Constraint (explicit): Model must be Seedance 2.5.
- Constraint (explicit): No background music in Scene 1; only ambient sound effects.
- Constraint (explicit): Characters must be referenced to their respective character sheets rather than described verbally.
- Constraint (explicit): The cinematic style must stay consistent throughout the video — live-action, photorealistic, cold desaturated color for horror scenes and warm golden-hour tones for flashback scenes.
- Constraint (explicit): The generic indigo/blue-on-white SaaS template is forbidden for this project; no blue-indigo primaries anywhere.
- Constraint (explicit): Forbidden heading/body fonts: Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, system-ui.
- Constraint (explicit): Readable text and controls stay whole at 375px, 768px and 1280px; imagery, decoration and motion may be cropped, bled, rotated, overlapped or cut as long as they cover no readable text or control.
- Boundary: No account, sign-in, role, or permission model is established by the source; all three surfaces are reachable without an access requirement.
- Boundary: The source script's Scene 1 (±10 seconds, 21:9) and Scene 2 (±7 seconds, 21:9) are authored cinematic material supplied to generation; the generation request itself is locked at 5 seconds, 9:16, 1080p on Seedance 2.5.
12. Glossary
- Seedance 2.5 — The external generation model that performs the video synthesis for the request.
- Scene 1 — Konfrontasi — The horror confrontation scene: ±10 seconds, 21:9, cold desaturated grading, with the specified second-by-second shot progression from the crying man holding a gun through the zombie woman's charge and collision.
- Scene 2 — Transisi ke Kilas Balik — The golden-hour flashback scene: ±7 seconds, 21:9, warm golden-hour grading, with the specified second-by-second shot progression from the meadow tracking shot to the woman running and embracing the man.
- Match-cut — The transition technique linking Scene 2 to Scene 1 by mirroring the same angle and running motion, moving from horror framing to romantic framing.
- Character sheet — The per-character reference (CHAR-01, CHAR-02) attached to the generation request instead of re-describing the character verbally, so faces and clothing stay consistent.
- Shot-list timing spine — The vertical rail on the Video Generator with tick marks and mono timecodes (0–1s, 1–3s, 3–4s, 4–5s, 5–6s, 6–7s, 7–9s, 9–10s) that scroll-scrubs the preview frame.
- Constraint chips — The locked telemetry strip (5s · 9:16 · 1080p · Seedance 2.5) rendered as instrument readouts under the generate action.
- Cold/hot scene toggle — The control that flips the UI accent between cyan
#3FE0D0 (Scene 1, desaturated horror) and amber #FF8A3D (Scene 2, golden hour) with a 400ms crossfade.
- Duration ring gauge — The circular gauge around the video slab that counts the 5s duration.
No comments yet. Be the first!