step 01entry
An empty account that still says what it is for
Most estimators met the tool for the first time here. The screen states the promise in one line and offers exactly one action, so nobody has to guess where an estimate begins.
handymanMine — layout, copy, CTA hierarchy, and the Angular build of the page.
psychologyWhy — a zero state that shows only an empty table teaches nothing; a stated promise plus one button teaches the mental model at a glance.
reportPain — first-run confusion in a tool replacing a spreadsheet people already trust.
step 02triage
The canvas: lifecycle as tabs, decisions on the card face
Estimation canvas, In progress and Published are the states an estimate actually moves through, so they became the navigation. Each card carries status, total cost, location, area and category — enough to triage without opening anything.
handymanMine — the card system, status and category chips, tab model, search scope, and the New-estimation tile that always leads the grid.
psychologyWhy — cost managers scan for one project among dozens; putting the money on the cover removes an open-and-go-back loop.
check_circleResult — one screen answers “what is running, what is done, what did it come to”.
step 03two doors
A second way in, for people who arrive with a sentence
The structured form stays for estimators who hold every parameter. Alongside it, a conversational entry with a seeded suggestion showing exactly what a good first message looks like, and an attachment control for a brief or drawing set.
handymanMine — the decision to keep both doors, the composer layout, and the suggestion copy.
psychologyWhy — a blank chat box in an enterprise tool is a test users can fail. One realistic example sets the register — project, category, city, GFA — without a tutorial.
reportPain — the form demanded numbers people were still negotiating at concept stage.
step 04evidence
The AI proposes, the estimator disposes
Rather than interrogating the user, the assistant states its assumptions — category defaults to Silver, say — and invites a correction. It then surfaces comparable past projects with their area and a match score, and lets the estimator pick one, several, or ask for a blended benchmark.
handymanMine — the conversation script, the comparable-project card, multi-select behaviour, and the min/max/average step that follows.
psychologyWhy — a cost figure with no visible provenance gets rejected in review. Showing which projects it came from, and how close they are, makes the number arguable — and therefore usable.
check_circleResult — assembling comparables, previously manual, happens inside the conversation.
step 05density
Sixteen cost heads, four area bases, one calm table
Cost per GFA, BUA, GEA and NSA against every work package, with subtotals and preliminaries pinned to the bottom so the headline never scrolls away. A depth rail moves between L1, L2 and L3 in place. The assistant stays docked, so refining a number never means leaving the estimate.
handymanMine — the table grid and type scale, the pinned totals bar, the depth rail, the header cost summary, and the docked-chat layout.
psychologyWhy — a modal assistant forces a choice between reading and asking. Docking it keeps cause and effect on one screen.
reportPain — the spreadsheet this replaced needed scrolling in both axes to answer one question.
step 06provenance
“More info” expands the assumptions, not another page
Areas and efficiencies, unit and key counts, basement levels, façade solid-to-glazed ratio, electrical and cooling loads — the parameters the estimate rests on, expanded in place over the table, with the source document one click away.
handymanMine — choosing what belongs in the sheet, its two-column reading order, and the expand-in-place interaction.
psychologyWhy — the first question in every review is “what did you assume?”. Answering it without a navigation event keeps the reviewer in context.
check_circleResult — the estimate can be defended from the screen it lives on.
step 07consequence
Change one rate, watch exactly what moved
“Change the concrete rate to 375” is a sentence, not a form. The revision returns as V2 with a delta chip on the affected row, a revised total carrying its own difference, and project factors — soil condition and the rest — offered for the next adjustment.
handymanMine — the versioning model, the delta chip and where it sits, the V-card in chat, and the factor controls.
psychologyWhy — sensitivity analysis fails when the effect is invisible. Marking the row that changed — not just the total — turns an opaque recalculation into a reviewable edit.
check_circleResult — versions are addressable: a reviewer can point at V2 and say why.
step 08later addition
Cost journey — version history you can read as a curve
A feature introduced after the first release: every version plotted over time, with a summary stating the initial estimate, the current one, the number of stages and the total variance. Each point on the curve opens the change that caused it — “concrete rate updated from 357 to 375”.
handymanMine — proposing the feature off review feedback, then designing the summary bar, the curve, the point markers and the change tooltip.
psychologyWhy — teams kept asking “why is it higher than last month?”. A curve answers where it moved; the tooltip answers who moved it and how much.
check_circleResult — the estimate carries its own audit trail into the review meeting.
step 09the corpus
Historical projects, L1 through L4
The library estimates are matched against. Each reference project opens as its own tab beside the live estimate, with the same table at L1 to L4, its own cost summary, and a chat scoped to that project alone — so comparing a benchmark never means losing the estimate you were building.
handymanMine — the tabbed reference model, and reusing one table system across live and historical data rather than designing a second one.
psychologyWhy — a benchmark is only useful next to the thing it benchmarks. Tabs keep both in reach; a scoped assistant keeps the questions unambiguous.
check_circleResult — one grammar learned once, used everywhere in the product.