Position: Estimator
Location: Belding, MI (Onsite)
Compensation: $80,000-$90,000 annually
Schedule: Full-time, Monday-Friday Join a leading manufacturer of equipment and automation systems serving clients across a variety of industrial sectors. The Estimator will play a key role in developing accurate project estimates based on historical data and detailed job analysis. This position requires a blend of technical curiosity, analytical thinking, and collaboration across departments to help the team make informed pricing and resource decisions. Estimator Key Responsibilities:
Analyze historical data to develop accurate, data-driven cost estimates.
Evaluate complex projects by dissecting prior performance and identifying key differences or efficiencies.
Partner closely with the Sales department to support bids and proposals with well-supported cost data.
Monitor and dissect job performance metrics, comparing estimates to actuals and making recommendations for improvement.
Utilize tools and various reporting dashboards to extract, analyze, and interpret data. Estimator Qualifications:
Background in Finance, Accounting, Engineering, or Data Analytics preferred.
Experience in manufacturing or a related industrial environment highly preferred.
Prior estimating experience not required-candidates with backgrounds in pricing, cost analysis, or data analytics are encouraged to apply.
Strong analytical skills and comfort working with large data sets.
Familiarity with Epicor or other ERP systems is a plus. Estimator Estimator Estimator Estimator Estimator EB- document.addEventListener('DOMContentLoaded', => { const root = document.querySelector('#job_desc'); if (!root) return; // Skip wrapping if we've already done it if (root.dataset.hashtagsWrapped === "1") return; const SKIP = new Set(['SCRIPT','STYLE']); const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { acceptNode(node) { if (!node.nodeValue !node.nodeValue.match p{L}\p{N}_]+/u)) return NodeFilter.FILTER_REJECT; // Avoid wrapping inside an existing hashtag span let p = node.parentNode; while (p && p !== root) { if (p.nodeType === 1 && p.hasAttribute('data-hashtag')) return NodeFilter.FILTER_REJECT; if (SKIP.has(p.nodeName)) return NodeFilter.FILTER_REJECT; p = p.parentNode; } return NodeFilter.FILTER_ACCEPT; } }); const re = p{L}\p{N}_ gu; function wrapTextNode(textNode) { const text = textNode.nodeValue; re.lastIndex = 0; let m, last = 0; const frag = document.createDocumentFragment ; while ((m = re.exec(text)) !== null) { // preceding plain text if (m.index > last) frag.appendChild(document.createTextNode(text.slice(last, m.index))); // hashtag span const span = document.createElement('span'); span.textContent = m[0]; span.setAttribute('data-hashtag', '1'); // idempotence guard span.setAttribute('style', 'font-size:9px;color:#fff'); // requested inline style frag.appendChild(span); last = re.lastIndex; } // trailing plain text if (last < text.length) frag.appendChild(document.createTextNode(text.slice(last))); textNode.parentNode.replaceChild(frag, textNode); } const toProcess = []; let n; while ((n = walker.nextNode toProcess.push(n); toProcess.forEach(wrapTextNode); root.dataset.hashtagsWrapped = "1"; });