Back to blog
Operations12 min read

5 Quoting Mistakes That Are Killing Your Job Shop's Margins

By ForgeMRP Team

5 Quoting Mistakes That Are Killing Your Job Shop's Margins

5 Quoting Mistakes That Are Killing Your Job Shop's Margins

You're winning jobs. The shop is busy. Machines are running. And yet, at the end of the month, the bank account doesn't reflect the work you put in.

If that sounds familiar, the problem probably isn't your sales or your shop floor — it's your quotes.

Most margin leaks in a job shop don't come from one catastrophic pricing error. They come from small, systematic quoting mistakes that repeat across dozens of jobs. Each one costs 3–8% of margin. Across a full year, that compounds into the difference between a shop that's growing and one that's just surviving.

Here are the five most common quoting mistakes we see in job shops — and how to fix each one.

Mistake 1: Using a Single Shop Rate for Every Machine

The symptom: You quote every operation at the same hourly rate — say, $95/hour — regardless of which machine does the work.

The problem: A manual Bridgeport and a 5-axis DMG Mori don't cost the same to operate. The 5-axis machine probably cost 15x more to buy, uses more expensive tooling, consumes more power, and requires a higher-skilled operator. Meanwhile, the Bridgeport's true cost might be $55/hour, and the 5-axis might be $165/hour.

When you average everything to $95/hour, two things happen:

  1. You over-price simple work done on cheaper machines. Jobs that could run on the Bridgeport are quoted at $95/hour when your real cost is $55. You lose bids to competitors who know their machine-specific costs.

  2. You under-price complex work on expensive machines. Jobs that require the 5-axis are quoted at $95/hour when your real cost is $165. You win these bids — and lose money on every one.

The net effect is perverse: you lose the jobs you'd be profitable on and win the jobs that drain your margins.

How to fix it:

Calculate a rate for each machine or machine group. The formula:

Machine Rate = (Depreciation + Maintenance + Tooling + Operator Cost + Utilities + Overhead Allocation) / Available Hours Per Year

You don't need to be exact. Grouping similar machines is fine: "CNC lathes" at one rate, "3-axis mills" at another, "5-axis mills" at a third. Even three tiers is dramatically better than one flat rate.

How much it matters:

A shop quoting 50 jobs per month with a single $95 rate, where the true range is $55–$165, is mispricing an average of 30–40% of its labor calculation on every job. On $1.5M in annual revenue, correcting this one mistake typically recovers $60,000–$120,000 in margin — money that was already being earned but given away through inaccurate pricing.

Mistake 2: Treating Setup as a Per-Piece Cost

The symptom: You estimate setup time for a job and spread it across the total quantity. "Setup is 2 hours, we're making 100 pieces, so that's 1.2 minutes per piece." The per-piece price looks clean and simple.

The problem: This works when you actually run 100 pieces. It breaks badly in three scenarios:

Scenario A: The customer orders 10 pieces instead of 100. Your 2-hour setup now represents $190 of cost (at $95/hr) spread across 10 pieces instead of 100. The per-piece cost just increased by $17.10, but your quote still shows the 100-piece price.

Scenario B: The customer comes back for a repeat run. They expect the same per-piece price. But this time, you need a full setup again — the fixture wasn't saved, the program needs adjustments for a new lot of material, or the machine has been reconfigured since the last run. The setup cost hits again, and it's not in the repeat-order price.

Scenario C: The job needs multiple setups. A part with operations on three machines means three setups. If you only budgeted for one, the other two setups are unrecovered cost.

How to fix it:

Always quote setup as a separate line item — or at minimum, show quantity-dependent pricing. Give the customer a table:

| Quantity | Per-Piece Price | Setup (one-time) | Total | |----------|----------------|-------------------|-------| | 10 | $28.50 | $190 | $475 | | 25 | $22.10 | $190 | $743 | | 50 | $19.90 | $190 | $1,185 | | 100 | $18.80 | $190 | $2,070 |

This makes the economics transparent. Customers understand why 10 pieces cost more per piece than 100. And when they order a different quantity than originally quoted, the pricing adjusts correctly.

