# Landing Studio — QA Report & Build Log

20 landing page directions for Fysiio, built 2026-07-06 on branch
`claude/landing-studio-orchestrator-hm3aer` (PR #105). Gallery: [`/landing/index.html`](./index.html).

## Method

1. **Discovery** — verified feature inventory from source (no claim shipped that isn't in the repo)
   + teardown of the 7 existing home surfaces → explicit do-not-repeat list.
2. **Shared truth kit** — `scripts/export-landing-poses.ts` exports real `solveFrame` output for all
   65 exercises to `assets/poses/`; `assets/figure.js` renders it; `assets/shots/` are real app
   screenshots. Every moving figure on every page is genuine engine data.
3. **20 concept specs** spread across a showcase↔conversion spectrum, each with its own palette/type.
4. **Parallel builds** — one agent per page, isolated folders, output contract (index.html single-file,
   meta.json, NOTES.md), each self-verified with desktop + mobile screenshots.
5. **QA gate** — automated pass (console errors, external requests, horizontal overflow, page weight,
   reduced-motion render) + 4 parallel vision reviewers scoring Wow / Clarity / Craft / Perf-A11y and
   hunting defects → fixers → re-verify.

## Automated results (all 20 pages)

- Console errors: **0** · External network requests: **0** (fully self-contained)
- Horizontal overflow: 0 desktop; 1 mobile (page 19 — fixed, re-verified 390 = 390)
- `prefers-reduced-motion` honored on every page (figure.js freezes; CSS animations gated)
- Page weight: median ≈ 400 KB. Outliers: 01 (4.7 MB — loads the *real* app in the embed iframe,
  lazy; the page itself is small), 03/04/10/16/19 (1–1.9 MB — real screenshot PNGs).

## Blockers found by vision review → all fixed

| Page | Defect | Fix |
|---|---|---|
| 02 | Mobile: beat copy collided with transparent fixed topbar | Opaque cap + gradient scrim sized to the wordmark; pixel-scanned 54 scroll positions clean |
| 07 | Overlay card let clipped sentence fragments bleed around edges | Headline moved above curtain; after-pane text sized to the revealed strip; container query hides secondary text at extreme splits |
| 09 | Mobile: rotating figure's limbs crossed the headline | Hero geometry re-solved numerically (full 360°× cycle sweep) for a 60–75 px worst-case margin |
| 13 | No primary CTA above the fold | Primary pill CTA in hero; unreadable calf-raise slot swapped to hip-hinge (tag stays truthful) |
| 15 | No CTA above the fold | Quiet lab-styled hero CTA added; end-of-page CTA kept |
| 19 | 16 px mobile overflow (UA `figure` margin never reset) | `margin:0` on `.skin`; re-verified |

Notable polish items left (documented, non-blocking): 03 cropped screenshot thumbnails on mobile;
06 difficulty dots are color-only with tooltip fallback; 14 portal screenshot text small at render
size; 18 sparse desktop layout below the quiz.

## Scores (1–5, vision-QA pass; fixes applied before final scoring)

| # | Page | Wow | Clarity | Craft | Perf/A11y |
|---|---|---|---|---|---|
| 01 | Try One Rep | 4 | 4 | 5 | 4 |
| 02 | One Rep, Frame by Frame | 5 | 4 | 4 | 4 |
| 03 | A Body Made of Light | 5 | 5 | 3 | 4 |
| 04 | The Everything Grid | 3 | 5 | 5 | 5 |
| 05 | exercise.ts | 5 | 3 | 4 | 4 |
| 06 | Sixty-Five | 3 | 4 | 4 | 3 |
| 07 | The Handout That Moves | 4 | 4 | 4 | 4 |
| 08 | Anatomy of a Rep | 4 | 5 | 4 | 4 |
| 09 | Hold It in Your Hands | 5 | 4 | 4 | 4 |
| 10 | See Every Control | 4 | 4 | 5 | 4 |
| 11 | The Sheet, the Video, the Engine | 4 | 5 | 5 | 4 |
| 12 | Breathe | 4 | 5 | 5 | 4 |
| 13 | Little Lines, Big Recovery | 4 | 4 | 4 | 4 |
| 14 | Your Clinic, In a Link | 5 | 4 | 4 | 3 |
| 15 | It Cannot Draw a Lie | 4 | 4 | 4 | 4 |
| 16 | The Case for Computed Care | 3 | 5 | 4 | 4 |
| 17 | Where Does It Hurt? | 5 | 4 | 5 | 5 |
| 18 | The Five-Minute Fix | 3 | 4 | 3 | 4 |
| 19 | The Engine Room | 5 | 3 | 3 | 4 |
| 20 | Alive on Arrival | 5 | 5 | 5 | 5 |

## Director's cut

- **Top overall:** #20 Alive on Arrival · #17 Where Does It Hurt? · #12 Breathe
- **Safest conversion bet:** #11 The Sheet, the Video, the Engine
- **Boldest showcase:** #03 A Body Made of Light

## Truthfulness audit

Reviewers cross-checked every visible number/claim against the verified allow-list (65 exercises,
13 categories, 9 postures, 3 levels, 44 variants, 3 render styles, 4 camera views, 32 muscles as
*clinically authored estimates*, 5 body types, 4 routines, 3 recovery programs, 569 voice clips,
30 DOFs, no accounts/backend, URL-encoded sharing, PWA). **No violations on any page.** No
testimonials, customer names, ratings, or pricing anywhere (none exist). Pages 10/15 carry explicit
"not measured EMG" notes; page 15 ships an honesty box listing what the product does *not* claim.
Two builders corrected the orchestrator's spec against source (05: real keyframe fields; 12: real
12 s cycle, not the spec's guessed 5.5 s).

## Model routing & spend log (agent output tokens, approx.)

| Stage | Model | Agents | Tokens |
|---|---|---|---|
| Discovery (inventory, teardown) | inherited (Explore) | 2 | ~209k |
| Frontier research | Sonnet | 1 | ~42k |
| Builders — hard interactive (02, 03, 09, 19) | Opus | 4 | ~315k |
| Builders — standard (16 pages) | Sonnet | 16 | ~1,780k |
| Vision QA reviewers | Sonnet | 4 | ~442k |
| Fixers | Sonnet | 2 | ~341k |
| **Subagent total** | | **29** | **~3.1M** |

Orchestration, concept specs, shared kit, gallery, and this report: main session (Fable).
