# Imperium Presentation Pipeline — the complete, current process

> **PORTABILITY NOTE (added 2026-07-27).** This process doc is published from Imperium's
> internal operating system. The METHOD is fully portable: prompts, model choices and
> parameters, CSS/SVG recipes, QA gates, and cost discipline all work anywhere. Paths that
> start with `~/.claude/`, `<repo-root>/`, `presentations/`, `scripts/`, or `memory/` are
> internal conveniences on the author's machine; substitute your own equivalents (any
> headless-browser screenshot loop, any image toolchain). Same for internal distribution
> steps (Google Drive folder IDs, Telegram bots) and `<your-vercel-team>` deploy scopes:
> use your own storage, messaging, and hosting. Working style anchors ship WITH this kit
> in `../cards/`, `../console/`, and `../folder/` — start from those, not from zero.

> Consolidated 2026-07-27 from the shipped systems. Two tracks. Track B is the one with the
> 3D motion graphics between slides (the continuous-world technique that built
> https://aios-v2.imperiumos.ai overnight from one prompt). Every claim here was
> verified on real runs; model IDs and credit prices move, so re-verify live before a new run.

## Track A — Static slides (hybrid AI + code composite)

For single branded slides and PNG decks. Full recipe: `imperium-presentation.md` (this folder).

1. **AI renders atmosphere only** — backgrounds via `nano_banana_2` (AGENTS.md §3 routing table; GPT Image 2 is the edit-endpoint finisher, direct OpenAI API, never through Higgsfield) with the greens-only
   hex string and palette reference. Never let a model render titles, numbers, or logos
   (hallucination rate on stylised text is unacceptable).
2. **Code composites the brand-exact layer** — logo, wordmark (IMPERIUM in Emilio tracked caps),
   headlines, metrics, dividers. PIL or HTML/CSS.
3. Two modes: Dark Premium (deep Racing Green, atmospheric) and Light Minimalism (Paper/Sage
   ground, shapes + numbers, often zero AI spend).
4. Brand: brand-v5 only — greens, Emilio + Switzer, radius 40. The champagne/walnut/Constantia
   palette in older assets is retired.

## Track B — Cinematic deck with generated motion between slides (continuous-world)

The premium track: a web presentation where every slide is a camera position inside ONE
generated world, and every slide change plays a generated camera-move film so the audience
never sees a cut. Deployed as a public Vercel link, presented from a browser.

**This is THE Imperium presentation — the default for anything outward-facing (AGENTS.md
§3 deck tier rule).** The engine SHIPS in this kit as one self-contained file:
`../documents/deck-cinematic.html` (still → frame-locked film → still, crossfade fallback,
skip protection, ambient loop) with a working demo world in `../documents/world/`
(naming convention documented in the file's header) — start there, swap the world, keep
the engine. Full engine dossier: `continuous-world-technique.md`. Fill-and-run prompt:
`continuous-world-mission-template.md`. (A productised intake layer,
`presentation-pack-readme.md`, is an author-machine document and not part of this kit.)

### How the slides are generated

- **Stills**: **GPT Image 2** (direct OpenAI API per the AGENTS.md §3 routing table — the continuous-world engine uses it for chained-reference world stills, its sanctioned generate use), 4k, high, 16:9. Structured prompt every time:
  SUBJECT / COMPOSITION (name the reserved text zone) / LIGHTING / LENS / GRADE / SECTION
  CONTEXT / one locked style-filter paragraph appended verbatim to every prompt.
- **One-world consistency by inheritance**: generate still 01 first (2-3 candidates, pick one),
  then generate every later still WITH a previous still attached as reference image, chained
  scene to scene. One place, one light grade, all slides hold together.
- **Verify the model field on every call** (`response.model === "gpt_image_2"`); silent
  downgrades happen. Mismatch = discard unjudged.

### How the 3D motion transitions are generated (the load-bearing trick)

- **Seedance 2.0** (`seedance_2_0`), 1080p stated explicitly on every call (the default slips
  to 720p), ~5s, with `start_image` = slide N's still and `end_image` = slide N+1's still.
- Prompt = one sentence naming the camera move + "smooth continuous camera move, no cuts,
  no new subjects, cinematic, slow ease-in-out, no sound". The pixel-matched frames do the work.
- The browser engine swaps still N → film → still N+1 at frame boundaries, so the cut is
  invisible. Films play at 1.3x so ~5s feels 3-4s.
- **Ambient cover loop**: same still as BOTH start and end frame + "ambient environmental
  motion only, perfect seamless loop". Seedance holds the seam.
- **Previz on 6+ transitions**: render the full set on `seedance_2_0_mini` first (same frames,
  same prompts), judge motion in the real deck, then re-render finals on `seedance_2_0` 1080p.
- Filter false-positives happen on harmless words ("ignition", "sculpture") and rejected
  attempts still bill; two strikes on one film → Kling 3.0 for that film.

### The app layer

- Next.js + React + framer-motion (pin `framer-motion@^11.18.2` under React 19). Text is ALWAYS
  HTML on top — serif headlines, tracked mono eyebrows, frosted-glass cards — never baked into
  images, so type stays sharp and editable.
- Engine behaviours already solved (copy the reference app, don't rewrite): phase machine,
  missing-film crossfade fallback, skip protection, 12s stall safety, preloading, backward-nav
  crossfade, reduced-motion.
- Real product UI is a live iframe positioned into the still's screen rect — never generated
  fake UI.

### QA + cost reality

- **SSIM seam gate**: machine-check every film's first frame vs still N and last frame vs
  still N+1 (≥0.90 pass, <0.75 regenerate or demote to crossfade) before any visual QA.
- Legibility is the hardest-scored dimension: every word readable at a glance over the
  photography; fix with scrims/glass/negative space, never smaller type.
- Real cost model (verified run): ~12 cr per 4k still, **~70 cr per Seedance 1080p transition**
  (rejects still bill); a full 10-slide deck ran ~969 cr vs ~550 estimated. Double estimates,
  set a hard ceiling, pilot-then-batch, and degrade to crossfades when the ceiling nears.

## Which track when

| Need | Track |
|---|---|
| One branded slide, a PNG deck, stat/pricing slides | A (static hybrid) |
| A presented-from-a-screen deck that feels like one continuous cinematic world | B (continuous-world) |
| A scroll-driven marketing website | neither — different playbook (scroll-scrub) |

## Brand contract for both tracks

Greens only (primary #11462C, one Ember #E23A28 max), Emilio Light display + Switzer body,
radius 40, no em dashes, copy verbatim (no new numbers), never "AI agency", never "Imperium
Growth", no age references. Machine tokens: `../../tokens.json`. Full rules: `../../BRAND-BOOK.md`.
