Blitz Motion Lab · Atomic assets

A living UI, one asset at a time

Every visual has a static reference. 40 assets also have a live variant, 12 brand signatures and 6 automations extend the language, and 12 diagram scenes are mounted in the heroes of the site, all without leaving the minimal tone of BlitzAPI.

40 LIVE VARIANTS12 SIGNATURES6 AUTOMATIONS12 SCENES LIVE · 30 SPECS
01Static is canonical

Motion never carries indispensable information. The static state is the one a screen reader and a printer get.

02One asset, one motion

A single behaviour per variant, declared in the catalog. No page picks a duration, an easing or a keyframe.

03Ambient, not narrative

No complex timeline, no scene that monopolizes a section. Ambient loops run 8s or more.

04Reduced motion

The system preference restores the static version automatically, through the global blanket.

01
Motion vocabulary

Four movements, a closed vocabulary

Durations are tokens (tokens.css); the sample next to each name runs at the real duration.

4 MOVEMENTS
Pulse15 assets · 3.6s · --motion-pulse-duration

A status, a port or a discovery breathes locally.

Progress6 assets · 5s · --motion-progress-duration

One measure moves slowly without changing the content.

Flux11 assets · 7.2s · --motion-flux-duration

A change reveals itself by sequence, stroke or orbit.

Dash8 assets · 8s · --motion-flow-duration

A connector suggests a transfer or a resolution.

02
Static ↔ Live

The live variants, side by side

Left column: the static reference. Right column: the same asset with animated: true, running only the movement declared in the catalog.

40 PAIRS
01

Pulse

A status, a port or a discovery breathes locally.

3.6s15 ASSETS
API requestAPI
POST/v2/enrichment/emailREQUEST
STATIC
POST/v2/enrichment/emailREQUEST
LIVE · PULSE
API responseAPI
HTTP 200JSONfoundtrueemail"antoine@…"
STATIC
HTTP 200JSONfoundtrueemail"antoine@…"
LIVE · PULSE
Key infoAPI
API KEYREMAINING CREDITS99.5MAX REQUESTS / SEC50
STATIC
API KEYREMAINING CREDITS99.5MAX REQUESTS / SEC50
LIVE · PULSE
Terminal commandAPI
$ curl /v2/search/peopleHTTP 200 · application/json
STATIC
$ curl /v2/search/peopleHTTP 200 · application/json
LIVE · PULSE
Person recordIDENTITY
ABANTOINE BLITZ
STATIC
ABANTOINE BLITZ
LIVE · PULSE
ContactabilityIDENTITY
CONTACTABILITYEMAILPHONEPROFILE
STATIC
CONTACTABILITYEMAILPHONEPROFILE
LIVE · PULSE
Discovered contactIDENTITY
CONTACT FOUNDDISCOVERED
STATIC
CONTACT FOUNDDISCOVERED
LIVE · PULSE
Verified fieldIDENTITY
WORK EMAILmaya@acme.com
STATIC
WORK EMAILmaya@acme.com
LIVE · PULSE
Found resultIDENTITY
foundtrueWORK EMAIL
STATIC
foundtrueWORK EMAIL
LIVE · PULSE
DatasetDATA
RESULTS
STATIC
RESULTS
LIVE · PULSE
Quality scoreDATA
DATA QUALITYVERIFIEDCHECKEDFRESH≤ 30 DAYSCOMPLETESTRUCTUREDREADY FOR GTM
STATIC
DATA QUALITYVERIFIEDCHECKEDFRESH≤ 30 DAYSCOMPLETESTRUCTUREDREADY FOR GTM
LIVE · PULSE
DeduplicationDATA
1UNIQUE
STATIC
1UNIQUE
LIVE · PULSE
Validation stateDATA
RAWINPUTVALID
STATIC
RAWINPUTVALID
LIVE · PULSE
ResolverFLOW
UNKNOWN EMAILFOUND
STATIC
UNKNOWN EMAILFOUND
LIVE · PULSE
Provider stepFLOW
WATERFALL PROVIDERSSTEP 1STEP 2STEP 3
STATIC
WATERFALL PROVIDERSSTEP 1STEP 2STEP 3
LIVE · PULSE
02

Progress

One measure moves slowly without changing the content.

