For a job shop, the most important question is never asked while the work is on the floor: did this job actually make the margin we quoted? Every job is priced from an estimate, but labor overruns, scrapped material, surprise outside processing, and rework all happen after the quote is locked. This dashboard puts estimated cost and actual cost side by side on the closed book of work, so you can see the real margin instead of the priced one.
What this dashboard answers
It answers the question Practical Machinist and Modern Machine Shop owners argue about constantly: "where's my money going on this job?" The scorecard shows actual revenue, actual cost, and the realized gross margin on completed work, next to the estimated margin you priced at. A clustered bar ranks estimated versus actual cost on your biggest jobs; a scatter of estimated margin against actual margin (with a 45-degree reference line) puts every job that lost margin below the line; and a cost-build-up waterfall walks from estimate to actual through labor, material, and outside-process variance.
The metrics that matter
Realized gross margin is the headline, but the number that drives action is Cost Overrun $ - total dollars burned above estimate across the whole book - and the Underwater Job Count, the jobs where actual cost beat actual revenue outright. A second page breaks overruns down by variance category (labor, material, outside process, setup/rework), by part family, and by customer, so a chronic margin killer stops hiding inside a blended average.
Why this data is trapped
Estimated cost lives in the quote module of your ERP. Actual cost is assembled from shop-floor time clocks, material issues, and outside-process POs days or weeks later. JobBOSS (E2 Shoptech), Global Shop Solutions, ProShop ERP, ECI M1 / Epicor, and the QuickBooks-plus-spreadsheet setups the smallest shops run all hold both halves - but in transactional screens, not in a comparison. The standard workaround is exporting work-order detail to Excel and reconciling margin after the fact, which is why most owners learn a job lost money long after they could have re-quoted it.
How to read it
Start with the scatter: every job below the 45-degree line came in under its quoted margin, and the distance below the line is how badly. Then read Cost Overrun $ by variance category to see whether the leak is labor (estimating standards too tight, or the floor running slow), material (scrap or price moves), or outside processing. The Customer-by-Part-Family margin matrix is where re-quote decisions get made: a customer who is consistently red is a pricing conversation, not a production problem.
The sample uses realistic synthetic work-order data - no real jobs, customers, or financials.
Metrics it tracks
| Metric | What it means |
|---|---|
| Actual Revenue | Total real top line booked across all completed work orders. |
| Actual Cost | Realized labor, material, outside-process, and burden cost summed across all completed work orders. |
| Actual Gross Margin % | (Actual Revenue minus Actual Cost) divided by Actual Revenue, on the closed book of work. |
| Estimated Gross Margin % | The margin the work was quoted at, shown side by side with the realized number. |
| Cost Overrun $ | Actual cost minus estimated cost, summed across every job - dollars burned above estimate. |
| Underwater Job Count | Number of completed jobs where actual cost exceeded actual revenue. |
Used by: Shop owners and presidents who quote work, plus estimators and fractional controllers
Frequently asked questions
What is estimated vs. actual margin in a job shop?
Estimated margin is the profit you priced into the quote; actual margin is what the job realized once labor, material, outside processing, and rework were all booked. The gap between them - the cost overrun - is where job-shop profit quietly leaks, and it usually isn't visible until the work order closes.
Why can't I see this in my shop ERP already?
Systems like JobBOSS, Global Shop Solutions, ProShop, and Epicor/M1 store the estimate in the quote module and assemble actual cost from time clocks, material issues, and POs. They show each transaction, but rarely put estimate next to actual as one margin comparison - so owners export to Excel and reconcile after the job is done.
How do I build this on my own job data?
Export your completed work orders with their estimated and actual cost and revenue, then use this as a template. We model it into a Power BI report you open in Power BI Desktop. The sample shown here is fully synthetic, so you can see the finished layout before bringing your own export.
Build this report on your own data
Clone this Machine / job shops template — describe it and we’ll generate sample data so you can try it free, or upload your own export. You get a fully modeled, branded Power BI project that opens in Power BI Desktop.
Use this as a template →