It is easy to recognize the obvious costs of a job: materials, supplier fees and the hours spent delivering it. The costs around the edges are easier to miss.
Count preparation, travel, access, loading, design, setup, disposal, coordination, revisions, testing and handover where they apply. Include the owner's delivery time at a realistic cost. Working unpaid evenings does not make the work free.
Build a repeatable costing sheet
Separate quantities, unit costs and assumptions. For labor, use expected hours multiplied by a cost that reflects what employing or supplying that work actually costs. Check your treatment of paid nonproductive time and employer costs with your accountant. Avoid counting the same cost twice.
Use current supplier prices where they matter. Record the date and any expiry or uncertainty. An old purchase invoice can be a useful starting point, but it does not prove what the next order will cost.
Then identify overhead: the costs of running the business that are not directly assigned to this particular job. Your pricing must support them across the work you sell. A job can cover materials and labor while leaving too little to run the company.
Name uncertainty before adding a number
For each unknown, decide whether you can investigate it, make a clear assumption, offer a separately priced option or use a properly explained allowance. Do not hide major uncertainty inside an unexplained low total.
A contingency is a deliberate provision for uncertainty. It should have a rationale. It does not give unlimited permission to expand scope, and it should not conceal a known cost you omitted.
Review estimated costs against actual work
After delivery, compare your hours, quantities, supplier costs and extra work with the original assumptions. Look for recurring misses. If three similar jobs each required an extra half-day of setup, adjust the next estimate rather than blaming three unusual days.
Try this with one completed job. Rebuild its price using everything it actually required. Identify the biggest difference between the estimate and reality. Was it a missed task, an inaccurate quantity, a changed requirement or an execution problem? Each needs a different response.
A costing process earns its place when it helps you make a better decision before the customer accepts. It should be simple enough to update from real jobs and detailed enough to reveal where the money is going.