5s6 ASSETS
Batch requestAPI
POST× 100BATCH REQUEST
STATIC
POST× 100BATCH REQUEST
LIVE · PROGRESS
Company recordIDENTITY
BLITZAPIBLITZ-API.AI · FR
STATIC
BLITZAPIBLITZ-API.AI · FR
LIVE · PROGRESS
Email confidenceIDENTITY
STATIC
LIVE · PROGRESS
Score cardDATA
ACCOUNT SCOREFIT86/ 100HIGH CONFIDENCE
STATIC
ACCOUNT SCOREFIT86/ 100HIGH CONFIDENCE
LIVE · PROGRESS
Confidence scoreDATA
RESOLUTION CONFIDENCEHIGHVERIFIED SIGNALS
STATIC
RESOLUTION CONFIDENCEHIGHVERIFIED SIGNALS
LIVE · PROGRESS
Coverage scoreDATA
FIELD COVERAGEWORK EMAILCOVEREDFIELD PRESENTUNKNOWN
STATIC
FIELD COVERAGEWORK EMAILCOVEREDFIELD PRESENTUNKNOWN
LIVE · PROGRESS
03

Flux

A change reveals itself by sequence, stroke or orbit.

7.2s11 ASSETS
Rate limitAPI
RATE LIMIT50 REQ/S
STATIC
RATE LIMIT50 REQ/S
LIVE · FLUX
Live signalDATA
HIRING SIGNAL+18
STATIC
HIRING SIGNAL+18
LIVE · FLUX
DistributionDATA
COUNTRY DISTRIBUTIONUSFRGB
STATIC
COUNTRY DISTRIBUTIONUSFRGB
LIVE · FLUX
Data metricDATA
DATA METRICLIVE550M+PROFESSIONAL PROFILES
STATIC
DATA METRICLIVE550M+PROFESSIONAL PROFILES
LIVE · FLUX
Score bandDATA
SCORE BAND86LOWMIDHIGHQUALIFIED
STATIC
SCORE BAND86LOWMIDHIGHQUALIFIED
LIVE · FLUX
Score breakdownDATA
SCORE BREAKDOWN86 / 100FITINTENTREACH
STATIC
SCORE BREAKDOWN86 / 100FITINTENTREACH
LIVE · FLUX
Metric deltaDATA
HIRING VELOCITY+18.4%+3.2 PTS
STATIC
HIRING VELOCITY+18.4%+3.2 PTS
LIVE · FLUX
Metric comparisonDATA
DATASET COVERAGEBEFOREPARTIALAFTERENRICHEDENRICHED RECORDS
STATIC
DATASET COVERAGEBEFOREPARTIALAFTERENRICHEDENRICHED RECORDS
LIVE · FLUX
ICP scoreDATA
ICP SCORE86/ 100ICP FITHIGHGTM READY
STATIC
ICP SCORE86/ 100ICP FITHIGHGTM READY
LIVE · FLUX
WaterfallFLOW
STEP 1STEP 2STEP 3
STATIC
STEP 1STEP 2STEP 3
LIVE · FLUX
ICP cascadeFLOW
ICP 1#1ICP 2#2ICP 3#3STOP AT MAX_RESULTS
STATIC
ICP 1#1ICP 2#2ICP 3#3STOP AT MAX_RESULTS
LIVE · FLUX
04

Dash

A connector suggests a transfer or a resolution.

8s8 ASSETS
Identity matchIDENTITY
IDENTITY MATCHED
STATIC
IDENTITY MATCHED
LIVE · DASH
Aggregate countDATA
P550M+C65M+J100M+DATA POINTS1B+
STATIC
P550M+C65M+J100M+DATA POINTS1B+
LIVE · DASH
MergeFLOW
STATIC
LIVE · DASH
SplitFLOW
STATIC
LIVE · DASH
Data portFLOW
INPUTOUTPUT
STATIC
INPUTOUTPUT
LIVE · DASH
Data routerFLOW
RESULTCRMDWHSEQ
STATIC
RESULTCRMDWHSEQ
LIVE · DASH
Enrichment chainFLOW
PERSONEMAILPHONE
STATIC
PERSONEMAILPHONE
LIVE · DASH
GTM loopFLOW
SOURCEENRICHSYNCGTM LOOP
STATIC
SOURCEENRICHSYNCGTM LOOP
LIVE · DASH
03
Brand signatures · Level 2

More expressive, still contained

Micro-sequences that give the key moments a personality: discover, resolve, verify, synchronize, reveal a signal. One canvas, at most three states, one intention. Each signature below says where the site mounts it.

12 SIGNATURES
MAX 3 STATES1 CANVAS6.4s to 8sNO NARRATIVE SCENE
Data scanDiscover

Explore a corpus or an object

people · companies · jobs
STATIC
people · companies · jobs
LIVE · LEVEL 2
Identity resolveResolve

