Job costing
Job costing is the practice of comparing what a job actually consumed — hours, materials, subcontractors — with what you sold it for. The result tells you which kinds of work make money and which kinds only feel busy. It is an accounting habit. It is not a lead habit. Mixing them up is how a CRM project turns into a bookkeeping project and the missed calls continue.
A simple version does not need a warehouse. At the end of the job, write the hours you thought it would take, the hours it took, and whether materials ran over. Do this for a month of similar jobs. Patterns show up: the "small" water heater that always needs a second trip, the repaint that looked like a day and took three. The next estimate changes. That is the point. A report nobody uses to change the next estimate is a diary.
Full job costing, with burdened labor, inventory draws, and purchase orders, belongs in accounting or in a field-service suite built for it. Puffly is not an accounting system and does not cost jobs. Pretending a lead inbox is a general ledger helps neither the bookkeeper nor the person on the phone. Keep the sold job's outcome somewhere you will look, and keep the unsold lead in the CRM so there is a next job to cost.
Owners who skip costing bid from memory and from fear. They copy last year's number or they trim the quote when the customer goes quiet. The follow-up problem and the costing problem are different. Silence after an estimate is a pipeline problem. A job that loses money after you win it is a costing problem. Solve the silence first if you do not yet have enough won jobs to study. Then write down hours on the jobs you did win.
If you already run job costing in another tool, leave it there. The CRM should know the job was won or lost and what the next touch is. It does not need the vendor invoice.