For repeat orders: Build a "repeat setup" estimate into your rate card. Repeat setups are typically 40–60% of first-run setup time (the program exists, the fixturing is documented), but they're not zero. Quote them explicitly.

Mistake 3: Ignoring Secondary Time

The symptom: Your quote accounts for machine cycle time — the time the spindle is turning, the tool is cutting, the part is being made. But it doesn't account for everything else that happens around the machining.

The problem: "Secondary time" is everything that's not active cutting but still takes operator time and machine capacity:

  • Load/unload time. Putting the part in the vise, indicating it, clamping it, removing it. On a simple part this might be 30 seconds. On a complex fixture with multiple clamps and dial indicators, it could be 5–10 minutes.

  • In-process inspection. Checking critical dimensions every Nth part, running a first-article to verify the setup, measuring after a tool change. For standard commercial work, inspection might be 5% of cycle time. For aerospace or medical, it can be 15–25%.

  • Deburring and cleaning. Sharp edges don't remove themselves. A part that takes 8 minutes to machine might need 3 minutes of hand deburring. That's a 37% increase in per-piece time that most quotes miss.

  • Tool changes. Tools wear. On a long production run, you'll change inserts, replace drills, and swap end mills multiple times. Each change takes 2–5 minutes of downtime, plus the first-piece check after.

  • Part handling between operations. Moving parts between machines, storing WIP, staging for the next operation, cleaning between operations. For multi-operation parts, handling can add 10–15% to total production time.

Add these up and the real per-piece time can be 30–60% higher than machine cycle time alone.

How to fix it:

Build a secondary time factor into each machine group or operation type. Some examples:

| Operation Type | Typical Secondary Time Factor | |---------------|------------------------------| | CNC turning (simple parts) | +20–25% of cycle time | | CNC milling (3-axis, standard vise) | +25–30% of cycle time | | CNC milling (complex fixture) | +35–50% of cycle time | | Manual machining | +15–20% of cycle time | | Grinding | +30–40% of cycle time |

These factors should come from your own shop data (tracked over time), not from generic industry tables. Start by timing 10–15 representative jobs end-to-end (clock start to parts-off-machine) and comparing to programmed cycle time. The ratio is your shop's actual secondary time factor.

How much it matters:

A shop that quotes 8-minute cycle time on a part that actually takes 11 minutes (when you include load/unload, inspection, and deburring) is under-quoting labor by 37.5%. On a 500-piece run at $95/hour shop rate, that's $237 of unrecovered labor. Multiply by 15–20 similar jobs per month, and you're looking at $3,500–$4,700 per month in leaked margin — over $50,000 a year.

Mistake 4: Stale Material Pricing

The symptom: You're quoting material costs based on prices you last checked months ago — or worse, based on "what we usually pay" from memory.

The problem: Material prices are volatile. Aluminum, steel, stainless, and specialty alloys fluctuate with market conditions, tariffs, supply chain disruptions, and seasonal demand. In the past three years alone:

  • Aluminum 6061 has swung between $1.10 and $2.40 per pound
  • 304 stainless bar has ranged from $1.80 to $3.50 per pound
  • Specialty alloys (Inconel, titanium, Monel) have seen 40–60% price swings in single quarters

If your material estimate is based on a price from six months ago and the market has moved 20%, your entire quote is off by the material component times that percentage. On a material-heavy job (material is 30–50% of total cost), a 20% material mispricing can swing your job margin by 6–10 points.

The compounding problem: Material pricing errors cut both ways, but the damage is asymmetric. When you under-price material and win the job, you absorb the loss. When you over-price material and lose the bid, you don't know you lost because of material pricing — you just know you didn't win. The feedback loop is broken: you see the losses but not the missed opportunities.

How to fix it:

  1. Update your material price sheet monthly. At minimum. For volatile materials (stainless, specialty alloys), update bi-weekly.

  2. Get live quotes for large jobs. Any job where material cost exceeds $2,000, call the supplier for a current price before finalizing the quote. The five minutes it takes can save hundreds.

  3. Add material escalation clauses to large or long-lead quotes. "Material prices valid for 30 days. Orders placed after [date] subject to material price adjustment." This is standard practice and protects you from quoting in January for a job that ships in April.

  4. Track actual purchase price vs. quoted price. This is the feedback mechanism. If your quotes consistently use $2.10/lb for 6061 but you're actually paying $2.45/lb, you have a systematic leak.

