Bookkeeper Position Overview:
We are seeking a detail-oriented and experienced Bookkeeper to join our team and collaborate closely with an outsourced CPA firm. The ideal candidate will handle a variety of bookkeeping tasks, ensuring accurate financial records and efficient operations. This role is perfect for someone who thrives in a dynamic environment, has excellent organizational skills, and enjoys contributing to the financial health of businesses. Key Responsibilities of Bookkeeper:
Maintain accurate financial records by recording day-to-day financial transactions.
Reconcile bank, credit card, and other accounts on a regular basis.
Manage accounts payable and accounts receivable, including processing invoices, bills, and payments.
Organize and maintain financial files and supporting documentation.
Identify discrepancies and work proactively to resolve them.
Support the development and improvement of bookkeeping processes and procedures. Qualifications of Bookkeeper:
Proven experience as a bookkeeper or in a similar role.
Strong understanding of accounting principles and financial reporting.
High attention to detail and accuracy in data entry and reconciliation.
Excellent organizational and time-management skills.
Strong communication skills to collaborate with team members and external CPA professionals.
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"; });