The deck

Forty-nine pages and 495 frames, drawn from six design specs. It replaces two earlier decks that were not two halves of one product — they were two products.

There are two products — a paid homeowner account and a paid builder account — and at least one side always pays. Everybody else is an account-less person who works entirely through links.

That one fact dissolved the disagreement between the two decks this replaces. The builder app in one of them is the paid builder; the scoped link in the other is the account-less homeowner. Neither deck was wrong. Each drew one tier and neither knew there was another.

Under review
Who gets to choose?Interactive draft

Set decision availability by group, keep individual exceptions, and review what changes. Builder-connected and homeowner-managed perspectives share the same controls.

Everywhere
The state vocabulary14 frames

Eleven components, graded by how loudly the product should say a thing rather than by what caused it. There is no .error class and no red rung. Read this first: every other page consumes it.

The front door9 frames

Splash, log in, sign up per product, forgot, reset, verify, and the one honest chooser. No role picker, no plan picker, and no verification on the way in. More than half the people this product serves never see any of it.

The first hour — before there is anything to look at
The space conversation6 frames

How a binder tab gets filled in. You describe the kitchen once; what you said becomes the answers, and only what you left out gets asked.

Underneath, and home3 frames

A decision is the smallest unit anyone downstream transacts on. That one rule decides what gets a screen and what stays underneath it.

Onboarding30 frames

Thirteen screens become seven, and it ends by handing you the binder with your rooms already in it. The front door points here: the house and the spaces get named inside the product, not on the way in.

Priorities, four ways to answer6 frames

Proposed. The built Priorities chapter refuses to advance until a model fills every field a beat names, so two dealbreakers out of three is a wall. Writing stays the default and gains three doors beside it: speak it, pick it, or leave it.

Vision, derived4 frames

Sixteen aspirational picks made before anyone knows anything is the most load-bearing screen in onboarding today. This derives the same thing from what you actually said.

What bothers you3 frames

Every other question asks what you want, which gets you aspiration. This one asks about a house you have lived in, and complaints become constraints.

One question at a time6 frames

The slower door into a space, because some people will never talk to a coach. Blank is a real answer, and an answer travels to every room it fits.

First run7 frames

Day one is a binder with nothing in it. Nine rooms are already there because they came off the plan set, and not one of them has anything settled.

The homeowner — a paid account
Now7 frames

The landing surface, and the bands switch on how many people are deciding rather than on how many seats the account has. Most weeks it says there is nothing to do, and that is the product working.

Now, as a week17 frames

Proposed, not ruled: Now as a period with a bounded set inside it rather than one decision at a time. The hero stops being conditional, the ordering comes from workstream sort_order so it needs no dates at all, and the last two frames put the week on a desk. Read against Now, which is what ships.

The house8 frames

The binder. A tab does not change shape when the build ends, an undecided room renders undecided with no extra styling, and the lens is per-session because a mode that outlives the memory of setting it is the bug.

Ask4 frames

The coach answers from the record and hands off everything about site, price or schedule. Its refusal is the design — and the paid tier is a filter in front of the builder rather than a faster path to him.

Money7 frames

Three layers, both contract types, the held amendment, the decline, and the one bar in the whole product — against the loan, because a bank stops at $840,000 and a contract sum stops nothing.

The two of us13 frames

Tags are overlapping sets, not a split. The second seat's first run is the opposite problem from day one. And scope is shared while activity is not, which is a refusal rather than a gap.

What we have learned9 frames

The product keeps notes on what a household cares about. They are told first, can say no as easily as yes, see every note and where it came from, and can fix it, take a copy, stop it or delete it. We never sell it.

Account & being told32 frames

Five things are pushed and one of them cannot be turned off — because it is not really a notification, it is the moment the record says they heard.

Project settings5 frames

Approved for implementation: the project name, the homeowner's default decision notice, and the rule that a builder override can only make the runway longer. This is project-scoped; Account is not.

Delivery reconciliation18 frames

A builder package becomes a durable review before it becomes a choice. The route separates source handling, comparison, and one-decision regional repair so a newer package never rewrites an earlier record.

The last mile5 frames

The punch list and the warranty are one list read six months apart. The seam where the binder outliving the build is either true or it is marketing.

Option intake7 frames

How a priced candidate gets onto a decision. Three routes in, and what separates them is not the input but how far the price can be trusted: one you typed, one we read off a tag, one that arrived with a name and a date on it.

Comparing quotes3 frames

Three totals for the cabinet package that are not for the same job. Arranging them helps nobody; the screen's work is producing the fact they hide, which is that leveling one difference collapses two of the three to $600.

The builder — a paid account
The shell7 frames

Today · Jobs · Send, derived from what a builder is trying to do. Twenty screens in the deck this replaces carry no navigation at all. Today surfaces one thing or none and never ranks.

Jobs16 frames

Not a dashboard, because a list carrying portfolio metrics becomes the screen he checks instead of Today. At one job the list is skipped, a live quotes bug is drawn beside its fix, and a trade visit is put on the job, corrected, and refused while he has no signal.

Send10 frames

