Appearance
Estimates & bidding
An estimate is the priced scope of a job: built line by line, sent for subcontractor pricing, signed by the customer, and promoted into a project when it's won.
Lifecycle
Statuses: draft → sent → approved → won, with rejected, expired and lost as exits. You set most of these yourself from the header; two are moved for you:
- a signed contract sets the estimate to approved
- promoting it to a project sets it to won
Revisions
Revise freezes the current estimate as a numbered snapshot and continues editing as the next revision. Snapshots stay reachable from the Revisions panel and their totals are never recomputed. What you sent is what the record shows.
How pricing works
Each scope line rolls up three costs into its sell amount:
amount = labor hours × labor rate
+ parts cost × (1 + parts markup %)
+ subs cost × (1 + subs markup %) …rounded up per linePer-line values fall back to the estimate's header defaults, which fall back to your rate card.
Profit and supervision are percentages of the countable scope total, computed as pools:
- Lines can be flagged to skip P&S (their amount still bills, it just doesn't feed the pools).
- Each pool lands in full on the first line of its type (one profit line, one supervision line) rather than being spread across scope lines. Keep those two lines where you want the money shown.
The all-in subtotal is scope + profit pool + supervision pool.
Measurement is a display figure
measurement qty produces a per-unit figure (amount ÷ qty) for the customer document. It does not multiply cost. Pricing comes from the cost buildup above, not from qty × unit price.
These cost fields are canon: Blok-authored definitions the math depends on. You can archive ones you don't use and choose which print on customer documents, but not rename or retype them. Opting out entirely means editing line amounts directly, and the calculator simply steps aside. See Blueprints → Canon fields.
Templates
An estimate template seeds a new estimate with header defaults and starter lines: your standard TI package, your maintenance menu. Apply one at creation or after.
Subcontractor bids
Assign subs to specific lines, then send a bid round: pick the subs, a due date, and optionally restrict to certain lines.
Each sub gets an email linking to a public page showing only their lines (descriptions and quantities, never your pricing), plus any attachments marked for bidding. What they see is frozen at send time, so later edits don't change an outstanding invitation. No login needed; they answer I will bid or Can't bid this one.
The estimate page tracks every invitation: Invited → Accepted / Declined, with No response applied automatically after the due date. A late "yes" still lands. It flips no-response to accepted rather than being dropped. You can override a status manually or resend an invitation, and each sub accumulates a reliability record (response rate, accept rate) that shows up when you're choosing who to invite next time.
The pipeline past acceptance (bid received, bid approved, …) is configurable per organization.
Contracts & e-signature
From the estimate, create a contract and send its link. The customer sees the customer-facing estimate document embedded (only fields marked visible; costs and hours stay internal), types their legal name, draws a signature, and consents to e-sign. Name, signature image, IP and timestamp are stored with the contract; they can also decline.
Signing does three things at once: marks the contract signed, converts the linked lead, and approves the estimate. With auto-promote on sign enabled and a billing type chosen, it creates the project too, so won business becomes a real project with no manual step.
Promotion to a project
Promotion requires a signed contract (an admin can override). It creates the project with the estimate's total as its budget, copies the included scope lines (with their sub assignments) into the project's scope items, and, for SOV-billed projects, seeds the schedule of values from those lines.
Work orders are not created at promotion; they're spawned from scope items as the work is actually scheduled.