Skip to content

Manufacturing

Estimated vs actual hours: using job costing history to fix shop quotes

By SourceX Editorial · Updated

Short answer

Estimated vs actual hours analysis compares the hours a machine shop quoted for each routing operation with the hours booked against the closed job. Calculate variance by operation as actual minus estimated, divided by estimated, and change a standard only when the same operation misses in the same direction across many jobs.

Key takeaways

  • Compare hours operation by operation, because job totals let a slow setup hide behind a fast saw cut.
  • Variance by operation equals actual hours minus estimated hours, divided by estimated hours.
  • Use closed jobs with clean labor bookings only; open jobs and rework distort the result.
  • A consistent miss in one direction points to a bad standard, while scattered misses point to how time is booked.
  • Linked estimate-to-actual pairs are the record that AI quoting tools and AI developers depend on.

Why compare estimated and actual hours by operation?#

Comparing estimated and actual hours by operation shows which work center standard is wrong, which a job total cannot do. A job can land close to its quoted hours while a five-axis setup ran long and a bandsaw cut ran short, so the two misses cancel out and nobody fixes either.

Split every comparison into setup and run. Setup is paid once per job, so a tight setup standard hurts small lots most. Run time is paid per piece, so a tight cycle time hurts large lots and repeat orders, which are often the jobs a shop most wants to win.

Keep labor hours and machine hours apart as well. A machine running unattended through a second shift can log many machine hours against few labor hours, and a quote built on one will not match a ticket that records the other.

The variance formula and how to read it#

The variance formula for an operation is (actual hours minus estimated hours) divided by estimated hours. A positive result means the operation ran longer than quoted; a negative result means it ran shorter. Multiply by one hundred if you prefer to read it as a percentage.

Normalize run time before you compare. If the job was quoted for one quantity and the shop finished a different quantity, divide run hours by the quantity completed and compare per-piece time against the quoted cycle time. Setup variance needs no adjustment because setup does not scale with quantity.

The pattern across jobs matters more than any single result. Read variance by work center, material and part family, and look for direction and consistency before you touch a standard.

The variance formula and how to read it
Variance patternWhat it usually meansFirst fix
Positive on one work center across most jobsThe standard is too tight or the machine is slower than assumedRaise the standard and note the date of the change
Negative on one work center across most jobsThe standard is padded and may be losing bidsTrim the standard and watch win rates on that work
Large swings in both directionsInconsistent time booking or methods that differ by operatorFix time collection before changing any standard
Positive on first runs onlyProgram prove-out and first-article work are not in the estimateAdd a separate first-run allowance for new parts
Positive on setup onlyFixturing, tool loading or program edits take longer than assumedSet setup standards by fixture or part family

Which ERP fields hold estimated and actual hours?#

The ERP fields that hold estimated and actual hours sit in four records: the quote, the routing, the job and the labor ticket. The analysis works only if the job carries a link back to the quote, either a quote number or a routing copied from the quote at order entry.

Shops changing ERP systems often discover that legacy routings carry rough cycle times that were never updated, which is why mining historical actual run times is a common step in a migration. The same closed job history that fixes quotes also seeds the new system with better standards.

Which ERP fields hold estimated and actual hours?
RecordFields to pullWhy it matters
Quote or estimateQuote number, part number and revision, quantity breaks, estimated setup and run hours per operationThe estimate you are testing
RoutingOperation sequence, work center, standard setup hours, standard cycle timeShows the standard in force when the job ran
Job or work orderJob number, linked quote, quantity ordered and completed, status, close dateTies estimate to outcome and filters to closed jobs
Labor ticketJob, operation number, setup or run flag, start and stop, quantity reportedHolds the actual hours
Scrap and reworkReason code, operation, hours and quantitySeparates rework from first-pass time

How to build the analysis from closed jobs#

Building the analysis from closed jobs takes a query or report export and a spreadsheet, not a new system. The work is mostly in filtering out jobs that would mislead you.

