A register, not a launcher. What is out, what came back, and what has been waiting too long — because a builder today has no way to see everything he is waiting on in one place, and that is the commonest reason a decision goes quiet.
And they mean opposite things. Replaced is a live send that has a newer sibling — Marcus can still read the old spec and will be pointed forward. Superseded is a send nobody should act on. A register showing one badge for both would tell him a working link was dead.
Concrete, about a thing he remembers, and it accumulates into a felt sense without being tallied at him. There is no median on this screen, no p90 and no trend — those are the proof of the pitch, and the audience for a proof-of-pitch is the company making it.
Sam and Nora have the app, Tom and Ben and Ana do not, and the four rows are identical in shape. If the tier leaked into this screen the first thing he would ask is whether he should tell them to sign up, and the no-upsell rule would die here before anywhere else.
Ask him which, or file it against one yourself.
Not a message in a thread. There is no inbox and messages are never a door of their own — because filed as correspondence, an answer stops being a fact about the house and becomes a chat bubble that is gone in a week.
And it is the whole difference between a reply path that degrades and one that lies. We ask rather than guess, and the asking is a row in this register rather than a support ticket.
Open, not answered and not no reply. The decision is still live, the clock is still running, and he now knows why — and the time-to-decision clock has deliberately not stopped, because a deferral is not an answer.
link-decide is the output. Started from the decision, not from this door.Same option shape, same order, same figures. A composer that looks nothing like the page it produces is how a builder sends something he has not pictured — and preview what Tom will see is the second half of the same idea.
The cabinet shop's, not one the product suggested. Every deadline in this system belongs to something in the physical world, and a screen that offered in 3 days / in a week would be inventing urgency and charging his client for it.
Not a day earlier. That is the make-ready ladder, and it is the model for every send here: this composer opened by itself the morning the shop confirmed its lead times, prefilled from the quotes he already had.
Four out, three back, one we cannot place.
Ask him which one he means.
Which is why Send is her surface even though Today is still the door. A builder without this screen finds out a decision went quiet when somebody phones him about it.
And the two she does not are visible and inert rather than absent, on the screen where she would reach for one. Absence teaches nothing and reads as broken; inert with the reason teaches the permission model once.
Her morning has real work on it and she can do all of it. A product that gave the highest-adoption daily seat a read-only view of somebody else's job would be adopted by nobody in it.
Tom Beckett · time and materials · six weeks in
Two decisions open.
Rot found when the old base cabinet came out. Nothing goes back in until it's replaced.
SendSent Monday. Tom hasn't opened it.
/jobs/decision/:id/compose is proposed, not decided — every builder route today hangs off /jobs, and there is no decision-send route in the shell at all.
An approval is permission he chooses to ask for. A prefilled figure is a yes nobody priced — Q284's whole worry.
With the switch on and nothing typed, there is no ask to send. Turning the switch off sends a plain question.
“I approve up to $3,300 for Subfloor under the sink. Anything above that, I have not approved.”
No free-form wording can become a larger approval than the ceiling buys. approval_evidence keeps this sentence forever as the record of Tom's act, so it is in Tom's voice.
Up to $3,300 and anything above that — so when it comes in at $3,900, 13 frame 2's overrun row has a sentence to point at.
31 frame 1's page, carrying the ceiling. Spent by POST /l/:token/approve, which has read these terms since Track W.“Tom, the subfloor under the sink is rotted through. I need your OK to replace it before the cabinets go back.”
“I approve up to $3,300 for Subfloor under the sink. Anything above that, I have not approved.”
Approve up to $3,300
Dave can go ahead
Not yet
Tell Dave why
Call me
Easier to sort out on the phone
A request for permission is still a choice, so it keeps 31's three-option shape, with Call me as the way out.
Every ceiling fires sign_or_approve to every owner seat, not only ceilings over the contract line. Tom has no account, so for him the text is the whole of it.
30 frame 6).“I approve up to $3,300 for Subfloor under the sink. Anything above that, I have not approved.”
asks_freeze_approval refuses a change to a sent ask. The screen draws no pencil because there is no write it could make.
Q284's review moved the notice to the branch that leaves the ask sent. A resend with a corrected number is the first notice, so the lock screen never shows a withdrawn figure.
A reply is the other half of a send. Filed as correspondence it becomes a chat bubble that is gone in a week, and the thing it answered goes back to looking unanswered. One register, two directions, paired — and no inbox anywhere in the product.
Time-to-decision is recorded always. Per item it appears on the row: answered in four hours. Per job it appears on the job, because a job that is slow to answer is a fact about that job. The median and p90 across jobs get no screen — not because they are not his, but because rendering them daily turns a measurement into a score, and a score is a thing to manage. He gets them if he asks. What he does not get is a number waiting for him every morning next to the one thing that actually needed him.
A compose button on the door. Every send starts from an object — a decision, a change order, a date that needs holding — and lands here. A blank composer reachable from nowhere is a form asking a builder to remember what he was going to say.
The digest control. It is a send and it appears in this register, but the cadence setting lives with setup — 25-first-run-and-setup — because it is a property of the job and not of a message.