HouseChalk turns them into the next clear thing, while the answer can still be changed without opening a wall.
Four chapters, one data contract. Desktop gains an editorial context rail and a real workspace; mobile keeps the same order with safe-area actions. Rooms become a grouped catalog with a collapsed review instead of a separate review screen.
HouseChalk turns them into the next clear thing, while the answer can still be changed without opening a wall.
That is 3 bedrooms, 4 closets, 2 en-suites, 1 shared bath and a powder room. Nobody had to count the closets.
A closet added here is a room of the house like any other, so it arrives already called “Closet 1” — there is nowhere in this shape to draw a field for it, and a name owed for work nobody can see is a Continue nobody can press.
Natural light and room to gather matter most. I want the kitchen connected to the family room...
Natural light matters in the shared rooms.
The kitchen should stay connected to gathering space.
A separate quiet work area matters.
Nothing is sent until you finish Priorities.
The ZIP code helps HouseChalk ask the right regional questions.
Natural light and room to gather matter most...
Natural light matters in the shared rooms.
The kitchen should stay connected to gathering space.
A separate quiet work area matters.
The room catalog did not load. Check the connection and try again.
Your setup
Natural light and room to gather
Saved binder
Quiet rooms
Payment is still confirming. Checking again will not open another Checkout.
Rooms, answers and priorities saved.




