Org-scoped design storage with a session cache. The header carries an editable design name and a live Saving / Unsaved / Saved state; a two-second quiet period triggers a write; leaving with unsaved work warns. Entry links carry design, contact, card, name and from, and the exit resolves through one function.
Also called: autosave · saved designs · building designs · back to the contact
- 1listBuildingDesigns / saveBuildingDesign go through /api/db and write-through to memory plus localStorage, so Estimates and the builder never wait on a cold round-trip.
- 2Opening with ?design=<id> loads that design; opening with ?contact=<id> and no design finds that contact's design.
- 3Where leaving takes you is STATED by the caller via ?from=, never inferred: opportunity returns to the pipeline card, estimates returns to the Estimates surface with ?design=, and a person-scoped entry returns to that contact.
- 4The Back chevron and Finish resolve through the same function, so they can never disagree.
Where the builder sent you when you finished was guessed from whether a contact was attached — but an estimate carries a contact too, so opening a building from the estimates list and clicking finish offered to take you back to the opportunity and dropped you on the sales pipeline with nothing selected. A design now remembers what you opened it from and returns you there by name, to that estimate or that contact. Work saves itself a couple of seconds after you stop moving, so a customer conversation that ends abruptly does not cost the drawing.
- Unsaved work lost on a refresh.
- Designs floating free of the customer they were drawn for.
- Exiting a deep tool and losing the context you entered from.
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 →