A GET returns { contractTotal, liveTotal, liveVersion, aligned, syncable }. The contract's own total is parsed out of its rendered body; the live total comes from the customer-visible estimate version. If they differ by 5 cents or more, a warning panel appears. A POST re-renders the whole contract from the live version using the same context builder the first render used.
Also called: contract and estimate disagree · two different totals · estimate changed after approval · reconcile contract price
- 1Review & Send loads the alignment on open.
- 2Mismatch renders: 'This contract says $X — the live estimate (vN) says $Y', with the explanation that the contract keeps what the customer approved while the estimate moved after that.
- 3A confirmation dialog warns that the whole contract regenerates and any manual edits are replaced.
- 4Confirm re-renders total, payment schedule and line items from the live version and restamps template id/version.
- 5Penny-level float drift is ignored: aligned when the difference is under $0.05.
Named after the customer it happened to, Jack Johnson): 'A contract deliberately freezes what the customer APPROVED. But builders keep revising after approval — Jack approved $37,828 and the estimate is now $34,016 — and until this route the two totals just sat on different screens disagreeing, with retyping the payment terms by hand as the only fix.'
- Two authoritative documents disagreeing with no way to reconcile
- Hand-retyping payment terms after a post-approval revision
- Nobody noticing the mismatch until the customer does
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 →