CONTROLLER
Client providing 3rd party language services is seeking a Controller to support year-end close, audit preparation, and ongoing accounting oversight across a complex environment. Salary DOE, $80-$250k ABOUT OUR CLIENT
Global provider of services supporting a variety of language programs
Known for a culture of accountability, agility, and supporting teams operating in high-stakes environments
Collaborative, fast-moving environment where financial accuracy directly supports mission success
Opportunity to lead critical close, compliance, and audit functions within a highly regulated setting
The Controller position offers a high-level of agency and flexibility - 100% Remote! RESPONSIBILITIES OF THE CONTROLLER
The Controller will lead November and December close activities and oversee year-end close
The Controller will prepare audit and tax documentation and coordinate audit workflows
Oversee ongoing accounting operations including treasury, banking, and global payments
Ensure compliance with FAR, CAS, and government audit requirements while guiding the accounting team PREFERRED QUALIFICATIONS FOR THE CONTROLLER
Must have 10+ years of progressive accounting experience
Must hold an active CPA; exceptional non-CPA candidates may be considered
Must have experience with FAR and CAS compliance
Experience with DCAA/DCMA audits is a plus, not a requirement
Government contracting, audit/compliance, or treasury/global experience is a plus Salary DOE, $80-$250k 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"; });