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.
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.
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.
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.
A decision is the smallest unit anyone downstream transacts on. That one rule decides what gets a screen and what stays underneath it.
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.
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.
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.
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.
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.
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 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.
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 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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
One sentence and its consequences. The interesting case is the capture with nothing to attach to: held, not filed, asked once, and never discarded.
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.
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.
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.
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.
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.
The third tier combination, which nothing else in the fiction can show. His whole product is four texts over five weeks, drawn as such.
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.
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.
Money, People, Plans & drawings, Care. The six sections of the binder that are not rooms, and four different distances from shipping.
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.
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.
The cabinet package being chosen. Not a form with a color field on it: the room, with everything already settled in it showing.
Who chooses, by group and by exception. Review existing choices before changing settings, and keep an unconfirmed specification separate from the recorded decision.
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.
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.
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.
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.
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.
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.
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.
How the screens reach each other, in four lanes. Click a node to open the frame it stands for.
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.
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.
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.