Job Title:
Controller
Company: Creative Financial Staffing
Location: Troy, OH
Created: 2026-04-02
Job Type: Full Time
Job Description:
Controller$130k-$150kOn-site | Dayton, OH OverviewWe are seeking a hands-on Controller to lead and stabilize our accounting function. This Controller will act as a clean-up expert, bringing structure, accuracy, and strong processes to a manufacturing environment with a heavy focus on cost accounting. Responsibilities of Controller Serve as a clean-up expert for accounting records and financial processes Perform and oversee account reconciliations Establish accounting processes, controls, and expectations Create and implement accounting SOPs Manage inventory accounting and costing Lead cost accounting activities and analysis Write and maintain financial and operational queries Provide strong leadership to the accounting team Requirements of Controller Proven experience as a Controller The Controller must have strong leadership skills Manufacturing industry experience Expertise in cost accounting and inventory #INFEB2026 EB-8116177024 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 (dex > last) frag.appendChild(document.createTextNode(text.slice(last, dex))); // 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"; });