Somebody else is deliberate and it is the hardest line on the frame. A person being told they may not finish a house is being told something about another person's account, and the deck has no precedent for how much of that to say. A name here would leak an account relationship to somebody who has demonstrably not been given one. Q159 ruled that silence right on 2026-09-04: naming the setter would tell somebody the identity of an account holder on the strength of their having been refused by it, which inverts the refusal into a disclosure. That a reader may take it for a bug is the smaller cost, and this frame answers it with a way forward rather than with a name.
The create path takes its account from the caller's own /me and lands them an owner seat in the same transaction, so nobody can be refused a house they just made. This state exists exactly once: somebody picked up a session that was not theirs. It is a dead end rather than a failure, so it is drawn as a screen with two ways forward and no error tone.
Back to my houses clears the session and pushes the chooser, which the router resolves onward. For somebody with no other house that is the second phone, and start a house there opens a fresh session against their own account, so they cannot be refused twice. Drawing only the first phone would have left the escape hatch pointing at a screen nobody had looked at.
This redraw is intentionally awaiting review. Once approved, the flow map, router, localization, Flutter screens, tests and design gates move together.
/no-house was a second door built beside this one because the router needed somewhere to put an empty list, and it grew a CTA into /onboarding until it was frame 1 with the good part removed. A homeowner who has just paid should meet the product, not a fork about who is setting it up. Two lines are added and the other screen goes away. Q46.HouseChalk turns them into the next clear thing, while the answer can still be changed without opening a wall.
Every draft of /no-house was an attempt to make an absence readable: a title about nothing being here, then two rows explaining who might fix that. Meanwhile the screen one route along already answers the same moment properly, because it was designed rather than derived: it says what the product does, how long it takes, what the four steps are, and that nothing is sent until the end. A person who has just paid for a build should meet that. router.dart:601 already accepts /onboarding as a destination when the list is empty, so the branch below it changes one string.
router.dart:523 says “it is the screen somebody sits on for days while a builder gets round to adding them, so resume is its most common event by a distance.” True, and it is why her answer must be present. It is not why she needs a screen of her own. She needs one sentence saying there is nothing to do and a way to say it is taking too long, which is the rail note. A whole screen, or an equal row in a fork, tells the paying majority to stop and work out which one they are.
The two-row version asked her to classify herself, and no field on /me can confirm the answer either way, so the screen could not even tell her when she got it wrong. Notion, Hex and Campsite all draw a fork here, but theirs is answerable: you have been invited to 1 workspace, with the invitation on screen. We have no invitation to show. Ours was a fork made of two sentences, which is a quiz.
The identity and the way out, top right, because “am I on the wrong account?” is the real question behind sign-out and the address is the answer. And the rail note. Nothing else on this frame moves, which is the point: frame 1 was already right.
Nothing is sent until you finish Priorities.
Nothing is sent until you finish Priorities.
There is nothing to do here. It appears the moment they add you.
On a phone the waiting note cannot sit above the four steps without becoming the screen. It goes to the foot, in .ob-mobile-guidance — the same block this page already uses for the aside that answers a question the reader may not have — where the person who is genuinely stuck will scroll to find it and the person who is not will never have to read it.
A homeowner waiting on a builder can still set up her own house, and occasionally should: the builder’s house and hers are different projects. So the CTA is never disabled and never hidden. It is just no longer the only thing on the screen that speaks to her.
Everything you said is in it. Start wherever you like.
Twenty iOS completion screens on Mobbin (2026-09-12): StubHub, Meta AI, Monzo, Duolingo, Noom, Runna, Liven, Rocket Money, Trust Wallet, Headway and ten more. Every one is its own full-bleed screen, none is a beat inside the flow, and all twenty carry a mark above a short title. The title is two to six words — “Setup complete”, “All set!”, “That’s a wrap!” — over at most one supporting line, and one full-width button. That is the shape here.
Noom says “Great job, Sam!”, Runna “Welcome to Premium, Alex”, Liven “Alex Smith, your personalized program is ready!” Four of the twenty personalize and it is the strongest thing they do. Ours is better than a first name: she just spent three minutes naming this house, so the title says it back to her. And a house, not a workspace.
Liven is the closest analog: name, “your personalized program is ready”, then a compact list of what the reader gets. Ours lists what she gave, drawn from the answers rather than from our field names — nine rooms, the stage, the five words. It is the receipt for three minutes of work, and it is why this beat can be a screen rather than a toast.
“Everything you named is in the binder now. When two options both look right later, this is what HouseChalk checks first.” is 25 words explaining the mechanism at the moment she least wants it. The card above already proves the first half. What is left is the invitation: “Start wherever you like.”
Everything you said is in it. Start wherever you like.
Drawn first as a 64px round filled with --success-surface, which check-design-package-parity refused. It was right to: every status ground this system allows is 32px or smaller — .ic.done is a 32px tile, and its own sheet says “a 32px BOX IS A MARK, NOT A PANEL” — so a 64px one is a panel wearing a mark’s color. colors-status.card.html allows the accent as a glyph with no ground, which is what the twenty are drawing anyway: an illustration above a title, not a status chip.
The reasoning was that a seal above the title pushes the receipt below the fold and the receipt is why she believes the title, so the seal should be the first thing to go. Measured in the built screen, it buys nothing. At 320×568 with all three rows the card ends 172px below the fold with the seal already dropped — the seal is 64 of those 172, so dropping it does not clear the fold on the one size it was for. At 390×844 and 600×900 the whole column fits with room to spare, so a row-count rule would only have taken the mark away where it was never in the way. The right-hand phone stays here as the record of a thing that was tried; the mark is on the built screen at every size, and the column scrolls like every other.
Open the binder names the thing she gets. Continue names our flow control, and it is what the screen says today. Mobbin’s twenty are unanimous on the register even where they disagree on the word: Done, Onward, Let’s Go!, Get Started — every one is about arriving, none is about proceeding.
Everything you told us is in its binder.
Frames 1 to 25 use the rail and work column; this one uses the design canvas’s Flow moments language, the one Rooms from plans and Waypoint are drawn in. One moment on the screen, a 42px regular title with the named thing in bold, a section head at --text-lg 800, white cards on the page ground, one pill. The top bar keeps the mark and drops the progress dots, Back and Finish later: Build has committed, so there is nothing to step back into and nothing left to finish later.
Kept: the house named in the title, a receipt of what was built, and Open the binder as the one action. Dropped: the check glyph (no Direction A artboard draws one), the stage row and the five feeling words, which are answers rather than the house. The receipt is now the rooms as Build wrote them, with the closet and bath nested under the bedroom they open off, which is the same shape Rooms from plans asked her to confirm.
No chevrons and no steppers. Waypoint rows tap to change because a waypoint is a question; this is an arrival, and a room changed from here would be a change with no binder behind it to land in. Every room is one tap away inside the binder.
Everything you told us is in its binder.
Everything you told us is in its binder.
Build writes a closet and an en-suite as zones of their own, linked to the bedroom, so 7 rooms counts them and the line under it says which two are nested. Counting only the top level (5) would make the receipt disagree with the binder she is about to open.
With plans, the rooms were read from a drawing and the line says where the drawing went. With the usual rooms there is no drawing to file, and an empty No plans yet row would read as something she still owes on the one screen that exists to say she owes nothing.
24 and 25 were drawn when billing could follow setup (frame 18). In this order she paid before the first question, so the arrival carries no plan, price, receipt or trial clock.