The brand notes in business-profile.json are already a typographic system in disguise — “letter from Alex,” “parcel and bookplate vernacular,” “gift-tag CTA,” “candor receives a distinct type treatment.” That last one is a hierarchy level somebody already wrote down without calling it that.
Source / Design Dojo
“Editorial Type Systems”
2026-07-30
The video's core move: classify pages by the reader's behaviour, not their subject. Reading pages are scanned linearly. Consultation pages are scanned non-linearly for one fact. Display pages communicate through how they look rather than what they say. Then mix them deliberately on one page, and break the system exactly once.
Three reasons that lands harder here than on most sites:
The brand voice is literary, personal, philosophical, honest. A literary voice needs a reading topology to live in. A gift-concierge site built as a landing page has nowhere to put a letter — and the letter is the product demo.A concierge who can't write a paragraph isn't a concierge
“Candor receives a distinct type treatment” is already a hierarchy-level specification. The honesty about gifting being weird is the differentiator, so it gets its own level (L4) rather than a bolded sentence inside body copy.Named in business-profile.json, unbuilt
Pricing, lead time, service area, capacity, and corporate scope are all still owner-gated, and approved-claims.json is empty. Most designs treat that as a hole to hide. A type system treats it as a level — a designed state that reads as reticence rather than absence.L7 below. This is the useful idea in this file.
Ticket 002 is still open — Dusk, Correspondence, and Night Letter have not been chosen. Nothing here picks one. The palette is the house default precisely because it's the least interesting option: swap the colour tokens and every rule, level, type step, and spacing step still holds. That's the test of a system versus a style. This file is deliberately not a fourth candidate.
Elements are the ingredients. Rules are the recipe. Everything after this panel obeys it.
The letter is always flush left, ragged right, 60ch, first person, signed. Never centred, never split into columns.Letters aren't magazines
Candor lines are Fraunces italic at T7 with a 3px accent bar at the left. One per room, maximum.Two candid asides is a personality, not a position
An unconfirmed fact is set in mono with the dotted gate rule. Never replaced with a plausible number, an “e.g.,” or a range.The AGENTS.md boundary, expressed typographically
Bookplate blocks (who, where, since) sit in the outer margin, mono, uppercase. Never inside the letter column.Provenance is consulted, not read
Exactly one call to action per room, always the gift tag, always the same words.A concierge asks once
Room names never contain “services,” “solutions,” or “offerings.” If a room is designed as a room, it reads as one.Don't underestimate the viewer
The gift tag is the only element permitted a filled background. Everything else is rules, type, and paper.Scarcity of fill is what makes the tag land
Break the system once, at the tag: centred, filled, punched. Centring is forbidden everywhere else, which is exactly what makes it work there.The break needs a system to break
| Token | Job | px |
|---|---|---|
| --t1 | Floor. Folio, bookplate, micro-label | 12 |
| --t2 | Dense consultation. Gate, occasions list | 13 |
| --t3 | Secondary prose. Margin values, notes | 14 |
| --t4 | Scope values, table rows | 16 |
| --t5 | Letter. Everything derives from here | 17 |
| --t6 | Room name, section head | 23 |
| --t7 | Candor line | 26 / 30 |
| --t8 | Door | 34 / 40 |
| --t9 | Masthead | 44 / 62 |
| Token | Job | px |
|---|---|---|
| --s1 | Intra — a label to its own value | 8 |
| --s2 | Sibling — items inside one group | 14 |
| --s3 | Group — group to group | 24 |
| --s4 | Block — block to block | 40 |
| --s5 | Major — component to component | 64 |
| --s6 | Section — section to section | 104 |
v1 specified type and eyeballed rhythm: 35 distinct vertical spacing values across the file. Every gap looked defensible alone; across a long page they stopped meaning anything, because distance no longer encoded relatedness. Hierarchy survives being eyeballed. Rhythm doesn't — it only fails cumulatively, which is why it's the easier one to get wrong and the harder one to spot.
v2 has six spacing steps with one job each, nine fixed type steps, and every vertical gap produced by a .flow-N container rather than by an element's own margin. No clamp() values, no inline styles. The display band steps up once at 768px; the reading band never changes size at all.
Optical correction is the one deliberate break: display type's line box under-runs its visual mass, so anything following a T8 or T9 heading takes one step less than the scale suggests. Declared once, applies everywhere.
The video's warning: don't make every level “the same font, smaller.” Each rung changes at least two of face, slope, case, tracking, rule, position, colour.
The body is the foundation — even colour down the column, no rivers, no orphans, first person throughout. Every other level is measured against this one.
Most people don't need a better gift. They need to stop dreading the decision.
Alex — sole operator
Working since not yet set
Enquiries by letter
Lead time is not yet set, and so is the fee.
Alex the Gift Concierge · No. 01
Three faces, one accent, eight rules — four different reading behaviours. All copy is placeholder and every business fact is gated.
Alex the Gift Concierge
You already know the person. You just don't trust yourself to pick. That's the whole job.
One person
No catalogue
Enquiries
by letter
Terms
not yet published
Behaviour — received, not read. No navigation, no proof points, no numbers. The third plate states the gate as a fact about the business rather than an omission.
Room 01 / 03 · Personal
You write and tell me who it's for. Not what they like — who they are, and what you're actually trying to say to them. Most people find the second part harder, which is usually the real problem.
Then I go and think about it, and come back with a small number of options and the reasoning behind each one. You pick, or you tell me they're all wrong, which is useful and not a failure.
Most people don't need a better gift. They need to stop dreading the decision.
How long that takes and what it costs are not yet set — I'd rather say so plainly than publish a number I'd have to walk back. If you write, I'll tell you both before you commit to anything.
— Alex
Behaviour — the column is read, the margin is consulted. Four gates sit in the margin without the page looking broken, because the gate is a level rather than an error.
The page a nervous buyer actually wants, and the one a concierge site almost never has. It answers questions in the order they get asked, and it doesn't pretend the open ones are closed.
| Question | Answer | Status |
|---|---|---|
| Who does the work? | Alex. One person, start to finish. | Confirmed |
| What do I actually get? | Consultative gift finding and advising. | Confirmed |
| How do I start? | You write. Everything begins with a letter. | Confirmed |
| What does it cost? | not yet set | Owner gate |
| How long does it take? | not yet set | Owner gate |
| Where do you work? | not yet set | Owner gate |
| Do you take corporate work? | not yet set | Owner gate |
| Is there a minimum budget? | not yet set | Owner gate |
| Do you buy and ship it? | not yet set | Owner gate |
The gate is the point. Six of nine rows are unresolved, and the page still reads as composed rather than unfinished — because the unresolved state has a designed treatment instead of being blank, guessed, or omitted. When Alex confirms a value it replaces the gate in place and the dotted rule disappears; the layout does not move, because the row height comes from a spacing step rather than from the content. That's what makes this a system rather than a mockup — it is legible at every stage of being filled in, including this one.
Tell me who it's for and what you're trying to say. I'll tell you the fee and the timeline before you commit to anything.
Behaviour — the only centred, filled, punched element in the system. Rule 08. It lands because nothing in the three previous spreads was allowed to do any of those three things.
An unconfirmed field is null today, and null renders as nothing. Give it an explicit rendered state so the generator can emit L7 instead of silently dropping the row.
The generator already knows which fields are unconfirmed. Teach it to render the gate rather than omit the field, and the noindex preview becomes honestly showable to Alex.
Dusk / Correspondence / Night Letter is a decision about colour, texture, and geometry. The nine levels, eight rules, and fifteen scale steps are separable, and could be agreed with Alex before the register is picked.
The wireframe has personal, ongoing, and business rooms — all reading topology. The scope sheet is a fourth room type, and the one that answers a nervous buyer's real questions.
“Candor receives a distinct type treatment” sits in business-profile.json as a visual note. Promote it to a named level with a rule, so it can't drift into ordinary bold text.
An ADR beside ADR-0003 stating the nine type steps and six spacing steps are register-independent, so a later register decision can't quietly rewrite the hierarchy.
It asserts no fee, lead time, service area, capacity, or corporate scope. It creates no approved claims. It picks no register. It is not deployable and carries noindex. Nothing here is showable to Alex as settled — it's a proposal about structure, to be reviewed alongside ticket 002 rather than instead of it.