Examples
Three end-to-end walkthroughs — brief in, rendered sequence out. Each traces the full pipeline: brief authoring, scene generation, sequence planning, and evaluation scoring.
Product Launch (30s)
A SaaS analytics dashboard launch using the product-launch template. Confident energy, prestige style, 30-second target.
Brief
{
"brief_id": "brief_launch_v1",
"template": "product-launch",
"project": {
"title": "Meridian Analytics",
"description": "30-second product launch for our real-time analytics dashboard. Hero the UI, show key features, close with brand.",
"duration_target_s": 30
},
"tone": {
"mood": "confident",
"energy": "medium",
"audience": "product managers and data teams"
},
"content": {
"headline": "See Everything. Miss Nothing.",
"sections": [
{
"label": "Hero",
"text": "Introducing Meridian Analytics",
"assets": ["hero-dash"],
"emphasis": "strong"
},
{
"label": "Features",
"text": "Real-time dashboards. Custom funnels. Team alerts.",
"assets": ["ui-funnels", "ui-alerts"]
},
{
"label": "Social Proof",
"text": "Trusted by 2,400+ teams worldwide",
"emphasis": "normal"
},
{
"label": "CTA",
"text": "Start your free trial",
"assets": ["logo-meridian"]
}
]
},
"assets": [
{ "id": "hero-dash", "path": "assets/hero-dashboard.png", "type": "image", "hint": "product UI hero shot", "role": "hero" },
{ "id": "ui-funnels", "path": "assets/screen-funnels.png", "type": "image" },
{ "id": "ui-alerts", "path": "assets/screen-alerts.png", "type": "image" },
{ "id": "logo-meridian", "path": "assets/logo-meridian.svg", "type": "svg", "hint": "company logo" }
],
"constraints": {
"must_include": ["hero-dash", "logo-meridian"]
}
}
Style resolution
No explicit style set. The pipeline resolves it:
- No
project.stylefield — skip - Template
product-launchdefault — prestige - Confirmed:
tone.energy: "medium"aligns with prestige
Style pack: prestige (editorial personality). Longer holds, selective crossfades, push_in/drift camera.
Generated scenes
generate_scenes runs the 8-stage pipeline and produces 5 scenes:
[
{
"scene_id": "sc_opening_001",
"metadata": {
"content_type": "typography",
"intent_tags": ["opening"],
"visual_weight": "heavy",
"motion_energy": "subtle"
},
"layers": [
{ "id": "bg", "type": "html", "content": { "background": "#0a0a0a" } },
{ "id": "fg", "type": "text", "content": { "text": "See Everything. Miss Nothing.", "animation": "word-reveal" } }
]
},
{
"scene_id": "sc_hero_002",
"metadata": {
"content_type": "product_shot",
"intent_tags": ["hero"],
"visual_weight": "heavy",
"motion_energy": "moderate"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "hero-dash" },
{ "id": "content", "type": "text", "content": { "text": "Introducing Meridian Analytics" } }
]
},
{
"scene_id": "sc_features_003",
"metadata": {
"content_type": "ui_screenshot",
"intent_tags": ["detail"],
"visual_weight": "medium",
"motion_energy": "moderate"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "ui-funnels" },
{ "id": "content", "type": "text", "content": { "text": "Real-time dashboards. Custom funnels. Team alerts." } }
]
},
{
"scene_id": "sc_proof_004",
"metadata": {
"content_type": "typography",
"intent_tags": ["emotional"],
"visual_weight": "light",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "fg", "type": "text", "content": { "text": "Trusted by 2,400+ teams worldwide", "animation": "scale-cascade" } }
]
},
{
"scene_id": "sc_cta_005",
"metadata": {
"content_type": "brand_mark",
"intent_tags": ["closing"],
"visual_weight": "medium",
"motion_energy": "subtle"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "center", "type": "image", "asset_ref": "logo-meridian" },
{ "id": "text", "type": "text", "content": { "text": "Start your free trial" } }
]
}
]
What the pipeline did:
- Stage 2: Classified
hero-dashasproduct_shot(hint: "product UI hero shot"),ui-funnelsandui-alertsasui_screenshot(filename convention),logo-meridianasbrand_mark(hint: "company logo") - Stage 3: Loaded the
product-launchtemplate — Hero + Features + optional Social Proof + CTA - Stage 5: Allocated durations weighted by emphasis — the
strongHero section gets 1.5x weight - Stage 6: "Social Proof" label mapped to
emotionalintent.must_includeassets force-placed into matching scenes
Sequence manifest
plan_sequence with style prestige produces:
| # | Scene | Duration | Transition | Camera |
|---|---|---|---|---|
| 1 | sc_opening_001 | 3.0s | none | static |
| 2 | sc_hero_002 | 3.0s | crossfade 400ms | push_in 0.2 |
| 3 | sc_features_003 | 3.0s | hard cut | drift 0.2 |
| 4 | sc_proof_004 | 3.5s | crossfade 400ms | static |
| 5 | sc_cta_005 | 3.0s | hard cut | static |
Total: 15.5s (within the prestige range for 5 scenes at this energy level).
Planner decisions:
- Opening and hero placed first by intent bucketing
sc_proof_004(emotional intent) triggers crossfade 400ms per prestige'son_intentrulesc_features_003getsdrift 0.2because prestige mapsui_screenshotto drift camerasc_hero_002getspush_in 0.2because prestige mapsproduct_shotto push_insc_proof_004andsc_cta_005are typography/brand_mark — no camera rule matches, stays static
Evaluation
{
"score": 86,
"dimensions": {
"pacing": { "score": 90, "findings": [] },
"variety": { "score": 78, "findings": [
{ "severity": "info", "message": "2 consecutive 'heavy' visual weight scenes (opening, hero)" }
]},
"flow": { "score": 88, "findings": [] },
"adherence": { "score": 88, "findings": [] }
}
}
Variety takes a minor hit from the opening-to-hero weight run. Everything else scores well — pacing matches prestige hold durations, flow has correct intent progression (opening first, closing last), and all transitions/camera overrides match the style pack rules.
The evaluation engine re-derives expected transitions independently from the planner. An 88 on adherence means the planner followed the style pack rules correctly.
Tutorial Walkthrough (20s)
An onboarding tutorial using the tutorial template. Clean, educational, no visual embellishment.
Brief
{
"brief_id": "brief_tutorial_v1",
"template": "tutorial",
"project": {
"title": "Getting Started with Canvas",
"description": "20-second onboarding walkthrough showing the 3-step setup flow.",
"duration_target_s": 20,
"style": "minimal"
},
"tone": {
"mood": "clear",
"energy": "low",
"audience": "new users"
},
"content": {
"headline": "Set up in 3 steps",
"sections": [
{
"label": "Intro",
"text": "Getting Started with Canvas"
},
{
"label": "Step 1",
"text": "Create your workspace",
"assets": ["ui-step1"]
},
{
"label": "Step 2",
"text": "Import your design tokens",
"assets": ["ui-step2"],
"emphasis": "strong"
},
{
"label": "Step 3",
"text": "Invite your team",
"assets": ["ui-step3"]
},
{
"label": "CTA",
"text": "You're all set"
}
]
},
"assets": [
{ "id": "ui-step1", "path": "assets/screen-workspace.png", "type": "image" },
{ "id": "ui-step2", "path": "assets/screen-tokens.png", "type": "image" },
{ "id": "ui-step3", "path": "assets/screen-invite.png", "type": "image" }
]
}
Style resolution
Explicit: project.style: "minimal". No inference needed.
Style pack: minimal (neutral-light personality). Uniform holds, hard cuts only, all cameras static.
Generated scenes
[
{
"scene_id": "sc_intro_001",
"metadata": {
"content_type": "typography",
"intent_tags": ["opening"],
"visual_weight": "medium",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "fg", "type": "text", "content": { "text": "Set up in 3 steps", "animation": "word-reveal" } }
]
},
{
"scene_id": "sc_step1_002",
"metadata": {
"content_type": "ui_screenshot",
"intent_tags": ["detail", "informational"],
"visual_weight": "medium",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "ui-step1" },
{ "id": "content", "type": "text", "content": { "text": "Create your workspace" } }
]
},
{
"scene_id": "sc_step2_003",
"metadata": {
"content_type": "ui_screenshot",
"intent_tags": ["detail", "informational"],
"visual_weight": "heavy",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "ui-step2" },
{ "id": "content", "type": "text", "content": { "text": "Import your design tokens" } }
]
},
{
"scene_id": "sc_step3_004",
"metadata": {
"content_type": "ui_screenshot",
"intent_tags": ["detail", "informational"],
"visual_weight": "medium",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "ui-step3" },
{ "id": "content", "type": "text", "content": { "text": "Invite your team" } }
]
},
{
"scene_id": "sc_closing_005",
"metadata": {
"content_type": "typography",
"intent_tags": ["closing"],
"visual_weight": "light",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "fg", "type": "text", "content": { "text": "You're all set", "animation": "scale-cascade" } }
]
}
]
What the pipeline did:
- All three step screenshots classified as
ui_screenshotby filename convention (screen-*) - Step 2 gets
visual_weight: "heavy"becauseemphasis: "strong"was set — the generator promotes weight for emphasized sections - "Step 1/2/3" labels mapped to
detail+informationalintents - No hero assets, no emotional sections — the tutorial template keeps things flat and sequential
- All
motion_energyisstatic— neutral-light personality uses spotlight and cursor attention primitives instead of kinetic movement
The neutral-light personality uses attention primitives like spotlight and cursor to draw focus without motion. These are resolved at compile time, not during scene generation.
Sequence manifest
plan_sequence with style minimal:
| # | Scene | Duration | Transition | Camera |
|---|---|---|---|---|
| 1 | sc_intro_001 | 4.0s | none | static |
| 2 | sc_step1_002 | 4.0s | hard cut | static |
| 3 | sc_step2_003 | 4.0s | hard cut | static |
| 4 | sc_step3_004 | 4.0s | hard cut | static |
| 5 | sc_closing_005 | 4.0s | hard cut | static |
Total: 20.0s — matches the duration target exactly.
Planner decisions:
- Minimal style uses uniform durations:
hold_durations.static = 4.0s - Hard cuts only — minimal has no crossfade or whip-wipe rules
- All cameras forced static by
force_staticcamera rule - Variety post-processing: opening/closing stay at edges; the three middle
ui_screenshotscenes are consecutive (same content type), but the variety rule cannot swap because all three are the same type — this is expected for tutorials
Evaluation
{
"score": 82,
"dimensions": {
"pacing": { "score": 95, "findings": [] },
"variety": { "score": 58, "findings": [
{ "severity": "warning", "message": "3 consecutive 'ui_screenshot' content type scenes" },
{ "severity": "info", "message": "All scenes have 'static' motion energy" }
]},
"flow": { "score": 85, "findings": [] },
"adherence": { "score": 92, "findings": [] }
}
}
Variety scores lower — three consecutive ui_screenshot scenes and uniform static energy. This is inherent to tutorials and not a problem. Pacing and adherence score high because the minimal style pack is being followed precisely.
Low variety scores on tutorials are expected. The tutorial template intentionally produces sequential, same-type scenes. If variety matters more than clarity, use the product-launch template instead.
Brand Story (45s)
A brand narrative using the brand-story template. Emotional, cinematic, slow build.
Brief
{
"brief_id": "brief_brand_v1",
"template": "brand-story",
"project": {
"title": "The Story of Atelier",
"description": "45-second brand narrative. Slow emotional build from origin story through craft to vision.",
"duration_target_s": 45,
"style": "intimate"
},
"tone": {
"mood": "warm",
"energy": "low",
"audience": "design-conscious consumers"
},
"content": {
"headline": "Made by Hand. Meant to Last.",
"sections": [
{
"label": "Opening",
"text": "Every piece begins with a question",
"emphasis": "strong"
},
{
"label": "Origin",
"text": "Founded in a Brooklyn studio, 2019",
"assets": ["photo-studio"]
},
{
"label": "Craft",
"text": "Slow-made leather goods for everyday carry",
"assets": ["photo-hands", "photo-detail"]
},
{
"label": "Testimonial",
"text": "\"The only bag I'll ever need.\" — Sarah K.",
"emphasis": "strong"
},
{
"label": "Team",
"text": "A team of 12 makers in Gowanus",
"assets": ["photo-team"]
},
{
"label": "Vision",
"text": "Objects that outlive trends",
"assets": ["photo-product"],
"emphasis": "strong"
},
{
"label": "CTA",
"text": "Explore the collection",
"assets": ["logo-atelier"]
}
]
},
"assets": [
{ "id": "photo-studio", "path": "assets/studio-wide.jpg", "type": "image", "hint": "wide shot of the studio space" },
{ "id": "photo-hands", "path": "assets/hands-stitching.jpg", "type": "image", "hint": "close-up of hands stitching leather" },
{ "id": "photo-detail", "path": "assets/detail-buckle.jpg", "type": "image", "hint": "detail shot of brass buckle" },
{ "id": "photo-team", "path": "assets/team-portrait.jpg", "type": "image", "hint": "team group portrait" },
{ "id": "photo-product", "path": "assets/product-bag.jpg", "type": "image", "hint": "hero product shot" },
{ "id": "logo-atelier", "path": "assets/logo-atelier.svg", "type": "svg", "hint": "brand wordmark" }
],
"constraints": {
"must_include": ["photo-studio", "photo-product", "logo-atelier"],
"brand_colors": ["#2C2418", "#D4C5A9", "#8B7355"]
}
}
Style resolution
Explicit: project.style: "intimate".
Style pack: intimate (cinematic-dark personality). Longer holds (3.0-4.0s), crossfade 500ms default, 800ms crossfade for emotional scenes, push_in for portraits and product shots, drift for detail.
Generated scenes
[
{
"scene_id": "sc_opening_001",
"metadata": {
"content_type": "typography",
"intent_tags": ["opening", "hero"],
"visual_weight": "heavy",
"motion_energy": "subtle"
},
"layers": [
{ "id": "bg", "type": "html", "content": { "background": "#2C2418" } },
{ "id": "fg", "type": "text", "content": { "text": "Made by Hand. Meant to Last.", "animation": "word-reveal" } }
]
},
{
"scene_id": "sc_origin_002",
"metadata": {
"content_type": "product_shot",
"intent_tags": ["detail"],
"visual_weight": "medium",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "photo-studio" },
{ "id": "content", "type": "text", "content": { "text": "Founded in a Brooklyn studio, 2019" } }
]
},
{
"scene_id": "sc_craft_003",
"metadata": {
"content_type": "collage",
"intent_tags": ["detail"],
"visual_weight": "medium",
"motion_energy": "subtle"
},
"layers": [
{ "id": "cell-1", "type": "image", "asset_ref": "photo-hands" },
{ "id": "cell-2", "type": "image", "asset_ref": "photo-detail" },
{ "id": "content", "type": "text", "content": { "text": "Slow-made leather goods for everyday carry" } }
]
},
{
"scene_id": "sc_testimonial_004",
"metadata": {
"content_type": "typography",
"intent_tags": ["emotional"],
"visual_weight": "heavy",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "fg", "type": "text", "content": { "text": "\"The only bag I'll ever need.\" — Sarah K.", "animation": "scale-cascade" } }
]
},
{
"scene_id": "sc_team_005",
"metadata": {
"content_type": "portrait",
"intent_tags": ["detail"],
"visual_weight": "medium",
"motion_energy": "static"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "left", "type": "image", "asset_ref": "photo-team" },
{ "id": "right", "type": "text", "content": { "text": "A team of 12 makers in Gowanus" } }
]
},
{
"scene_id": "sc_vision_006",
"metadata": {
"content_type": "product_shot",
"intent_tags": ["emotional", "hero"],
"visual_weight": "heavy",
"motion_energy": "moderate"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "device", "type": "image", "asset_ref": "photo-product" },
{ "id": "content", "type": "text", "content": { "text": "Objects that outlive trends" } }
]
},
{
"scene_id": "sc_cta_007",
"metadata": {
"content_type": "brand_mark",
"intent_tags": ["closing"],
"visual_weight": "light",
"motion_energy": "subtle"
},
"layers": [
{ "id": "bg", "type": "html" },
{ "id": "center", "type": "image", "asset_ref": "logo-atelier" },
{ "id": "text", "type": "text", "content": { "text": "Explore the collection" } }
]
}
]
What the pipeline did:
- Stage 2:
photo-studioclassified asproduct_shot(hint: "wide shot"),photo-handsandphoto-detailgrouped into acollagefor the craft section (2 images, same section),photo-teamasportrait(hint: "team group portrait"),photo-productasproduct_shot(hint: "hero product shot") - Stage 6: "Testimonial" label mapped to
emotionalintent. "Vision" section gets bothemotionalandherobecause ofstrongemphasis on a late-stage section with a hero-hinted asset - Stage 6: Emotional scenes (testimonial, vision) distributed to positions 4 and 6 — even intervals through the sequence, avoiding clustering
- Stage 6:
brand_colorsfrom constraints used for the opening scene background (#2C2418)
Sequence manifest
plan_sequence with style intimate:
| # | Scene | Duration | Transition | Camera |
|---|---|---|---|---|
| 1 | sc_opening_001 | 3.5s | none | static |
| 2 | sc_origin_002 | 4.0s | crossfade 500ms | push_in 0.15 |
| 3 | sc_craft_003 | 3.5s | crossfade 500ms | drift 0.15 |
| 4 | sc_testimonial_004 | 4.0s | crossfade 800ms | static |
| 5 | sc_team_005 | 4.0s | crossfade 500ms | push_in 0.15 |
| 6 | sc_vision_006 | 3.0s | crossfade 800ms | push_in 0.15 |
| 7 | sc_cta_007 | 3.5s | crossfade 500ms | static |
Total: 25.5s (intimate holds are longer; the planner distributes the budget across 7 scenes).
Planner decisions:
- Crossfade 500ms is the intimate default — used between most scenes
sc_testimonial_004andsc_vision_006get crossfade 800ms because ofemotionalintent (intimate'son_intentrule)sc_origin_002andsc_vision_006get push_in 0.15 — intimate mapsproduct_shotto push_insc_team_005gets push_in 0.15 — intimate mapsportraitto push_insc_craft_003gets drift 0.15 — intimate mapsdetailintent to drift camera- Typography and brand_mark scenes stay static — no camera rule matches
- Emotional scenes land at positions 4 and 6 (57% and 86% through the sequence), creating the slow build the brand-story template intends
Evaluation
{
"score": 91,
"dimensions": {
"pacing": { "score": 88, "findings": [] },
"variety": { "score": 90, "findings": [] },
"flow": { "score": 95, "findings": [
{ "severity": "info", "message": "Emotional scenes distributed at 57% and 86% — strong narrative arc" }
]},
"adherence": { "score": 92, "findings": [] }
}
}
High scores across all dimensions. The brand-story template naturally produces content type variety (typography, product_shot, collage, portrait, brand_mark), the emotional scenes create a strong narrative arc, and all intimate style rules are followed precisely.
The 91 overall score is typical for brand-story briefs — the template's built-in variety and emotional distribution align well with the evaluation engine's scoring criteria.
Try it yourself
Copy any of these briefs and ask your AI to run them through the full pipeline:
Generate scenes from this brief, then plan the sequence with the prestige style, and evaluate the result. Show me the full output at each stage.
Take the tutorial example but switch it to the energy style. How does the sequence change?
Generate a brand-story brief for my company. I have 4 product photos and a logo. Target 30 seconds with the dramatic style.