Wootface, LLC — the house brand
WootBuild owns this brand. Justin, 2026-08-19: "WootBuild will own the Wootface brand anyways." So this directory is the source of truth, not a copy — which is a reversal of how it started this morning and the reason to say so plainly.
Wootface is the parent company. docade is its first product; WootBuild is another. The identity is written so that app #3 needs no rewrite, and it deliberately shares no colour, no character and no motif with docade beyond both being set in Gilroy.
| Owner | This repo, identity/ |
| Generated by | identity/build.mjs — here, from identity/_src/*.json. npm run identity |
| Guide pages | identity/guide/02.png … 11.png — the approved deck. Also the operator's brand drafts, and also the voxel-wolf reference. One set of ten files, three names |
| Enforced | npm run check re-runs the generator into a temp dir and diffs all 16 marks. They cannot drift from their source without failing |
| docade | still serves wootface.co from their deployment, and still holds the marks hand-converted in BrandMarks.tsx. They consume; we generate. docs/HANDOFF-WOOTFACE.md |
Colour
| Name | Hex | Use |
|---|---|---|
| Royal Blue | #2563EB | Primary. Fills and rules only |
| Deep Blue | #1D4ED8 | Pressed states, shadow |
| Electric Blue | #3B82F6 | Links and highlights |
| Midnight | #0B0B0B | The ground |
| Graphite | #1F2937 | Panels |
| Cloud | #D1D5DB | Body text on dark |
| White | #FFFFFF | Headings on dark |
⚠ Royal Blue is not a text colour on Midnight. The guide says 4.1:1. Measured, it is 3.81:1 — the rule is right and the number is optimistic, so Royal is a slightly worse text colour than the guide believes. It still clears 3:1, so it stays valid for large text and UI components, and fails AA body copy either way.
The guide is wrong on two of the three, not one. Cloud is 13.36:1, not the 12.1 it claims — an error in the safe direction, which is why nobody looked. Only Electric is close. The table below carried both figures from the start, so this repo never asserted the bad numbers; docade's copy did, and that is now fixed on their side too.
Every design decision the guide reached still holds: Royal clears the 3.0 floor for UI and large text, Electric clears 4.5 for body copy. The rule was right and the evidence for it was wrong — which is the failure that survives review, because a reviewer checks whether the conclusion follows and not whether the number was measured. scripts/check.mjs computes these from the hex rather than reading this table, which is the only reason anyone found out.
on #0B0B0B | guide says | measured | verdict |
|---|---|---|---|
Royal #2563EB | 4.1 | 3.81 | UI and large text only |
Electric #3B82F6 | 5.3 | 5.35 | body copy ✓ — the link colour |
Cloud #D1D5DB | 12.1 | 13.36 | running text ✓ |
Deep #1D4ED8 | — | 2.94 | fills and shadow only, never text |
One hex digit separates the link colour from the one that fails, and the difference is invisible by eye. scripts/check.mjs computes these ratios rather than reading this table — which is how the 3.81 was found.
Type
Gilroy ExtraBold display, Inter Medium body. Every mark ships as outlines, so the brand face never depends on a font being installed — which is why the console can inline the marks and still use a system stack for everything else.
⚠ Gilroy's licence has not been checked for logo use. Open on docade's side too (their docs/11-OPEN-QUESTIONS.md Q56). It does not block internal use.
The marks
All sixteen, because this table listed eight and npm run check counts the directory — a marks table that is a subset of the marks is how a file gets deleted for looking unused.
| File | What it is |
|---|---|
mark.svg · -royal · -dark · -mono | The W with its pixel-dissolve blocks |
wordmark.svg · -royal · -dark · -mono | WOOTFACE, tracked tight |
lockup.svg · -light | Mark + wordmark + rule-flanked DESIGN THE NEXT BUILD (the old line is banned, owner 2026-09-14) |
lockup-tagline.svg | The same, reading DESIGN THE NEXT BUILD |
icon-royal-1024 · icon-midnight-1024 · icon-rounded-512 · icon-transparent-512 | Square marks |
favicon-32.svg | Browser tab |
On this site the masthead is the W mark beside the word "WootBuild" — never the WOOTFACE wordmark. This site is WootBuild. The parent's wordmark at the top would say the wrong name; the mark alone carries the family without claiming it.
The wolf character system
Four voxel wolves, each with a job. From guide page 04.png:
| Builder | cap. The original. Always building. |
| Engineer | glasses. Solves problems. Builds systems. |
| Creator | headphones. Creates experiences. Brings ideas to life. |
| OG Wolf | bare. The classic. Pure and simple. |
There are no production assets for these. They exist only as renders inside the guide pages — no isolated files, no turnarounds, no transparent cutouts. The guide even shows a character-turnaround section for Builder that has nothing behind it.
That makes the wolf system the clearest piece of work WootBuild could actually do for its own parent: a voxel character lane, four characters, turnarounds and sticker states. It is the first candidate if Wootface is ever onboarded as a client properly.
One set of files, three names — and it cost a round trip
identity/guide/ is the approved deck. It is ALSO what docade calls assets/source/wootface-drafts/, and also what their entity-site.css calls the palette's verification substrate. Verified 2026-08-28: all ten PNGs byte-for-byte identical between the two repos. So there was never a third copy to import; the studio has held the only one it needs since 2026-08-19.
That took a wrong answer to find. Asked whether WootBuild already held the drafts, this session searched for *wootface*draft*, found nothing, and reported "we do not hold them, send them." The files were sitting in identity/guide/ the whole time under a name the search could not match. A name search proves the absence of a name, never the absence of a thing — and it is the same error this session had flagged on the other side an hour earlier, when it insisted on cmp over matching file lists. Easier to demand of someone else's work than to apply to a question that feels like a lookup.
The durable fix is the table at the top of this file: the guide row now says all three names, so the next person searching any one of them lands here.
Patterns and UI
From guide page 08.png:
- Pixel dissolve — the W's blocks, scattered. The signature motif; it is what the mark's own top-right corner is doing.
- Grid pattern — sparse dots on a faint rule grid.
- Gradients — Royal → Electric, and Royal → Deep.
- Primary button — Royal fill, white label, trailing arrow (
START BUILDING →). - Secondary button — outlined on Midnight, no fill.
The hero, as approved
DESIGN in White, THE NEXT BUILD in Royal, stacked, Gilroy ExtraBold, tight leading. Body beneath in Cloud. Primary button under that.
DESIGN THE NEXT BUILD
AI-powered design, creative systems, applications, automation, and interactive experiences built for what's next.
The colour split is doing the work: the verb is white and the object is brand. Setting the whole line in Royal would fail the contrast rule and lose the emphasis.
Icons
icon-rounded-512 is the monogram — white W on Midnight, rounded square. icon-royal-1024 is the favicon/app treatment — white W on Royal. Both carry the pixel dissolve off the W's top-right; that dissolve is the signature and is not decoration added later.
Voice
Gaming verbs, not consultancy nouns.
Use: build · craft · forge · create · iterate · upgrade · prototype · level up · deploy
Never: AI-powered as a generic modifier · intelligent workflows · digital transformation · leverage · synergy · solutions
⚠ The approved hero copy does open with "AI-powered design". That is a deliberate exception in the one place the company states what it does — not licence to sprinkle it through body copy, which is what the rule exists to prevent.
Lines that are approved
- DESIGN THE NEXT BUILD — the tagline
- BUILD. CREATE. ITERATE. DEPLOY. — the card
- Capability strip: PLAY · INTELLIGENCE · CRAFT · BUILD · DEPLOY, each with a line icon (gamepad, brain, pencil, cube, rocket), closing on the entity domain
hello@wootface.co— ⚠ the guide art says.com; the registered entity domain iswootface.co(docade15-DISTRIBUTION.md§2.4, work emailjj@wootface.co). Justin, 2026-08-19: "wootface.co." The guide is wrong where they disagree
The entity site, and the one thing that makes it more than a website
wootface.co is the company's front door, and as of 2026-08-28 it is still served out of docade's deployment from their src/app/wootface/, host-rewritten in their src/middleware.ts. That is being unwound — see docs/HANDOFF-WOOTFACE.md.
That page is what Apple's Organization verification will read — whenever enrollment happens. ⚠ CORRECTED 2026-08-28, hours after it was merged, and the correction is the more useful half. The sentence merged in said enrollment was "in flight". It is not, and never has been. docade's board is unambiguous — DIST1, "Enroll in the Apple Developer Program", ⬜ todo, deliberately not started, operator decision 2026-08-19: "enrollment starts a clock against a reviewable app, and there is no V1 yet." Verified against ~/Projects/docade/docs/10-ROADMAP.md:399 rather than taken on report.
The "in flight" line was written on 2026-08-19 — the same day the operator decided not to start — so it was false the day it was authored, and it sat in two files for nine days because a comment is nobody's job to re-read. This copy repeated it for about an hour.
It nearly cost something. On the strength of that one phrase this session put a real question to Justin — should the cutover wait for enrollment to complete? — built on an asymmetric-risk argument that was sound reasoning about a condition that does not exist. Retracted. A stale fact does not announce itself as stale; it arrives as a premise, and good reasoning on top of it produces a confident wrong answer. Which is why a fact this load-bearing gets checked at its source rather than inherited — and why the surviving rule below never needed it.
The origin, kept because it is the same lesson: Merged here 2026-08-28 from docade's assets/wootface/README.md, which was the only place it was written down — a hand-authored decision record sitting in a directory of generated output, which is excellent camouflage for losing one. docade's session caught it before the directory was deleted.
The rule the site's own header carries: every factual claim on it is a filed public record or shipped behavior. That is why there is no team size, no founding story, no address and no phone — not minimalism, evidence. The brand sits on top of that substance and did not replace it.
It binds whether or not anyone is reading. Two things the cutover still has to respect, both now standing on their own merits rather than on a deadline:
- The page stays reachable at
wootface.cothroughout — detach and re-attach in one sitting. Not because a verification is watching, but because a company's only public page should not be down. True this week and every week. - No claim gets added to it to fill space on a new deployment. A moved page that gains a founding story has broken the rule that made it verifiable.
The voxel wolf system is not generated by anything — see above. The only reference is the guide pages and docade's drafts, which come here as identity/_drafts/.
What the console changes when it renders a mark
An inlined SVG's ids are global to the HTML document. Two marks declaring the same gradient id on one page means every instance after the first paints in the first one's gradient. site/build-data.mjs namespaces every id per owner at build time — house-… here, <client>-… for a client. The artwork is untouched.
Minimum sizes
The house lockup is not used below 96px and the mark not below 24px, matching the rule docade's guide states explicitly. Asserted in scripts/check.mjs.