Implements the 2026-04-02 transformation spec (Phases 1-8) and fixes all critical bugs found during 5-pipeline E2E testing. Governance & Decision Intelligence: - Pipeline-specific stage order in checkpoint (replaces global STAGES list) - Provider scoring engine (lib/scoring.py) with 7-dimension weighted ranking - Decision log artifact enforced at proposal/idea stage across all 10 pipelines - Delivery promise classifier prevents silent motion-to-still downgrades - Structured shot language in scene_plan schema (camera, lens, lighting, DOF) - Variation checker and slideshow risk scorer block samey output before render - Creative intake, capability extension, and creative-intake meta skills - Final self-review artifact with 5 mandatory checks before presenting output - Source media review contract for user-supplied footage Render & Theme System: - Remotion AnimatedBackground now derives colors from playbook (no more hardcoded dark blue fintech gradient on every video) - video_compose builds custom ThemeConfig from playbook YAML colors/fonts — custom playbooks flow through to Remotion automatically - Explainer component wires theme to all child components (charts, cards, etc.) - resolveAsset() handles absolute paths on Windows/Unix via file:// URIs - RENDERER_FAMILY_MAP synced with actual Remotion compositions Critical Bug Fixes: - Windows npx subprocess: run_command() resolves .cmd wrappers via shutil.which() - Silent renderer downgrade: Remotion failure now returns explicit error with options instead of silently falling back to FFmpeg - .env inline comment parsing strips trailing # comments from API keys - concat_path UnboundLocalError in video_compose finally block - audio_mixer and showcase_card capture=True kwarg bug - Selector estimate_cost() calls fixed (_select_tool -> _select_best_tool) - asset_manifest schema expanded with provider, license, subtype fields - screen-demo subtitle_gen moved from required to optional tools - Duration drift detection in post-render final review (>25% warns)
3.0 KiB
Creative Intake
Before the research stage, gather user intent through targeted questions. Do NOT start production on a vague brief.
Required Questions (ask conversationally, not as a survey)
- Purpose: What is this video FOR? (educate, sell, inspire, document, entertain)
- Audience: Who will watch it? (age, expertise, context — "my team" vs "YouTube public")
- Platform: Where will it live? (YouTube, internal Slack, social media, presentation, website)
- Tone: What should it FEEL like? (serious, playful, cinematic, raw, warm, provocative)
- References: Any videos you admire or want this to feel like?
- Outcome: What should the viewer DO or FEEL after watching?
- Constraints: Budget ceiling? Timeline? Must-include content?
How to Ask
Don't dump all 7 questions at once. Start with purpose and audience, then let the conversation flow. Fill in gaps naturally.
If the user gives a detailed brief, skip questions they've already answered.
Identify what the user has already told you. If they said "I want a cinematic brand film for Instagram," you already have purpose (inspire/sell), platform (Instagram), and tone (cinematic). Ask what's missing.
Handling Vague Briefs
When the user says something like "make me a video about X":
- Acknowledge the topic — show you understood.
- Ask the single most important missing question first (usually purpose or audience).
- Based on their answer, ask the next most important gap.
- Stop asking when you have enough to start research. You don't need perfect answers — research will fill in details.
Handling Detailed Briefs
When the user provides a multi-paragraph brief or a document:
- Summarize what you understood (1-2 sentences).
- Call out any gaps: "I have a clear picture of the audience and tone, but I'd love to know — is there a specific outcome you're hoping for?"
- Confirm the platform and constraints if not stated.
Output
Produce an intake_brief (informal, not schema-validated) that the
research stage uses as its starting context. Include:
- Direct quotes from the user where their language reveals intent
- Explicit answers to each of the 7 questions (mark any that were inferred vs stated)
- Any reference videos/images the user mentioned
- Constraints that must be honored (budget, timeline, must-include)
The intake_brief is passed as context to the research-director, not as a formal artifact. It exists to prevent the research stage from inventing intent that the user never expressed.
What NOT To Do
- Do not present a numbered survey. This is a conversation, not a form.
- Do not ask questions the user already answered in their initial message.
- Do not delay production unnecessarily — if the brief is clear, move on.
- Do not invent answers for questions the user didn't address. Mark them as "not specified" and let the research stage handle ambiguity.
- Do not assume the user wants an explainer. Many users want cinematic, animation, or source-led work. Listen for signals.