A set of polls tuned per surface. The estimate refreshes its live fields every ten seconds, the dashboard refreshes project data every ten, the contract hold polls every six, and the project-start hold polls the load API every six so the dashboard reveal feels near-instant.
Also called: do I have to resend the quote · live updates · customer sees my edits
Fix a number and it reaches the tab they already have open
A customer sitting on their quote while you corrected a price over the phone kept reading the old figure until they thought to refresh, and talking somebody through a refresh mid-call is an awkward way to close. The estimate re-reads its live fields about every ten seconds — payment stages, spec rows, colour picks and colour restrictions — so the correction lands on the page they already have open. No resend, no second link, and no explaining why they now hold two versions.
A warning you resolved comes off their screen too
When you withdraw a colour restriction or delete an override note, the page is told the entry is now empty rather than simply not told about it. Sending only what still exists left a resolved warning triangle stranded on the customer's quote after the reason for it was gone. A stale warning on the document you are asking somebody to sign costs more than the problem it was about.
Hold screens turn themselves into the real page
While a customer waits for you to start their build, the page checks every six seconds and swaps itself for the live dashboard within seconds of your click — same address, same bookmark, no second email to find. The agreement works the same way: while the contract is still with you they sit on a preparing-your-agreement screen that becomes the signing view the moment you send it. Each poll runs only in the state that needs it and stops as soon as the gate opens.
Build progress is never served from a cache
The dashboard asks for project data with caching switched off, because a cached answer defeats the entire point of a live view. A customer checking at nine on a Sunday night sees the checkpoint your crew ticked at four that afternoon, not a copy of the page from Thursday.
The refresh cannot undo a choice they just made
A colour the customer picked seconds ago is held against the next refresh instead of being reverted to the value the server had before the pick landed; the following pass reconciles it. Without that guard the poll took a fresh selection straight back off the page, which reads to the buyer as software that did not accept their answer.
- 1The estimate poll merges live payment stages, custom specs, raw answers, colours and colour restrictions
- 2Override and restriction blobs are always carried, even when empty, so cleared entries clear on screen
- 3The dashboard fetches with no-store, because a cached response defeats the point of a live view
- 4Hold polls only run in the state they are needed and stop as soon as the gate flips
- 5Gate flags refresh on the link record and flow through a merge effect to the render switch
A customer sitting on their quote while the builder corrected a price over the phone kept looking at the old number until they thought to refresh, which is an awkward thing to talk someone through mid-call. Open pages pick up changes within about ten seconds — estimate edits, colour decisions, build progress. Cleared items are pushed as explicitly cleared rather than simply left out, or a warning the builder had already resolved would linger on the customer's screen after it was gone.
- Resending a quote for every small correction
- Customers reading a stale document
- Cleared warnings and notes persisting on the customer's screen
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →