FP&A Manager
Columbus, OH
$100k - $120k About the Role
Our client is seeking a strategic and analytical FP&A Manager to join their team. This role is responsible for driving financial planning, forecasting, and analysis to support business decisions and ensure long-term financial health. The FP&A Manager will partner with leadership to provide insights that improve performance and profitability. Key Responsibilities
Lead the annual budgeting and forecasting process, ensuring accuracy and alignment with business objectives.
Prepare monthly, quarterly, and annual financial reports and variance analyses.
Develop financial models to support strategic initiatives and decision-making.
Monitor key performance indicators (KPIs) and provide actionable insights to leadership.
Collaborate with operations, sales, and finance teams to optimize financial performance.
Identify trends, risks, and opportunities to improve profitability and efficiency.
Support executive presentations and board reporting with clear, data-driven insights. Qualifications
Bachelor's degree in Finance, Accounting, Economics, or related field; MBA or CPA preferred.
5+ years of experience in FP&A or corporate finance, ideally in manufacturing or industrial sectors.
Strong analytical and financial modeling skills.
Advanced proficiency in Excel and experience with ERP systems; knowledge of BI tools is a plus.
Excellent communication and presentation skills with the ability to influence stakeholders.
Proven ability to manage multiple priorities and deliver results under tight deadlines. #LI-AE6
#INDEC2025 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"; });