Four jobs that are usually four products — quoting, tracking, rostering, invoicing — over one record and one price. 476 automated tests sit behind this module alone, which is more than some of the tools it replaces have in total.
Quoting
An estimate and a fixed-price quote are different things, and the system knows which one you have made. Pricing from photographs produces an estimate, with its assumptions written down. It becomes a fixed-price quote only when those assumptions have been confirmed. Quoting a fixed price for a site nobody has visited is the single fastest way to lose money in this trade, and the product is built to make you notice you are doing it.
The price book has no blended rates. An item holds its material cost, its wastage percentage and its labour minutes separately; the money is derived from those. A single number per item is how margin disappears without anyone seeing it go. Your loaded hourly rate lives in one place, not copied onto every line.
Price book entries are effective-dated. Changing a price writes a new row rather than editing the old one, so an estimate you priced in March reprices against March’s costs when you look at it in June.
A quote carries its lines — each snapshotting the costs and markups it was priced from — plus contingencies, inclusions, exclusions, assumptions, a valid-until date, and the variation trigger rates agreed up front, which become contractual terms the moment the customer accepts.
The margin floor is a block, not a warning. A quote below your floor cannot be issued unless an owner records an override. Neither can a sight-unseen estimate with no assumptions on it.
Acceptance is not a tick box. The customer opens a link — no account, no password — and sees the total, the materials and labour split, that GST is included, and the inclusions, exclusions and assumptions given the same prominence as the price. To accept they type their full name and tick an affirmation. The system records the name, the time, the IP address and a hash of the document exactly as it stood, and keeps an immutable snapshot. A typed full name is an electronic signature under the Electronic Transactions Act; the affirmation is what carries the weight.
Deposits are capped by jurisdiction, and an over-cap deposit is refused rather than flagged. Written-contract thresholds, home warranty insurance thresholds and cooling-off periods are encoded the same way. Not every state and territory has a full ruleset yet — where one is missing the job still proceeds, and the record says the check was made by hand rather than by the system.
Tracking
A job moves through twenty states, from Lead to Closed and on into defect warranty, and the transitions are a table rather than a suggestion. Ten gates guard them: capture complete enough, no unpriced asbestos risk, contract accepted, deposit within the legal cap, licence covers the value, deposit receipted, dial-before-you-dig where excavating, evidence complete, customer signed off.
A refused transition tells you which gate stopped it. Every accepted one writes an audit record. Rescheduling is a real transition with a reason attached, not a silent edit to a date.
Let the customer do the site capture. Send a link by SMS or email and they add photos, measurements and answers to the questions your work type asks. There is one live link per job — two half-finished captures and no way to tell which is the site is worse than none. What comes back is scored for completeness, so you know whether you can quote from it before anyone drives out.
Variations are a mechanism, not an argument on site. The change and its price go to the customer on their own link and come back approved or declined, with a timestamp. Rates agreed up front price the common ones automatically. A pending variation stops work on the varied scope, and an unpriced draft is never shown to a customer — that is the business still deciding.
Staff rostering
A week board you drag shifts around, shared with the rest of the platform. A crew assignment is a roster shift rather than a second copy of one. Drafts move freely; publishing is what tells the crew. Approved leave blocks the roster; an undecided request warns.
Shifts move Draft → Published → In progress → Delivered, with check-in and check-out, and timesheets built from what actually happened rather than from what was planned. Correcting a mis-recorded shift is a timesheet adjustment: the shift happened.
The roster margin report tells you what a week costs before you publish it — revenue, cost, margin and margin percent, with loss-making and thin-margin shifts called out. Crucially it also counts the shifts it could not price, and refuses to present the totals as complete while any remain. A roster that looks profitable because half of it was skipped is worse than no figure at all.
Six penalty bands — ordinary, evening, night, Saturday, Sunday, public holiday — with the boundaries and multipliers as configuration rather than code.
Read this part before you rely on it. This is a costing estimate, not a pay calculation, and the product says so every time it shows you a figure. It does not model overtime, allowances, broken shifts, sleepovers, on-call, higher duties or enterprise agreement overrides. Banding is by the shift’s start time, so a shift crossing a boundary is an approximation. The two award profiles that ship are marked unverified in the data itself. The public holiday calendar ships empty on purpose, because a stale hardcoded holiday table is worse than none. And the Fair Work pay database is not connected, so base rates are entered by hand.
That is why timesheets export to payroll — Xero, KeyPay, Deputy or a generic CSV — instead of paying anyone from here. The employer remains responsible for correct payment, and pretending otherwise would be the most expensive feature we could ship.
Invoicing
Deposit, variation, progress claim and final invoices. Each is a snapshot — supplier name and ABN, customer, lines and GST are copied onto the record rather than re-read later, so an invoice from March still says what it said in March.
GST is derived, never stored. Amounts are GST-inclusive throughout — price book, estimate, contract, invoice, and what the customer sees — and the GST component is computed from the total. A separately held GST figure and a total that ought to agree with it is a whole category of bug that simply cannot occur. The supplier ABN is mandatory, because without it your customer cannot claim the GST back.
The customer pays from the same link they accepted the quote on. Card payment through Stripe, no account required, and the same checkout session cannot be credited twice. Draft invoices are never shown — a number somebody in the office is still deciding about should not be on a customer’s screen.
Invoices sync to Xero as sales invoices with GST-inclusive line amounts stated explicitly rather than left to your organisation’s default, because a default of exclusive makes every invoice ten percent wrong in a way that reads as a rounding error. Field Works owns the invoice; Xero owns the money.
Payment reminders are off until you turn them on. A business discovering that its software has been emailing clients unasked is a worse first impression than one discovering it has to enable a feature. When on: a courtesy note before due and three chases at widening intervals, business hours only, weekends skipped, evaluated in Australian Eastern time rather than the server’s UTC. The last chase deliberately stops short of legal language. The opt-out list knows the difference between an advertisement and a tax invoice, so unsubscribing from marketing does not suppress an invoice.