NYX / VISUAL PRODUCTION PHASE / 2026-07-26

Artwork is a
production input.

Not an implementation detail. A design phase that blocks dispatch until the comps, the assets and the realistic data exist, so interface work is built against something real instead of improvised at the keyboard.

applies to apps + web apps skipped for backend, CLI, libraries operator reviews before code
01 the failure this fixes

A worker can only import what already exists.

An agent asked to build a screen will not stop mid-task to become an illustrator. If the asset folder is empty when the work is dispatched, the screen ships as text on a background — every time, no matter how the brief is worded. Three interface rejections in a single day traced back to the same three causes:

what went wrong

01 empty asset folder at dispatch
→ workers ship text-only screens

02 design from abstract rules
→ no agent hits an unseen target

03 screenshots of empty demo data
→ verification blessed blank screens

what replaces it

01 assets committed before dispatch
→ screens are built around real art

02 comps pinned into worker context
→ the target is a picture, not prose

03 scenarios proven, then captured
→ populated is the primary evidence
02 the pipeline

Two tracks, one gate.

Data work has no visual dependency, so it starts immediately and runs the whole time. Design runs beside it and ends at a hard stop: no interface code is dispatched until a human has seen the design and said yes.

A

Data track — starts immediately, never blocked

Schema, repositories, business rules, domain logic, tests. Survives every design change intact. On the pilot product this track produced 400+ passing tests while the interface direction was rewritten three times.

B1

Recon

Screenshot the real market and best-in-class references. Write down what separates funded-team execution from template execution in this category.

B2

Direction + mascot

Image model produces visual-direction candidates and the character master sheet. Poses derive from that master by reference edit — never fresh prompts, which yield twelve subtly different characters.

B3

Visual packet

Screen and state inventory, executable comps with real copy and realistic data, the asset pack, the fixtures. Committed as a baseline commit — implementation worktrees must fork from it or later, or they cannot see the art.

Operator review

The whole app is browsable before a line of interface code exists. Criticism here costs a regeneration. The same criticism after implementation costs a rebuild.

planner refuses dispatch until packet passes
C

Screen implementation

Workers build against the approved comp plus its layout specification, on top of the finished data track. The target is concrete, so "does it match" is answerable.

D

State matrix + convergence

Every screen captured populated, empty, loading, error, and celebration where it applies. Screenshot and comp go to the critic side by side, with the scenario already mechanically verified.

03 what the research says

Quality is a protocol, not a talent.

Research across Stripe, Figma, Linear, Duolingo, Airbnb, Shopify and the Nielsen Norman Group's measured studies. Almost everything that separates funded-team work from template work turns out to be procedure with published effect sizes attached.

FINDING 01 — PARALLEL BEATS ITERATION

Three concepts, then harvest the losers

NN/g measured it: picking the best of four parallel designs is 56% better than the average. Merging the winner with the best parts of the rejects reaches 70%. Add one iteration and it is 152%. Generating one design and polishing it is the weakest available strategy.

FINDING 02 — ITERATION HAS A FLOOR

Three versions minimum, five to ten normal

Median usability gain from first to last version: 165%, about 38% per iteration, with measurable diminishing returns (45% on the first pass, 34% on the second). Below three total versions you are under the documented floor.

FINDING 03 — SEVERITY, NOT OPINION

Three independent critics, averaged

Heuristic evaluation runs 3 to 5 evaluators independently, each rating findings 0 to 4. A single rater's severity score is documented as unreliable; the mean of three is not. Three evaluators catch about 60% of all findings.

FINDING 04 — JUDGES COMPARE BETTER THAN THEY SCORE

Pairwise, not one-to-ten

Expert designers agree with each other only weakly on absolute quality (Fleiss κ ≈ 0.30). Both humans and models are far more reliable at "A or B" than at a score out of ten, which is why UI benchmarks rank by tournament rather than rating.

FINDING 05 — THE STATES MATRIX IS THE REAL GATE

Missing states is why engineers invent UI

The most-cited handoff failure is "the happy path is specified and nothing else." Loading, empty, error, success, plus hover, focus, active, disabled, plus validation and truncation. Everything else in a handoff is negotiable.

FINDING 06 — SCOREBOARDS OUTLIVE TASTE

Stripe scores its journeys quarterly

Stripe named its top 15 user journeys, walks each one quarterly with a mixed team, scores them red to green on a 5-point scale, and puts the result on a company scoreboard. Quality that is not measured does not survive growth.

04 the autonomous design org

Nyx runs the whole studio.

Every role below is an agent lane, and every stop condition is mechanical. The operator picks the brand direction once. After that the loop runs itself, including the decision that the work is not good enough yet.

R

Researcher — competitive audit