Go from unknown to found

UNKNOWNFOUND
STATIC
UNKNOWNFOUND
LIVE · LEVEL 2
Data streamOperate

Show an active transfer

SOURCERESULTS
STATIC
SOURCERESULTS
LIVE · LEVEL 2
Trust stampTrust

Confirm a validation

VERIFIED BY BLITZAPI
STATIC
VERIFIED BY BLITZAPI
LIVE · LEVEL 2
Cascade focusResolve

Walk three short steps

WATERFALL CASCADESTEP 1STEP 2STEP 3
STATIC
WATERFALL CASCADESTEP 1STEP 2STEP 3
LIVE · LEVEL 2
System syncOperate

Synchronize two systems

STATIC
LIVE · LEVEL 2
Signal revealDiscover

Reveal a signal

SIGNAL DETECTED+18
STATIC
SIGNAL DETECTED+18
LIVE · LEVEL 2
JSON cursorTrust

Suggest a structured response

{found: true,email: "antoine@…"}
STATIC
{found: true,email: "antoine@…"}
LIVE · LEVEL 2
Raw to recordResolve

Converge raw fragments into a clean record

RAWRESOLVED
STATIC
RAWRESOLVED
LIVE · LEVEL 2
Brand orbitOperate

Bring life to a section with no business object to show

ONE API LAYER
STATIC
ONE API LAYER
LIVE · LEVEL 2
Waterfall cascadeResolve

Descend the tiers down to the match

TIER 1TIER 2TIER 3BEST MATCH
STATIC
TIER 1TIER 2TIER 3BEST MATCH
LIVE · LEVEL 2
Signal timelineDiscover

Reveal a signal over time

MONTH 1NOW
STATIC
MONTH 1NOW
LIVE · LEVEL 2
SignatureFamilyPurposeMounted on (SignatureBand)
scandiscoverExplore a corpus or an objectNot mounted in a band (available to Figure and UseCaseSplit showcase)
resolveresolveGo from unknown to foundNot mounted in a band (available to Figure and UseCaseSplit showcase)
streamoperateShow an active transferNot mounted in a band (available to Figure and UseCaseSplit showcase)
verifytrustConfirm a validationNot mounted in a band (available to Figure and UseCaseSplit showcase)
cascade-focusresolveWalk three short stepsNot mounted in a band (available to Figure and UseCaseSplit showcase)
syncoperateSynchronize two systemshub integrations
signal-drawdiscoverReveal a signalNot mounted in a band (available to Figure and UseCaseSplit showcase)
json-cursortrustSuggest a structured responsehub developers
convergeresolveConverge raw fragments into a clean recordfamily enrichment · use case crm-hygiene · use case profile-enrichment · team revops
orbitoperateBring life to a section with no business object to showfamily identity · use case data-resolution · team gtm-engineers · team developers
cascaderesolveDescend the tiers down to the matchfamily search · use case find-decision-makers · team outbound-specialists
timelinediscoverReveal a signal over timefamily jobs · use case build-tam · team agencies
04
Automation generator

Automations readable at a glance

A trigger, a Blitz engine, a result. Recipes are declarative specs of two to four nodes, with roles from the icon registry, no coordinates and no free timeline.

6 RECIPES
2 TO 4 NODES1 BLITZ ENGINE1 DATA PACKETLINEAR FIRST
Contact enrichment3 NODES · LINEAR

Enrich a person, then confirm a usable contact.

STATIC SPEC
LIVE · DATA PACKET
Email resolution3 NODES · LINEAR

Turn an unknown address into a resolved work email.

STATIC SPEC
LIVE · DATA PACKET
Phone resolution3 NODES · LINEAR

Resolve and qualify a direct dial.

STATIC SPEC
LIVE · DATA PACKET
People search3 NODES · LINEAR

Turn an ICP query into a people dataset.

STATIC SPEC
LIVE · DATA PACKET
Company refresh3 NODES · LINEAR

Refresh a company record, then sync the data.

STATIC SPEC
LIVE · DATA PACKET
Hiring signal3 NODES · LINEAR

Detect a hiring signal and create a GTM action.

STATIC SPEC
LIVE · DATA PACKET
JSON · automation-recipes.json
{
  "id": "contact-enrichment",
  "name": "Contact enrichment",
  "intent": "Enrich a person, then confirm a usable contact.",
  "alt": "A person record enriched by BlitzAPI into a verified contact",
  "nodes": [
    {
      "id": "person",
      "kind": "icon",
      "role": "person",
      "label": "PERSON"
    },
    {
      "id": "blitz",
      "kind": "blitz",
      "label": "ENRICH"
    },
    {
      "id": "verified",
      "kind": "icon",
      "role": "verified",
      "label": "VERIFIED"
    }
  ]
}
05
MotionScene · Level 3