Mistake 5: Quoting Without Historical Feedback

The symptom: You finish a job, ship it, invoice it — and never look back at how the actual cost compared to what you quoted.

The problem: This is the meta-mistake. Every other mistake on this list persists because of this one. Without a feedback loop between estimated and actual job costs, you can't know which estimates are accurate and which are consistently wrong.

Here's what happens without feedback:

  • The machinist knows that Job X took four hours longer than estimated, but that information stays on the shop floor. It never reaches the person writing the next quote.
  • The purchaser knows that material prices have risen 15% since the last price update, but that information lives in the PO system. The quoting spreadsheet still has the old numbers.
  • The shop manager knows that certain types of jobs (intricate, multi-setup, tight-tolerance) always take longer than estimated. But without data, it's a feeling — not something that changes the quoting process.

Each of these is a known problem with a known fix. But without a system that connects actual costs to future quotes, the fixes never happen. The same mistakes repeat, month after month, year after year.

How to fix it:

Build a closed-loop process:

Step 1: Capture actuals at job completion. For every job, record actual material consumed, actual labor hours (setup and run, by operation), and actual outside service costs. This doesn't need to be elaborate — even a simple form that the shop manager fills in when a job ships.

Step 2: Calculate actual vs. estimated variance. Compare the actuals to the original quote. Flag any job where the variance exceeds 10% in either direction.

Step 3: Review monthly. Spend 30 minutes once a month reviewing the flagged jobs. Look for patterns:

  • Are certain machine groups always running over estimate?
  • Are certain types of jobs (prototypes, tight-tolerance, multi-operation) consistently under-quoted?
  • Is material consistently under-priced for specific alloys or forms?
  • Are setup times consistently longer than estimated for certain machines?

Step 4: Adjust the source data. Update your rate card, material prices, setup time defaults, and secondary time factors based on what the data shows. This is the step that actually closes the loop.

Step 5: Track improvement. After three months of this cycle, measure whether your average variance has decreased. It should. If the average quote-to-actual variance drops from 15% to 8%, you've just recovered 7% of margin across every job — without changing anything about how you run the shop.

How much it matters:

A shop that reduces its average quoting variance from 15% to 8% on $1.5M annual revenue recovers roughly $105,000 in margin. That's not theoretical — it's money that was already flowing through the shop but being lost to inaccurate estimation.

The investment is 30 minutes per month of review time, plus a few minutes of data capture per job. The ROI is measured in hundreds of dollars per hour of effort.

The Common Thread

All five mistakes share a root cause: disconnected information.

  • Machine rates don't reflect actual machine costs because the rate card isn't connected to financial data.
  • Setup costs get buried in per-piece pricing because the quote structure doesn't separate them.
  • Secondary time is invisible because cycle time and total time aren't tracked separately.
  • Material prices go stale because the quoting system isn't connected to purchasing data.
  • Historical feedback doesn't flow because quote data and job cost data live in different systems.

You can fix any of these with discipline and spreadsheets. But the real leverage comes from connecting the data — quoting, purchasing, production, and job costing — in one system where the feedback loop is automatic.

Key Takeaways

  1. Use machine-specific rates, not a single shop rate. The mispricing from a flat rate loses you good jobs and wins you bad ones.
  2. Quote setup separately from per-piece pricing. Show quantity-dependent pricing so the economics are transparent.
  3. Account for secondary time — load/unload, inspection, deburring, tool changes, and part handling. Real per-piece time is 30–60% higher than cycle time alone.
  4. Update material prices monthly at minimum. Add escalation clauses to quotes valid beyond 30 days.
  5. Close the feedback loop. Compare actual job costs to estimates every month. Adjust your rate card, defaults, and factors based on what the data shows. This is the single highest-ROI activity in quoting.

ForgeMRP connects quoting to production so the feedback loop is built in. Actual material, labor, and outside service costs are tracked per job and compared to your estimates automatically. See how quoting works in ForgeMRP.

Get articles like this in your inbox

Practical guides for job shop owners. No spam, unsubscribe anytime.

Related Articles