Screenshots the real market and best-in-class references, and builds the reference corpus that later percentile-scores every candidate. Metrics only mean something against a corpus.

AD

Art director — direction, tokens, character

One brand direction, the token set, the composition spec, the character master sheet. Poses derive from the master by reference edit so the character stays one character.

D×3

Three designers, working blind to each other

Three genuinely different executable comps per screen, assigned distinct theses so they cannot converge. This is finding 01: the cheapest quality available is generating more than one option.

J

Judge — pairwise tournament, then harvest

Candidates compete head to head rather than being scored out of ten. The winner is then merged with the strongest elements of the losers, which is worth another 14 points on its own.

C×3

Three critics, independent, severity-rated

Each finding must carry expected standard → the gap → the fix plus a bounding box, rated 0 to 4. Severities are averaged across critics. Evidence-carrying findings mean a human can adjudicate any disagreement in seconds.

Not good enough yet

Any finding averaging severity 3 or higher sends the work back to the designers. Minimum three rounds regardless, because the measured floor is three versions. This is the loop that replaces a human saying "put another day into it."

iterate until no finding ≥ severity 3
QA

Hard gates — binary, no judgment

Contrast ratios, tap-target minimums, grid conformance, token conformance (no hardcoded values), the full states matrix, reflow at 320px, text-spacing overrides. Automated accessibility tooling catches about 57% of defects, so this layer is a floor and never the whole story.

Δ

Design QA — built versus specified

Implementation screenshot against the approved comp, per state, per breakpoint. Deltas become tickets, not opinions.

05 the artifact

The visual packet.

A structural readiness check runs against this. Missing comp, missing fixture, missing declared anchor, asset that fails dimension or transparency validation — dispatch is refused. This is enforcement in the orchestrator, not another paragraph in a prompt.

design/ DESIGN.md direction, scale, rhythm, signature tokens.json single source, emitted to both platforms visual-plan.json the index that ties it all together comps/ home-populated.png celebration.png history-populated.png assets/ manifest.json mascot-master.png poses derive from this by reference edit mascot-celebrate.png empty-history.png fixtures/ populated.json the primary verification scenario empty.json error.json
VISUAL-PLAN.JSON

Every screen declares its contract

Route, comp path, required states, fixture, and a visual anchor — character, data visualisation, photography, typographic composition, motion moment. A screen fails when it lacks its own declared anchor, not because it lacks a PNG.

ASSERTIONS

Scenarios are proven, not assumed

The app emits a readiness marker naming the scenario and its record counts. Capture waits for it. This kills the classic failure where the seed succeeds, the app reads a different store, and the screenshot still shows zero rows.

BASELINE COMMIT

Assets land before branches fork

Generating art in a parallel worker is useless if screen workers branched before it existed. Implementation worktrees are checked against the baseline commit.

EXECUTABLE COMPS

Image models direct, code specifies

Generated mockups invent text and impossible controls. They are excellent for direction and character art. The chosen direction is converted to executable comps with real copy and real data, and those become the reference.

06 cost control

Three gears.

A full studio pass for every colour tweak would make the system slow and expensive. The visual direction is chosen once per brand, then inherited automatically.

gear 1 — new brand

Full studio

  • market recon
  • multiple directions
  • operator selects
  • complete asset pack
  • comps for every screen
gear 2 — new screen

Inherit and extend

  • locked brand system reused
  • screen-specific assets
  • one comp, one fixture
  • autonomous, no operator
gear 3 — patch

Reuse everything

  • existing assets and comps
  • relevant scenarios only
  • fast path
07 scope

Only where a human looks at it.

phase runs

  • mobile apps
  • web apps
  • marketing sites
  • anything with screens

phase skipped

  • backend services
  • CLI tools
  • libraries and SDKs
  • data pipelines
  • internal scripts
08 honest status

What exists today.

The pilot runs on three moments of one live product: populated home, core-action celebration, and a history screen with weeks of real data. It generalises only if first-pass operator acceptance measurably improves.

shippedNative screenshot loop — simulator boots, captures every screen, critiques against references
shippedCharacter pipeline — master sheet, reference-consistent poses, true alpha cutout
shippedComp generation — image model produces per-screen mockups, committed and pinned
shippedToken pipeline — one source emitted to native and web, verified for drift
pilotBuild-to-comp with demo-seeded verification, running on the live product now
nextPlanner-side readiness check that refuses dispatch on an incomplete packet
nextOrchestrator-owned asset stage with a preauthorised generation budget
nextScenario readiness markers wired into the capture harness
nextParallel-concept tournament, three independent critics, severity gate
known limitModel judges agree with expert humans ~70% of the time versus ~85% human-to-human. The operator gate stays for brand-level calls; everything below that runs autonomously