A diagram is data

A JSON spec (canvas, nodes, flows, labels, metrics) becomes an animated SVG composed from the primitives: blueprint grid, node cards, the engine, flow paths with auto routing and staggered reveal. The same spec serves a wide tier and a derived compact tier for narrow frames.

12 LIVE · 30 SPECS
CANVAS

Width ≈ the real width of the host frame: 720 for a product band, 560 for a hero proof frame or a team column. The compact tier is derived, never written.

DENSITY

Three nodes per section scene (card → engine → result), rarely four. Beyond, the scene competes with the text.

EYEBROW

One mono eyebrow per proof zone, carried by the HTML (sceneLabel). A labels[] entry in the spec would duplicate it.

ONE PER PAGE

specs/<directory>/<slug>.json, mounted by slug through import.meta.glob. Remove the JSON, the frame disappears.

PROFILE ENRICHMENT · use case herospecs/use-cases/profile-enrichment.json · 560×320 · 4 nodes
DEVELOPER TOOLKIT · hub herospecs/hubs/developers.json · 560×360 · 6 nodes
GTM WORKFLOW · team pains sectionspecs/teams/gtm-engineers.json · 560×240 · 3 nodes
JSON · specs/use-cases/profile-enrichment.json
{
  "id": "uc-profile-enrichment",
  "alt": "A partial profile and company data flowing through BlitzAPI enrichment into a complete profile",
  "canvas": {
    "width": 560,
    "height": 320
  },
  "grid": {
    "variant": "dots"
  },
  "nodes": [
    {
      "id": "in0",
      "kind": "card",
      "x": 22,
      "y": 60,
      "w": 148,
      "h": 64,
      "label": "PARTIAL PROFILE"
    },
    {
      "id": "in1",
      "kind": "card",
      "x": 22,
      "y": 196,
      "w": 148,
      "h": 64,
      "label": "COMPANY DATA"
    },
    {
      "id": "engine",
      "kind": "engine",
      "x": 240,
      "y": 120,
      "w": 80,
      "h": 80,
      "label": "ENRICH"
    },
    {
      "id": "out0",
      "kind": "result",
      "x": 382,
      "y": 98,
      "w": 156,
      "h": 124,
      "label": "COMPLETE PROFILE"
    }
  ],
  "flows": [
    {
      "from": "in0",
      "to": "engine"
    },
    {
      "from": "in1",
      "to": "engine"
    },
    {
      "from": "engine",
      "to": "out0",
      "tone": "accent",
      "dur": 3
    }
  ],
  "labels": [
    {
      "x": 22,
      "y": 38,
      "text": "[ 550M+ PROFILES ]"
    }
  ]
}
DirectorySpecsMounted inStatus
specs/use-cases/5UseCaseHero proof frame (T3)live
specs/hubs/2UseCaseHero proof frame (Developers, Integrations)live
specs/teams/5PainsSection scene column (T4)live
specs/blog/3Figure block at the head of an articledormant (blog routes removed in September)
specs/products/13former diagram band of the product templatedormant (band removed with the hero KPIs)
specs/home/2home sections (specs kept for reference)not mounted
Node kindDefault sizeMeaning
card · terminal148×64A source or a command; mini content simulated
engine80×80The Blitz engine, square, glyph on accent
result156×124A result card
query · filter164×92 · 164×112Typed query or ICP filters with key/value fields
json · person · company · dataset164×112Data objects with their fields
signal164×96A detected event
endpoint180×104A method + path card
06
Production contract

Motion stays a parameter

A generator, a page or an author only asks for animated: true; the catalog imposes the movement compatible with the asset. Four levels, four closed contracts.

4 LEVELS
LEVEL 01Atomic asset

One business object or state, standalone.

57 kinds · 40 live
LEVEL 02Brand signature

A brand micro-sequence in one canvas.

12 signatures · max 3 states
LEVEL 03Automation

A short functional flow, built by nodes.

6 recipes · 2 to 4 nodes
LEVEL 04MotionScene

A diagram composed from a spec, mounted in a hero or a figure.

30 specs · 12 live
JSON · asset spec
{
  "kind": "resolver",
  "variant": "email",
  "animated": true,
  "alt": "Email resolution in progress"
}