A register, not a launcher, and two-sided because things come back. A reply is the other half of a send rather than a message in a thread — and the unrouted queue is a row, not an error log.

His money5 frames

A change order carries a schedule impact beside its cost impact. Voiding one produces a reversal rather than an erasure. And his trust ledger answers did I tell them, and when.

People7 frames

Team and contacts behind one door. Roles are hats, thirteen capabilities gate actions, and there is no subs section — because sub is a relationship rather than a kind of user.

First run & setup9 frames

A name, a job, four files. Nobody is invited. And the lapse case none of the specs covered: a lapse never kills a link that is already out.

Offline & capture5 frames

One sentence and its consequences. The interesting case is the capture with nothing to attach to: held, not filed, asked once, and never discarded.

Your lists8 frames

What he offers on every job, kept once and published as revisions. A job takes a copy as a review and never reads the list live again — and the manual comes with it, kept, for the day the page it came from is gone.

No account — more than half the people served
The eight states9 frames

One template, seven copies. A live link is not an updating link: when the thing underneath moves, the page dies rather than re-rendering. Only one of the eight blocks.

The four types8 frames

Addressed by what is being said, never by who receives it. And no account needed is reassurance from an institution and a slight from a partner — the same sentence, twice.

The deferral3 frames

Not yet, and here is why. Asking does not close the decision, does not move the date, and does not tell the sender you decided — and the screen promises none of those.

The digest3 frames

It may state position, because nothing needs you is not trustworthy from something that will not say where you stand. And sending it is what constitutes the hearing.

A builder with none4 frames

The third tier combination, which nothing else in the fiction can show. His whole product is four texts over five weeks, drawn as such.

Consent, and STOP4 frames

The channel this product runs on is somebody else's phone. Two screens capture the permission to use it, one takes it away, and one tells the sender it is gone. Everything else in this run rests on these four.

Proving it was you3 frames

Three of the four homeowners have no account, so most signatures in this product are made through a link. A link alone asserts; a link plus a code identifies; and only one of those puts money on a contract.

Inside the binder — behind the homeowner's level-two doors
The record tabs55 frames

Money, People, Plans & drawings, Care. The six sections of the binder that are not rooms, and four different distances from shipping.

The time axis9 frames

The dated spine. Its placement was overturned by the specs and its design was not, which is why it is here and not in the archive.

Colors and the space10 frames

The drawing of a room is what the decisions settled in it look like. For that to work a color has to be told which surface it is on, and surface assignment is the missing link.

Deciding against the picture10 frames

The cabinet package being chosen. Not a form with a color field on it: the room, with everything already settled in it showing.

Decision controls20 frames

Who chooses, by group and by exception. Review existing choices before changing settings, and keep an unconfirmed specification separate from the recorded decision.

Setting the specs9 frames

Choosing is not answering. Picking an island with seating leaves four things unsaid that a cabinet maker cannot build without, and picking no island leaves none — so the questions belong to the option and they do not exist until one is chosen.

What a room collects9 frames

A photograph, a link, a paint chip and a sentence typed at eleven at night are four shapes of one act. And the one that has no room yet is the interesting case.

Selections and procurement21 frames

A choice is one act; what it turns into is four things arriving on four different days, and only one of them is late. Four frames on how you reach the rest, seven on what a house keeps, and fourteen in all that extend a frame the deck already draws.

The handoff5 frames

You chose something. Somebody installed something. One day you have to look after whatever is actually in the wall. There is no as-built column yet, and this says what it would take.

Questions to ask4 frames

The hard part is not sending the message. It is knowing what to ask and remembering what he said, and a reply is an answer rather than a message.

The proof behind a decision19 frames

A settled decision is a promise. Proof is the part that says somebody checked it, and the homeowner is who it is for. The server was built first; this is the design it never got.

Reference — not screens
The components47 components

Every component in the library, drawn. Generated from _ds/components.json, so it cannot claim something the specification does not say, and every specimen came out of a real page rather than being written for the gallery.

The navigation map103 nodes

How the screens reach each other, in four lanes. Click a node to open the frame it stands for.

How to read a frame

Everything inside the phone is the product. Everything outside it — the label above, the notes below — is commentary, and that convention is absolute: meta never appears as app chrome. The rung badge above a frame says which volume the state is at, and it is a drawing aid rather than something a user would ever see.

A frame is allowed to run past the bottom of the phone and nothing is compressed to fit. A screen that shows a few roomy cards and lets you scroll for the rest is more honest than one that crushes eight in.

Two rules the whole set is built on

The backend is not a constraint on this design. There are no production accounts; everything is test data. Where a drawing and a table disagree, the table loses.

_ds/FICTION.md is the arbiter and it is binding. Names, dates, dollar figures, contract types, capability counts. One house, one builder, one clock — and if the story needs something the file does not have, it is added there first and then drawn.

Where this came from

Six design documents in docs/superpowers/specs/ dated 2026-08-03: identity and the link channel, money and contract, the state and failure vocabulary, the homeowner app, the builder app, and the account-less surfaces. Every numbered item in their five what has to be drawn lists has a frame in here.