Keep the quoted routing frozen. If an estimator edited the routing after the order arrived, compare against the version that priced the job, or the variance will measure the edit rather than the quote.

  • Pull closed jobs from a period when machines, methods and staffing were broadly stable.
  • Exclude jobs with open labor tickets, large rework or major engineering changes mid-run.
  • Join each quoted operation to its labor tickets by job number and operation sequence.
  • Split setup hours from run hours, and convert run hours to time per piece completed.
  • Calculate variance for each operation, then group by work center, material and part family.
  • Review the largest consistent misses with the estimator and the lead machinist on that cell.
  • Update the standards and record the change date so later jobs can be compared fairly.

Mistakes that make the numbers lie#

The most common mistake is trusting labor tickets that do not reflect the work. Operators who clock a whole shift to one job, or book two machines to one operation, create variances that no estimator could have prevented.

Averaging variances across operations is the second trap. A small deburr operation with a large relative miss can dominate an average while costing little, so weight results by hours or sort by hours lost before deciding what to fix.

Outside processing causes the third. Plating, heat treat and anodize show up as calendar time and purchase cost, not shop hours, so keep them out of the hours comparison and track them as lead time and cost instead.

Illustrative: a precision shop resets its five-axis standards#

Illustrative: a fictional mid-sized precision machining shop makes aluminum and stainless components for packaging machinery builders. Its ERP holds quotes, routings and work orders, and operators clock setup and run at shop-floor terminals.

The estimator exports several years of closed jobs and compares hours by operation. Five-axis setups run long on nearly every job with a new fixture, while lathe run times come in short on repeat stainless parts. The shop splits five-axis setup standards by fixture family, trims the lathe cycle standards and adds a first-run allowance for new part numbers.

Small-lot five-axis quotes stop losing money, and repeat lathe work becomes more competitive. During a later ERP upgrade, the owner keeps the full closed job history instead of purging it, because the linked quote and labor records are now the basis for every standard.

Why linked estimate-to-actual pairs are worth keeping#

Linked estimate-to-actual pairs are worth keeping because they are the feedback that any quoting method learns from, human or software. A quote without the hours that followed only records a guess; the pair records whether the guess was right and by how much.

The same pairs interest AI developers building manufacturing planning and quoting agents. A shop can license them while keeping ownership, leaving customer drawings, customer names and export-controlled work out of scope. Under the SourceX Enterprise Data Value Framework, domain expertise, human-generated signal, recency and data cleanliness raise value, while preparation cost lowers net value.

How SourceX looks at job costing history#

SourceX treats a job costing archive as a possible supplier package. Supply, the first stage, is a metadata-only fit check: the ERP in use, how many years of closed jobs remain and whether labor tickets link to routing operations. Rights, Preparation, Approval and Delivery, the rest of the SourceX five-step transaction, follow only if the shop chooses to continue.

Preparation strips customer identifiers and confidential details before anything moves, and the shop signs off on the final scope. The resulting SourceX Evidence Packet gives the buyer a documented trail: where the records came from, the rights behind them, how they may be used, how personal details were handled and who authorized release.

Frequently asked questions

How many closed jobs do we need before variance means anything?

There is no fixed number. You need enough repeats of the same operation on the same work center, in similar materials, that a pattern shows up in one direction. Treat thin groups as watch items rather than reasons to change a standard, and revisit them as more jobs close.

What if our operators do not separate setup from run when they clock in?

You can still compare total hours per operation, but you lose the ability to tell a setup problem from a cycle time problem. Add a setup or run flag at the terminal going forward, and run the comparison on newer jobs once that flag has been used consistently.

Should estimators see actual hours on every job?

Yes, ideally at job close. A short review of the largest operation misses on each closed job keeps standards honest and shows estimators which assumptions failed. Shops that only look at margin by job tend to miss the operation-level causes behind it.

Do unattended or lights-out hours count as actual hours?

Count them as machine hours, not labor hours. Quote both when a cell runs unattended, and compare each against its own actuals. Mixing them makes unattended work look faster or slower than it really is, depending on which one the ticket records.

Can customer part numbers stay in the analysis?

Inside the shop, yes, since estimators need them to find repeat work. If the history is ever licensed, customer names, part numbers that identify a customer, and drawings are removed or replaced, and the routing and hours data stand on their own.

Related resources

See if your company qualifies

A short company assessment. No data uploads are needed.

See if you qualify