1import{c as t,j as e}from"./personaKnowledge-Wxu6iTGA.js";import{P as r,S as n,C as i,l as s,c as d}from"./website-BRH-I_IC.js";import{b as h,f as l,F as c,a as u,c as m,g as p,h as y,d as v,e as g,R as w}from"./FeatureSections-f7NYRkDw.js";import{H as a,F as f}from"./history-CRSzS8l0.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const b=t("ChartLine",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]);/** 7 * @license lucide-react v0.462.0 - ISC 8 * 9 * This source code is licensed under the ISC license. 10 * See the LICENSE file in the root directory of this source tree. 11 */const x=t("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** 12 * @license lucide-react v0.462.0 - ISC 13 * 14 * This source code is licensed under the ISC license. 15 * See the LICENSE file in the root directory of this source tree. 16 */const k=t("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** 17 * @license lucide-react v0.462.0 - ISC 18 * 19 * This source code is licensed under the ISC license. 20 * See the LICENSE file in the root directory of this source tree. 21 */const j=t("Undo2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),o=[{q:"Does the platform keep a full history of every estimate version?",a:"Yes. Every generated, saved or restored version of a project is stored with its own totals snapshot, so you can open any point in the project timeline and see exactly what the number was and what it was made of."},{q:"Can I see the reason a price changed between two versions?",a:"Yes. Each version-to-version movement is attributed to a driver: a scope change (a card turned on or off), a quantity change, an allowance or finish-level change, a markup change, a discount change, or a catalog repricing. Allowance and markup movements name the specific item and the old and new values."},{q:"Can I restore an earlier version of an estimate?",a:"Yes. Any earlier version can be restored in one action. The restore replays that versionâs selections, quantities, allowances and profitability configuration, and the restore itself is recorded as an audited event so the history stays continuous."},{q:"Will restoring an old version quietly change my total?",a:"No. A restored project must reproduce the persisted total for that version. The platform enforces a total-stability rule: loading, restoring or regenerating a project never moves the number on its own â only a real user or admin edit does."},{q:"Can I export the change history?",a:"Yes. The history table can be sorted, filtered by driver and card, limited to changes above a dollar threshold, and exported to CSV for your own records or for a client conversation."}],E=()=>e.jsxs(r,{children:[e.jsx(n,{title:"Estimate Change History & Audit Trail | Home Estimator AI",description:"See every estimate version, the exact dollar delta, and the named reason behind each price change â plus one-click restore to any earlier version.",path:"/features/estimate-history",jsonLd:[h([{name:"Home",path:"/"},{name:"Features",path:"/features"},{name:"Estimate History",path:"/features/estimate-history"}]),l(o)]}),e.jsx(c,{eyebrow:"Change history & audit trail",eyebrowIcon:a,title:"Every price change,",highlight:"explained in plain English",subtitle:"Most estimating tools show you today's number. Home Estimator AI shows you every number this project has ever had, the exact dollar movement between them, and the specific reason each movement happened â so you never have to guess who changed what, or defend a total you can't explain."}),e.jsxs(u,{heading:"âWhy is this $11,000 different from last week?â",children:[e.jsx("p",{children:"That question kills trust â with your client, and inside your own office. It usually gets answered with a shrug, a rebuild in Excel, or a discount to make the conversation stop."}),e.jsx("p",{children:"The project history panel answers it in seconds. Pick two versions, and you get the total movement broken down by card, by driver, and down to the individual line item that moved â with the previous value, the new value, and the reason chip that explains it."})]}),e.jsx(m,{heading:"What the history panel gives you",subheading:"Built on the same backend numbers that produce your proposal â not a separate log that can drift out of sync.",items:[{icon:i,title:"Full version timeline",desc:"Every generated, saved and restored version with its own totals snapshot, timestamped and attributed to the person who created it."},{icon:k,title:"Named reason per change",desc:"Scope change, quantity change, allowance or finish change, markup change, discount change, or catalog repricing â each movement carries its driver."},{icon:b,title:"Visual analytics",desc:"Total-over-time chart, per-version delta chart, and a category breakdown showing how much came from scope versus finishes versus markup."},{icon:s,title:"Card and line-item drill-down",desc:"Expand a version to see which cards moved, then expand a card to see the exact line items and allowance rows behind the delta."},{icon:x,title:"Filters that find the real cause",desc:"Filter by driver, by side (addition or remodel), by card, or hide everything under a dollar threshold so only material movements remain."},{icon:j,title:"One-click restore",desc:"Roll a project back to any earlier version. The restore replays that version exactly and is itself recorded in the history."},{icon:f,title:"CSV export",desc:"Export the full change log for your records, a lender, a client conversation, or a post-mortem on a job that got away."},{icon:d,title:"Role-aware detail",desc:"Owners and clients see clean explanations. Admins and super admins see the full diagnostic layer, including anything the system flags for review."},{icon:a,title:"Nothing changes silently",desc:"A persisted total cannot move on load, restore or regenerate. If a number moves, an action moved it â and that action is in the log."}]}),e.jsx(p,{heading:"Reason chips you'll actually see",subheading:"Every version-to-version delta resolves to one of these drivers, with the specific item named.",caption:"Change drivers tracked in the project history panel",columns:["Driver","What it means","What the log shows"],rows:[["Scope change","A card or scope item was turned on or off.","Which card, which side, and the dollar value added or removed."],["Quantity change","An area, count or linear-foot input moved.","The field, the old and new quantity, and the resulting delta."],["Allowance / finish change","A finish tier or allowance override was edited.","The item, the tier before and after, and the labor and material dollars behind it."],["Markup change","Overhead, wastage or net profit was changed by an authorized admin or rule.","Who changed it, when, the reason, and the dollar impact."],["Discount change","A volume, gut-to-studs or manual discount was applied or removed.","The discount type and the dollars it moved."],["Catalog repricing","A global, company or state-level price update touched items in this project.","The price-change run that caused it, so it can be reviewed or reverted."]]}),e.jsx(y,{heading:"Restore, without the fear",items:["Restore any earlier version of a project in one action â selections, quantities, allowances and profitability together.","The restored total must match the total that version was saved with; a mismatch is treated as an error, not rounded away.","The restore is written into the history itself, so the timeline never has a hole in it.","Save-As clones a project from the source version with row-count verification, so a copy is a real copy â not a partial one.","Catalog price updates apply to future projects only, so restoring an old job does not silently reprice it.","Every restore, clone and price change is attributable to a person and a reason."]}),e.jsx(v,{heading:"Change history: common questions",items:o}),e.jsx(g,{heading:"See your own numbers explained",body:"Bring a project you argued about. We'll show you the version timeline, the reason behind every dollar of movement, and how a one-click restore behaves."}),e.jsx(w,{current:"history"})]});
21export{E as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.