---
title: "Data → Infographic Video — numbers in, a legible animated chart reel out"
tier: hero
format: short-form-video
theme: b2b | data | finance | analytics | marketing
persona: B2B marketer, analyst, founder, data team, agency
duration: "a metrics table → 20–40s 9:16 (or 16:9) data reel in ~5–10 min"
budget_usd: "$0.40–$2.50 (a few atmospheric b-roll keyframes + ONE hyperframes chart overlay + music)"
caps: ["create_media", "cosmos-3-image", "flux-dev", "hyperframes-render", "ffmpeg-mux", "music", "sonilo-t2m"]
skills: ["hyperframes-overlays", "short-form-video"]
showcases: ["/chapters/data-to-infographic-video-example.html"]
status: "live — plays the legible-text moat where it's strongest. AI video can't render a chart or a number; hyperframes-render does, crisply, over atmospheric b-roll."
reliability: 4.4 # hyperframes chart overlay is deterministic; only the b-roll keyframes touch the model tier
---

# Data → Infographic Video — the format competitors physically can't make

Paste a metrics table — *"Q3 revenue $4.2M (+38% YoY), 1,240 new customers, NPS 67, churn 2.1%"* — and get a
**9:16 (or 16:9) data reel**: atmospheric AI b-roll for the *mood*, and a **pixel-perfect hyperframes overlay** for the
*numbers* — animated counters, a bar/line chart, KPI stat boxes, a headline. Every pure-generative tool (Runway, Pika,
Sora) renders a chart as mush; **hyperframes renders it as crisp HTML/SVG**. This is the B2B-native format that turns
your moat into a deliverable.

## What you'll get

- **A 20–40s data reel** — 9:16 for social or 16:9 for a deck, atmospheric b-roll under a crisp animated data layer
- **Count-up KPI tiles** — your 3–5 headline numbers with labels and delta arrows (▲ +38%), animating up in CSS
- **One chart that draws in** — a bar / line / donut in SVG+CSS over ~2s; a static number is a slide, not a reel
- **Numbers that are always exact** — the whole data layer is HTML, so "$4.2M" is right every time and editable in seconds; the model never touches a digit
- **A calm-confident music bed** — muxed under the full duration with `audio_fill:"loop"`, no silent tail
- **A title + a source footnote** — brand-colored, crisp, optionally locked to your brand kit's palette

## Fill in your BRIEF

```yaml
metrics:               # the numbers, one per line — 3–5 headline KPIs. Include the delta if
                       # you have one, e.g. "Q3 revenue $4.2M (+38% YoY)" / "1,240 new
                       # customers" / "NPS 67" / "churn 2.1% (−0.4pt)"
headline:              # the on-screen title — e.g. "Q3 in four numbers"
chart_series:          # the ONE series to draw, with its shape — e.g. "quarterly revenue,
                       # bar: Q1 2.1, Q2 2.9, Q3 4.2" or "NPS trend, line: 54, 61, 67"
source_footnote:       # the source + period line — e.g. "Internal data, Q3 FY26"
aspect_ratio: 9:16     # 9:16 (social) | 16:9 (deck / LinkedIn) — set this UP FRONT;
                       # re-rendering the overlay is cheap, re-rendering b-roll isn't
broll_mood:            # the atmospheric bed — e.g. "abstract dark-blue gradients",
                       # "data-center at night", "city skyline at dusk".
                       # Keep it abstract and TEXT-FREE so it doesn't fight the overlay.
brand_kit_id:          # OPTIONAL — ckit_… so tiles + chart match your deck's palette
music_brief:           # e.g. "calm-confident, ~100 BPM, instrumental, no vocals"
duration_seconds: 30   # 20–40
```

**How it's assembled:** generate 1–3 abstract / atmospheric keyframes (`cosmos-3-image` /
`flux-dev`) for the background feel, then lay **ONE `hyperframes-render` document** over it:
count-up KPI numbers, an SVG/CSS chart that draws in, labeled stat boxes, a title — all
animated in CSS, all legible. Mux a calm-confident `music` bed. The numbers are HTML, so
they're **always exact and instantly editable** — never trust a model to render "$4.2M."

## The cap chain

```
metrics + headline + chart_series
  → agent normalizes the data: 3–5 headline KPIs + one chart series + the title
  → create_media (cosmos-3-image / flux-dev)   # 1–3 broll_mood keyframes, abstract, no text
       (or a slow Ken-Burns video bed)
  → hyperframes-render                          # ONE HTML doc over the b-roll:
       • count-up KPI tiles (CSS @property / JS counters)
       • an SVG/CSS bar or line chart that animates in
       • headline + the source_footnote line
       • aspect_ratio from the brief ("9:16" social / "16:9" deck), brand_kit_id palette if set
  → music / sonilo-t2m                          # the music_brief bed, ~90–110 BPM, instrumental
  → ffmpeg-mux                                  # bed under the full duration_seconds, audio_fill:"loop"
```

## The overlay is the product

`hyperframes-render` carries everything AI can't:
- **KPI tiles** — big count-up numbers with labels + delta arrows (▲ +38%).
- **One chart** — a bar/line/donut drawn with CSS/SVG, animating in over ~2s.
- **A title + a footnote** (source, period) — crisp, brand-colored.
- Optional brand-kit palette so it matches the company's deck.

## Variations

- **Earnings / KPI recap** (9:16 social or 16:9 LinkedIn).
- **Before/after** — two stat columns with a delta.
- **Leaderboard / ranking** — animated rows.
- **Survey / NPS** — gauge + breakdown bars.

## Quality bar (definition of done)

- ✅ Every number is **exact and legible** (it's HTML, not generated pixels).
- ✅ At least one chart **animates in** (a static number is a slide, not a reel).
- ✅ The b-roll sets mood without competing with the data; the bed covers the full duration.
- ✅ Aspect matches the destination (9:16 social, 16:9 deck/LinkedIn).

## Watch-outs

- **Never** let the model render the data — keep all numbers/charts in the hyperframes layer.
- Keep `broll_mood` abstract/atmospheric (on-policy, no text, no fake charts) so it doesn't fight the overlay.
- Match `aspect_ratio` to the channel up front; re-rendering the overlay is cheap, re-rendering `broll_mood` b-roll isn't.
