Why the sold-to-production handoff loses money
The sale is the moment everyone relaxes. The contract is signed and the deposit is in. Then the job sits between sales and production, and the details start to leak.
The rep knows the exact model, the color and what the homeowner said about the dog. The office has a signed PDF and a line item that says “system replacement.” The supplier has a quote from two weeks ago. The crew lead gets an address and a start time. Each person has part of the job. Nobody has all of it.
That gap costs money in ways that rarely show up on one report. A crew drives out and can’t start because the equipment is still at the branch. The wrong siding color gets ordered and goes back with a restocking fee. Nobody pulled the permit, so the inspection fails and the job waits a week. A homeowner learns about a new date when the truck doesn’t show, and the next call is about a discount.
Example only: a three-person crew at $35 an hour costs about $840 for an eight-hour day. If that day is lost to a missing part, you pay it and earn nothing, and the job it bumped moves too. Your numbers will differ. The point is that a lost crew day is expensive before you count the reorder, the second trip and the final payment that now arrives later.
Most of these problems are not hard to prevent. They depend on someone remembering to check, every time, on every job, while also doing everything else. That is the part a workflow can carry.
Post-sale handoff template
Use this as the job packet every sold job fills out before it reaches production. It has 31 fields across 11 sections, an owner for each field, and when it is needed: before the order, before scheduling, or before install day. One rule makes it work: a blank field means missing. Write “not needed” when an item does not apply.
Sold job packet
- Job and customerJob number · Customer and service address
- Signed scopeSigned contract version · Written exclusions
- SelectionsEquipment or product · Finishes and accessories
- MeasurementsMeasurements · Measured by and date · Measured after the final scope?
- Materials and supplierLine items and quantities · Supplier and branch · PO or order number · Delivery or pickup · Special-order lead time
- Permits and inspectionsPermit needed, and who pulls it · Permit status · Inspections to book
- Site and accessAccess notes · Utility locations · HOA or work-hour limits
- Crew and scheduleCrew or sub · Start date and duration · Extra trade needed
- HomeownerContact preference · Things to protect · Side promises
- MoneyDeposit received · Financing status · Due at completion
- Photos and sign-offSite photos · Packet reviewed by
Worked example: a fictional heat pump install, step by step
This job is fictional. The times and people are made up to show the flow. A homeowner signs for a 3-ton heat pump and matching air handler to replace a failing system. The company runs jobs in its CRM, orders from a local HVAC distributor by email and schedules crews on a shared Google Calendar.
Tuesday, 4:10 PM. The comfort advisor marks the job sold and attaches the signed proposal. The workflow builds the job packet from what is already on the record: the signed scope, the equipment line items, the site photos and the deposit payment.
Tuesday, 4:12 PM. The packet check finds two gaps. The thermostat model is blank, and there are no photos of the attic where the air handler goes. The advisor gets one text listing both items with a link to the job. Production does not see the job yet, so nobody starts ordering from a half-finished record.
Tuesday, 6:45 PM. The advisor adds the thermostat model and uploads three attic photos from the truck. The packet is complete, and the job moves to the production queue.
Wednesday, 8:05 AM. The workflow drafts the material order in the distributor’s template: heat pump, air handler, thermostat, line set, pad, disconnect and fittings. It fills quantities from the proposal and the delivery address from the job. It does not send anything.
Wednesday, 8:40 AM. The production manager reviews the draft, lengthens the line set because the attic run is longer than the default, and approves it. The order goes to the distributor from the company’s usual purchasing email with the job number in the subject line.
Wednesday, 9:15 AM. The office manager applies for the mechanical permit on the city portal and records the application number on the job. The permit field changes from “needed” to “applied.”
Wednesday, 11:30 AM. The distributor replies. The heat pump is in stock. The air handler reaches their branch on Friday. The workflow matches the reply to the job by the job number, saves it to the record and compares it with the schedule. The tentative install is Thursday. That is a conflict, and the production manager gets it as one message: the job, the item, the confirmed date and the scheduled date.
Wednesday, 11:50 AM. The production manager checks the crew calendar and picks Monday. The workflow moves the calendar event, sends the install lead the packet link and texts the homeowner the new date in wording the owner approved in advance. The homeowner replies “Monday works,” and the reply is saved to the job.
Friday, 2:00 PM. The readiness check for Monday runs. Equipment is confirmed at the branch. The crew is assigned. The permit still says “applied.” The office manager gets a flag, calls the city and uploads the issued permit at 3:30 PM.
Monday, 7:30 AM. The crew picks up the equipment with the packet on their phones: model numbers, attic photos, the disconnect location, the gate code, the note about the dog and the homeowner’s request for a call 30 minutes before arrival. They make that call and arrive at 8:30.
Without the checks, the likely version of this job has the crew learning about the air handler at the supply counter on Thursday morning. Nothing in the workflow was clever. It checked the same few things every time and told the right person.
Checklist: what must travel with a sold job
Use this as the minimum job packet. If an item doesn’t apply, mark it “not needed” instead of leaving it blank. A blank field should always mean “missing.”
Trades weigh the items differently. A kitchen remodel leans on selections and cabinet measurements. A plumbing repipe leans on access, the shutoff location and the drywall repair scope. A roof or siding job leans on measurements, color and delivery. The categories stay the same.
- Signed scope: the final signed proposal or contract, the version the customer actually signed, plus any written exclusions.
- Selections: brand, model, color, size and finish for everything the customer chose. Shingle line and color, siding profile, heat pump and thermostat model, fixture finishes, cabinet door style.
- Measurements: the numbers production builds from, who took them and when. Roof squares and pitch, window openings, duct sizes, repipe run lengths, cabinet wall dimensions.
- Materials and supplier: line items and quantities, the supplier and branch, the order or PO number, delivery or pickup, and lead times for special-order items.
- Permits and inspections: whether a permit is needed, who pulls it, its current status and which inspections must be booked.
- Access notes: gate codes, pets, parking, where the dumpster or trailer goes, attic or crawlspace access, the water shutoff and any HOA rules.
- Crew: which crew or sub, the start date, the expected duration and any extra trade needed, like an electrician for a new circuit.
- Homeowner preferences: how and when to contact them, who will be home, limits on work hours, and anything to protect, like a garden bed.
- Side promises: anything the rep promised that isn’t in the contract, such as hauling away the old tub or saving leftover tile.
- Money: deposit received, financing status and what is due at completion.
- Photos: the rep’s site photos and any before photos the crew should see.
Failure modes and the check that catches each one
Each failure below is common in home service work, and each has a plain check that runs without anyone remembering to run it. A good check names the job, the exact problem and the person who fixes it. A message that says “something failed” only starts a hunt.
Test each check with a realistic bad example before you rely on it. Then test the boring case too: a complete job should move through without a single alert. If people get too many false alarms, they stop reading them.
- Job marked sold with blank selections. Check: required fields at the sold stage. The rep gets the missing items, and the job stays out of production until they are filled.
- Measurements older than the final scope. Check: compare the measurement date with the last scope change. If the scope changed after measuring, flag it for a re-measure or a sign-off.
- Order doesn’t match the contract. Check: compare order lines with the signed proposal before the order goes out. Any difference in model, color or quantity goes to the production manager.
- Delivery lands after the install date. Check: compare every supplier confirmation with the scheduled start, and run it again whenever either date moves.
- Supplier substitutes a product or ships part of the order. Check: flag any confirmation whose items or quantities differ from what was ordered.
- Permit not issued in time. Check: a few business days before start, any job with a permit status other than “issued” or “not needed” goes to the office.
- Schedule changed, homeowner not told. Check: every date change creates a homeowner notice. If it is not approved and sent within an hour, someone gets a reminder.
- Crew double-booked. Check: compare the new start date and duration with that crew’s other jobs before the date is confirmed.
- Job scheduled without a deposit or financing approval. Check: hold the start date until the payment field is filled, if that is your policy.
- Job sits in “sold” with no date. Check: an aging alert after the number of days you choose, sent to the production manager with the reason it is waiting.
What to automate and what to keep human
A simple rule works for most shops: automation gathers, compares and reminds. People approve, decide and apologize.
Automate the work that is the same every time. Building the packet from the record. Checking required fields. Drafting the material order from proposal lines. Reading supplier confirmations and comparing dates. Sending reminders and pre-approved schedule notices. Updating the status the office looks at.
Keep people on anything that spends money, changes the promise to the customer or needs judgment. Approving a purchase order. Accepting a substitution. Picking a new start date. Choosing which crew takes a tricky job. Calling a homeowner whose furnace is out in January to explain a delay.
Some steps can move to automation after you trust them. Sending a routine order to a supplier with no review is one. Start with a person approving every draft. If the drafts are right week after week, decide whether some order types can go out on their own, and write that decision down.
How it looks in JobNimbus, Jobber, Housecall Pro and ServiceTitan
Features vary by plan and change often, so check your own account before building anything. The questions are the same in every tool: where does the packet live, what triggers the check, and where do exceptions show up?
JobNimbus. Jobs move through statuses on a board, and most plans include automations that run when a status changes, like creating a task or sending an email. A move to “Sold” is the natural trigger for the packet check. Custom fields can hold selections and permit status. Roofing CRMs like JobNimbus and AccuLynx offer material ordering, and some suppliers connect directly. Check which suppliers your account supports.
Jobber. An approved quote becomes a job with visits on the schedule. Notes, attachments and custom fields on the job can carry the packet. If your plan doesn’t handle purchasing the way you need, material orders often live in a supplier sheet or email, and the check has to match those back to the job.
Housecall Pro. Jobs carry line items, notes, attachments and tags, and the dispatch calendar shows who is where. Tags or job fields can mark readiness, such as “permit issued” or “materials confirmed.” Check your plan for which fields and automations are included.
ServiceTitan. Larger installs often run as projects with several jobs and appointments, and many setups use its purchasing and inventory features for equipment. Which modules you have depends on your account, so confirm a purchase order or project record is available before designing around it.
Google Sheets and Calendar. Plenty of shops run production from a sheet, and that works. Give each row the CRM job ID, decide which columns the CRM owns and which the office edits, and put the job ID in every calendar event title. Many sync problems start with two systems writing the same field.
What to measure each month
Pull your last 20 sold jobs before changing anything and write these numbers down. Then check them once a month. Small counts are fine. You are looking for direction, not a report for the bank.
Expect the first months to show more problems, not fewer. That is the checks finding what was already happening. The trend after that is what matters.
- Days from sold to start, as a median, by job type.
- Share of jobs with a complete packet the first time they are marked sold.
- Sold jobs with no start date, and how long the oldest has waited.
- Reschedules, split by cause: supplier, permit, crew, weather or customer.
- Wasted trips, where the crew arrived and could not do the planned work.
- Reorders, returns and restocking fees.
- Schedule changes where the homeowner was told the same day.
- Open exceptions, and the age of the oldest one.
Build it or buy it off the shelf
Start with what you already pay for. Your CRM’s statuses, required fields, templates and automations are the cheapest fix, and they keep the job record in one place.
An off-the-shelf add-on makes sense when your process already matches how it works. A scheduling or production tool built for your trade can be a good buy. The cost is another login, another copy of the job and a sync to keep right.
A custom workflow makes sense when the gap is between tools. The packet is in the CRM, the order goes by email, the confirmation comes back as a PDF and the schedule is a calendar. No single product owns that path, so something has to connect it.
A custom app makes sense when people need a screen that doesn’t exist yet. A selections portal for kitchen remodel customers is one example. A crew packet view that loads on a weak cell signal is another.
Whichever route you pick, decide which system owns each fact before connecting anything. The signed scope belongs to the job record. The confirmed delivery belongs to the supplier confirmation. The approved start date belongs to one schedule. Every other copy is for display.
Where GoodHandoff fits
We build the sold-to-start handoff inside the tools you already use: the packet check, the material order draft, the supplier date check and the schedule notices, with a person approving anything that spends money. See /services/production-coordination for what it covers.
Workflow builds are $1,500–$5,000, depending on the tools involved and how many checks it runs. Custom apps are quoted to scope. Optional monthly plans are Care at $1,500 a month and Partner at $3,500 a month. If you aren’t sure where your handoff breaks, a $500 assessment maps it, and the fee is credited toward the build. Pricing is at pricing.