The studio · AI-built, human-inspected
One human directs an AI production line. Nothing ships without inspection.
Templatorium is a template shop and a working AI production system, run by one person. The owner architected the pipeline and directs it: AI agents research, design, build, art-direct, and inspect every template — and a forty-two-check quality gate, plus a human with final say, keeps the output from ever being slop.
This page is the proof, told with real artifacts: the org chart of the AI team, the gate it can't skip, and one template's full run — timestamped from git, revise rounds included.
14 templates listed
14 with a filed PASS report
42 checks per template
1 run shown: research → shelf in 73 min
1 human, final say
01 — The production line
An AI team with real job descriptions.
Each role is a defined agent with its own instructions, context, and rules — dispatched in sequence, and in parallel where the work is independent. The owner is the chief of staff: agents prepare, a human publishes.
- 01
design-scout
Studies how the vertical's best sites are actually built — and files a dossier on where this template can differ.
- 02
template-designer
Writes the DESIGN.md brief: the exact ground, type, layout, and motion the build must commit to.
- 03
template-developer
Builds it — semantic HTML, hand-written CSS and JS, packaged with buyer docs and a license.
- 04
art-director
Adversarial taste review of the built pages. Orders fixes; never makes them.
- 05
qa-inspector
Runs the 42-check gate and files the report. The only role that can pass a template onto the shelf.
- 06
copywriter · seo-strategist · documenter
Product copy in the shop's voice, metadata, and the docs inside every zip.
Off the line: a market-researcher (what's worth building) and an analyst (weekly numbers, honest grew/flat/declined verdicts). When something breaks, the lesson is written down — and any lesson that occurs twice is promoted into the responsible agent's permanent rules, so the same mistake can't happen a third time.
02 — The gate
Forty-two checks. The AI can't skip them, and neither can the human.
Every template faces the same anti-generic gate before it can list: 38 required checks and 4 recommended ones, from a single registry file (v2026-07-17). Every count printed anywhere on this site is computed from that file — a hardcoded number is itself a QA failure.
The mechanical half runs as scripts: zero broken links, zero console errors, zero serious axe-core violations, no overflow at 375/768/1440px, WCAG 2.2 AA contrast computed with the relative-luminance formula — never eyeballed. The judged half is adversarial: one named signature moment, real type contrast, opinionated copy, and a shelf-distinctiveness rule — every template must diverge from every shipped one on all four axes at once: ground, type, layout, and motion.
A PASS only counts when the report is committed to the repo. Right now: 14 templates listed, 14 with a filed PASS report — the product pages read those files at build time, so an unfiled PASS can't even render.
What a REVISE looks like
The gate isn't ceremonial — it fails things. On 2026-07-22 it re-ran on all fourteen then-listed templates in one night and surfaced eight real shipped defects: a pre-hidden content reveal, a 1.04:1 hover caption, a dead anchor, three missing no-JS nav fallbacks, a page without its h1, and a glass card that sank below AA over a new photo. All fixed and re-inspected the same day.
registry v2026-07-17 · 38 required · 4 recommended
03 — One real run
Nocturne: research to shelf in 73 minutes.
A boutique-hotel template with a working split-flap arrivals board as its booking UI. Every beat below is a real commit from 2026-07-22 (times UTC) — including the two revise rounds, because the catches are the point.
-
Research filed
The owner asked for a batch of new templates. design-scout files the boutique-hotel dossier: the genre's real page skeleton, an award-site survey, and the one shelf collision to steer around.
-
Brief committed
template-designer commits DESIGN.md: “After Dark” — a deep-aubergine ground and a Solari split-flap arrivals board as the booking UI. Seven minutes after the dossier.
-
Built
template-developer ships six pages. The split-flap is hand-rolled in WAAPI + CSS 3D — no GSAP, because its license doesn't clearly permit resale. Fonts vendored, content readable with JavaScript off.
-
Photography
Three art-directed demo photos added — AI-generated, and flagged as synthetic placeholders in the LICENSE so buyers know to replace them.
-
Art-director: REVISE
Five fixes ordered, including a P0 the build shipped with: the hero board split words mid-glyph at phone widths. Fixed and re-verified at 375, 768, and 1440px.
-
QA inspector: REVISE
The mechanical gate returns pass:false — 48 serious axe violations, traced to one CSS class pre-hiding below-the-fold content until scroll. Plus a prohibited aria-label pattern and a 1.79:1 watermark. All fixed; the reveal lesson was promoted into the developer's permanent rules the same day.
-
PASS → listed
The catalog manifest flips to available — a flip the build itself refuses unless the inspector's PASS report is on file. Research to listed: 1 hour 13 minutes, including both revise rounds.
-
Receipt filed
A same-day claims audit found PASS verdicts across the shelf without committed report artifacts. The full gate re-ran on Nocturne's listed code and the report below was committed to docs/qa/ — now a permanent rule: no committed report, no PASS.
The honest framing: the machine produced — six pages, a signature interaction, and along the way one layout bug and 48 accessibility violations. The gate caught them before any buyer could. A human decided when it was done. Produce fast, inspect adversarially, fix, file the receipt — that loop is what this page is demonstrating.
Read the filed QA report, verbatim docs/qa/2026-07-22-nocturne.md · PASS · 2026-07-22
# QA report — Nocturne (boutique-hotel template, $69)
- **Target:** `templates/nocturne/` — 6 pages: `index.html`, `rooms.html`,
`room.html`, `dining.html`, `offers.html`, `contact.html`
- **Brief:** `templates/nocturne/DESIGN.md` ("After Dark" — the Solari split-flap
arrivals board)
- **Inspector:** qa-inspector · 2026-07-22
- **Run type:** Phase-0 receipts run (claims-audit F1 remedy,
`docs/audits/2026-07-22-claims-audit.md`). Nocturne passed a full gate run
earlier this same session on this same code (post commit `ded019b`, "nocturne
QA fixes: reveal rests visible, board role=img, room-No AA, docs match
LICENSE"), but no report artifact was filed, so `site/src/lib/inspection.ts`
treated it as ungated. This report re-runs every mechanical check fresh and
spot re-verifies the judged checks against the check registry
(`pipeline/conventions/check-registry.json`, v2026-07-17: **42 checks — 38
required + 4 recommended**), then files the receipt.
- **Method:** fresh `check-theme.mjs` / `genericize-check.mjs` /
`content-slots.mjs verify` runs; local serve + Playwright
(`/opt/pw-browsers/chromium`) — screenshots at 375/768/1440 with
`reducedMotion:'reduce'` (so the split-flap settles — per LEARNINGS
split-flap screenshot-timing row), all-6-page console/overflow sweep at
375 + 1440, keyboard focus probes, JS-off context, external-request
listeners; WCAG relative-luminance computation (node) from the built
`:root` tokens. Worktree clean; no commits touch `templates/nocturne/`
since today's full-gate PASS.
---
## 1. Mechanical gate (fresh runs, real outputs)
| ID | Check | Verdict | Evidence |
|---|---|---|---|
| MECH-01..07 | `node pipeline/scripts/check-theme.mjs templates/nocturne` | PASS | `{"pass":true,"brokenLinks":0,"missingAssets":0,"consoleErrors":[],"axeViolations":[],"unsafeVectors":[],"horizontalOverflow":{"375":false,"768":false,"1440":false}}` exit 0 |
| PROV-01 | `node pipeline/scripts/genericize-check.mjs templates/nocturne` | PASS | `{"pass":true,"hits":[]}` — 0 hits across all 6 banned needles |
| — | `node pipeline/scripts/content-slots.mjs verify templates/nocturne` | PASS | `verify OK: 287 slot keys, 22 tokens, round-trip byte-exact` |
| MECH-03/05/07 (depth) | All-pages sweep: 6 pages × {375, 1440}, console + pageerror listeners + overflow | PASS | `{"pages":6,"consoleErrors":[],"overflow":[]}` — check-theme browser-tests the index only; this sweep covers the other 5 pages too |
## 2. Accessibility (computed, not eyeballed)
Ratios computed with the WCAG relative-luminance formula from the shipped
`:root` values:
| ID | Pair | Computed | Verdict |
|---|---|---|---|
| A11Y-01 | bone `#F0E6DA` / plum `#2A1130` (body) | 13.95 | PASS AAA (CSS header claims 13.9 — matches) |
| A11Y-01 | bone / plum-deep `#1C0A22` | 15.27 | PASS AAA |
| A11Y-01 | bone / plum-lift `#3A1C42` (cards, booking rail) | 11.96 | PASS AAA |
| A11Y-01 | bone / flap `#241228` (split-flap cell face) | 14.29 | PASS AAA |
| A11Y-01 | bone-dim `#A896A4` / plum (muted) | 6.19 | PASS AA |
| A11Y-01 | bone-dim / plum-lift (worst muted pair) | 5.31 | PASS AA |
| A11Y-01 | amber `#EBA94E` / plum (the signal) | 8.45 | PASS (claim 8.5 — matches) |
| A11Y-01 | amber-ink `#1C0A22` / amber (buy-button label) | 9.25 | PASS (claim 9.3 — matches) |
| ID | Check | Verdict | Evidence |
|---|---|---|---|
| A11Y-02 | Visible focus on every ground | PASS | Keyboard probes: `2px solid rgb(235,169,78)` (amber, 8.45:1 on plum) on skip-link, wordmark, nav links, Book. Form fields swap outline for an amber border + `0 0 0 1px` amber glow (`.rail-field`, `.field` — visible replacement, not removal); `.chip input:focus-visible + span` gets the amber outline |
| A11Y-03 | Sticky nav + scroll-margin | PASS | `[id] { scroll-margin-top: calc(var(--nav-h) + var(--rail-h) + 16px) }` (style.css:158) — accounts for nav **and** the booking rail |
| A11Y-04 | prefers-reduced-motion | PASS | 2 guards in style.css + 2 in main.js + 1 in smooth.js (Lenis skipped). Rendered probe under `reducedMotion:'reduce'`: **0 hidden/near-invisible elements** on the home page — the board **rests as visible plain text** (today's `ded019b` fix confirmed in the 1440 screenshot: all three board lines legible without JS motion) |
| A11Y-05 | Semantics | PASS | 1 h1, 1 main, header/footer landmarks, `lang="en"`, title "The Nocturne — a boutique hotel, after dark.", skip-link first tab stop. Non-heading boards get `role="img"` + `aria-label` (main.js:80–83, today's fix), every flap cell/word `aria-hidden` — SR reads the word, not letters. axe: 0 serious/critical |
| A11Y-06 | Grain overlay headroom | PASS | Film grain sits **behind** ground fills (style.css:113 "BEHIND ground fills, never under" text); worst text pair 5.31 keeps 0.81 headroom over the 4.5 floor — well past the ≥0.3 requirement |
## 3. Anti-generic gate — REQUIRED items by name
| ID | Item | Verdict | Evidence |
|---|---|---|---|
| DES-01 | One signature moment, named | PASS | DESIGN.md `signature:` field names **the Solari split-flap arrivals board**; built: `data-board` lines rebuilt as `flap-cell`s that clack character-by-character (main.js), availability boards re-play on view. Exactly one signature |
| DES-02 | Real type contrast | PASS | Limelight deco caps (marquee, LARGE CAPS only) vs General Sans body vs Fragment Mono machine data — three registers, no Inter |
| DES-03 | Committed composition | PASS | The full-width arrivals-board hero + departure-board booking rail; room cards as numbered "RM NO." keyhole plates, not three identical cards |
| DES-04 | One restrained accent <5% | PASS | Amber only on Check-availability/Book, board glow-edge + arriving flap, AVAILABLE dot, focus rings — confirmed in 1440 full-page screenshot; DESIGN.md documents amber banned from eyebrows/body/headings |
| DES-05 | Editorial detail | PASS | Mono micro-labels ("THE ROOMS · RM NO. 01–14", "ARRIVALS · AFTER 3PM", coordinates in the footer), room-number plates |
| DES-06 | Opinionated copy | PASS | "Fourteen rooms, each with one good lamp" / "The lamps are on" / "Turn in". No "Welcome to", no "trusted partner" |
| DES-07 | Imagery art-directed | PASS | Full-bleed room photo + labeled keyhole slot-spec placeholders (ratio + RM No. + view direction), zero white boxes |
| COH-01..07 | Coherence pass | PASS | Re-verified on the 1440 full-page screenshot: one `.btn` system (amber fill = the only buy action), same plum-depth banding + hairline language every section, CTA band ("Turn in") reuses the hero board system, motion = the one meaning-bearing clack |
| DIV-01..03 | Shelf distinctiveness | PASS | Ground: deep aubergine/plum — DESIGN.md: "the one saturated ground the shelf never uses"; type: Limelight deco (no other template); layout: arrivals-board/concourse; motion: split-flap (WAAPI + CSS 3D) — no shipped signature shares it. Vertical (boutique hotel) appropriate: after-dark jewel-box register fits the product. Four-axis divergence documented in DESIGN.md gate checklist |
## 4. Packaging & catalog
| ID | Check | Verdict | Evidence |
|---|---|---|---|
| PKG-01 | LICENSE.txt | PASS | "Nocturne — a Templatorium template … SINGLE-PRODUCT LICENSE (v1) … This template is a paid product" — matches house terms; docs match LICENSE per `ded019b` |
| PKG-02 | Buyer docs | PASS | `docs/README.md` current — describes the split-flap board, aubergine ground, token contract |
| PKG-03 | Fonts vendored | PASS | `fonts/`: limelight-400.woff2 (OFL, OFL.txt shipped), general-sans-variable.woff2 (Fontshare FFL), fragment-mono-400.woff2 (OFL); **0 external requests** on any of 18 page-loads (request listener) |
| PKG-04 | Favicon | PASS | icon link present on all 6 pages (6/6 grep) |
| PKG-05 | Usable without JS | PASS | JS-off context: 0 hidden of 22 probed content nodes, 2,157 chars body text — board lines are real text before JS rebuilds them |
| CAT-01 | Manifest validates | PASS | `catalog/products/nocturne.json` parses; name/tagline/price 69/formats (html available, astro+react vote) — schema shape per content.config.ts; site build gate unchanged |
| CAT-02 | Live demo | PASS | `https://templatorium-demos.pages.dev/nocturne/` → HTTP 200 |
## 5. Recommended items (walked, advisory)
REC-01 texture over gradient: PASS (violet film grain). REC-02 density rhythm:
PASS (cramped board/rail vs airy room bands). REC-03 not three identical cards:
PASS (photo card + two keyhole plates, numbered). REC-04 motion-as-meaning:
PASS (the clack = arrivals; rests visible under reduced-motion).
## Screenshots
`docs/qa/evidence/2026-07-22-receipts/nocturne-{375,768,1440}.png`
(1440 = full page, captured under `reducedMotion:'reduce'`).
---
All 38 required registry checks pass; 4 recommended pass. Mechanical outputs
are fresh runs on current code; judged items re-verified at receipt depth
against this session's full-gate PASS. Nothing regressed.
## Verdict: **PASS**
04 — What this demonstrates
If you're evaluating the owner.
Multi-agent orchestration
A role-based agent system with defined hand-offs, parallel dispatch, revise loops, and a rule that promotes repeated failures into permanent instructions.
Quality-system design
A 42-check gate as code and convention: scripted mechanical checks, adversarial judged ones, and PASS verdicts that only exist as committed artifacts.
Front-end craft
The templates themselves: semantic HTML, computed WCAG 2.2 AA, hand-rolled motion (no unlicensable libraries), working no-JS fallbacks, unminified readable source.
Honest measurement
Every number computed from a source file, a claims audit that removed anything unbackable, and an append-only weekly log where "zero sales" is a valid result.
05 — See for yourself
This whole shop is the portfolio.
Browse the shelf, open any inspection sheet, read the code in any zip. Everything here was made the way this page says it was.
The owner is open to AI-automation work · info@templatorium.com