wGrow
menu
Inside the Finance Crew: drafting the close, signing the file.
AI & Agents 8 April 2026 · 11 min

Inside the Finance Crew: drafting the close, signing the file.

By Scott Li ·

Five narrow finance specialists running the close cycle, financial statements and statutory filings for a Singapore SME caseload — every figure tied to a source row, every filing signed by a registered chartered accountant. How we wired the agent crew under the licence.

The Finance Crew is the close cycle, the financial statements, the tax pack and the AGM kit for a Singapore SME caseload — drafted by five narrow specialists, signed off by a senior chartered accountant, filed against IRAS and ACRA on the calendar that already exists. Five agents: ledger, close, reporting, tax, governance. One human seat that signs. Nothing in the pack leaves the studio without a name beside it.

This is how the crew is wired underneath, why the signature is the architecture, and what the eval rubric looks like when “wrong” means “a section of the Income Tax Act.”

Why “an AI bookkeeper” is not a real product

The temptation when someone says agentic finance is to imagine a single bot that reads invoices, posts journals and files returns. We have prototyped this. It does not work and would not be legal in Singapore even if it did.

Three reasons. Practising-certificate liability. Statutory filings — ECI, GST F5, Form C-S, ACRA Annual Return — are signed under a chartered accountant’s licence. The licence carries personal liability. A model that “files” anything has no licence and no liability; the practitioner does. The practitioner is the architecture, not a feature.

Section-number citations, not industry practice. Tax positions in Singapore cite sections. S19/S19A on capital allowances. Reg 26/27 on GST input-tax restrictions. Partial Tax Exemption schemes. A model trained on global accounting will generate plausibly-shaped tax positions that don’t cite the right section, or cite a section that hasn’t applied since the rules changed. The crew works with citations or it doesn’t ship.

Source-row integrity is non-negotiable. Every figure in the financial statements, the tax computation and the GST F5 must drill back to a ledger row. A model that paraphrases — “approximately 14% increase in admin expense” — has paraphrased away the audit trail. The whole reason a chartered accountant signs is that they sampled rows and the rows reconciled.

The crew is built around these three constraints. Five agents that draft. One CA that signs. Every line traceable.

The shape

FIVE SPECIALISTS · ONE BRIEF EACHLEDGER.AGENTbook-keep+ reconcileCLOSE.AGENTaccruals · depnFX revalREPORTING.AGENTSOCI · SOFPSCF · varianceTAX.AGENTGST F5 · ECIForm C-SGOVERNANCEACRA ARXBRL · AGMCHARTERED ACCOUNTANT (HUMAN) · SIGNS EVERY FIGURE · SIGNS EVERY FILINGsamples rows · approves classifications · submits under practising certificateCADENCEMONTHLYclose cycletrial balancemanagement accQUARTERLYGST F5 (9%)due last dayof next monthANNUAL · TAXECI ≤ 3 mo of FYEForm C-S 30 NovANNUAL · GOVERNANCEAGM windowACRA ARXBRL FSFIG. 01 · FIVE AGENTS · FOUR CADENCES · ONE SIGNATURE

The five agents handle work in sequence — the ledger agent’s output is the close agent’s input, the close agent’s output is the reporting agent’s input, and so on. The chartered accountant reviews at each handoff and reads the final pack end-to-end before signing. The cadence is fixed. Books close the same week every month. Quarterly GST F5 by the last day of the next month. Annual ECI within three months of FYE. Form C-S by 30 November. AGM and ACRA Annual Return on the statutory clock. The crew runs the calendar; nothing is “the bookkeeper got busy this month.”

What each agent actually does

ledger.agent pulls accounting exports, bank statements, AP/AR invoices, payroll and expense claims into one source ledger. Classifies against the chart of accounts, reconciles to the bank, ages receivables and payables. Every line carries a link back to the source document. Nothing is paraphrased into the data. If the ledger agent can’t classify a row with confidence, it flags the row for the chartered accountant to call.

close.agent posts accruals and prepayments, runs depreciation and right-of-use amortisation, reconciles intercompany balances, computes FX revaluation, accrues for unbilled revenue and bonus provisions. Hands a closed trial balance over the wall — same week, every month. The agent’s output is a reconciliation pack, not just numbers — every accrual carries its supporting assumption.

reporting.agent drafts Statement of Comprehensive Income, Statement of Financial Position and Statement of Cash Flows in SFRS-compliant format with prior-period comparatives, note references, and a variance commentary that names the driver — not “expenses increased.” The variance commentary is what the CA reads first; the commentary either names a real driver (“admin up 14% on Q3 head-count additions”) or it gets sent back.

tax.agent runs GST F5 every quarter at the 9% standard rate. ECI within three months of FYE. Form C-S or Form C — chargeable-income reconciliation, capital allowances under S19/S19A, Partial Tax Exemption, withholding tax on cross-border payments. Every position cites the section number. “Industry practice” is not a citation. Borderline items flag for the CA’s call rather than guess.

governance.agent drafts Director’s Report, AGM resolutions, dividend declarations, the Annual Return to ACRA, and the XBRL filing in the right taxonomy. Tracks every statutory clock — incorporation anniversary, AR due date, AGM window, FS lodgement — so a deadline never gets discovered late.

The signing chain

FIGUREon the FSLEDGER ROWclassifiedSOURCE DOCinvoice · statement · journalCA SAMPLESdrills figure → rowdeep linkdeep linkdeep linkREFUSAL · NO FIGURE WITHOUT A SOURCE ROWa number that can’t trace back to a row gets flagged, not draftedFIG. 02 · EVERY FIGURE TRACES TO A ROW · EVERY ROW TO A DOC

This is what makes the crew sign-able. Every line in the FS, the tax computation and the GST F5 deep-links to the underlying ledger row. The accountant clicks a figure, the system shows the row, the row links to the source document. No “trust me” reconciliations. The CA samples — they don’t have to read every row, but they can drill any row, and the agent has to be able to show its work.

A figure that can’t trace back to a row gets flagged, not drafted. This is non-negotiable. We have spent more time on this drilling capability than on any single agent’s prompt; it is the architecture.

How the chartered accountant signs the pack

Five steps the CA actually takes, in order, every close.

Read the variance, not the totals. Reporting drafts the FS with line-level commentary against prior period. The accountant reads the deltas first — a 14% jump in admin expense gets a why before the totals get a tick. The variance commentary is what the agent has to defend.

Drill from figure to row. Every line deep-links to the underlying ledger row. The accountant samples; the agent shows the row.

Approve the classifications. Disallowable add-backs, capital allowances under S19 vs S19A, GST input-tax restrictions under Reg 26/27 — the agent proposes, the accountant approves the call. Borderline items flag rather than guess. We track every borderline decision in a per-client classification log; next period’s agent reads the log so we don’t re-litigate the same call.

Sign the filings. ECI, GST F5, Form C-S, ACRA Annual Return, XBRL FS — every one has a signature line. The crew prepares the file; a chartered accountant submits it under their practising certificate.

Close the loop with the director. Director’s Report, AGM resolutions, signed FS go to the company directors with a one-page management summary that names the figures the directors actually need to know — not a 40-page paraphrase.

What we won’t ship

No real-client screenshots, no real-client data on the platform. The Finance Crew page on the public site shows the shape and four sample outputs against a fictional company. We won’t dress up real engagements as marketing material; the engagements have signing duty attached and we honour it.

No figure without a source row. Already noted; this is the gate that runs at FS render. A figure that fails to trace gets flagged as UNTRACED and the section is held until reconciled.

No filing without a chartered accountant. The publish endpoint for any statutory filing requires a CA-signed token. Agents can prepare; only a registered CA can submit.

No “AI bookkeeper” replacing the practitioner. Judgement calls — disallowable add-backs, capital-allowance claims, related-party disclosure, going-concern — sit with the chartered accountant. The crew handles the close cycle, the schedules, the reconciliations and the drafts. We don’t simulate professional judgement.

No tax position without a section number. Add-backs, capital allowances, exemptions, withholding — every position cites the IRAS section. “Industry practice” is not a citation. The renderer rejects a tax computation that has bare positions.

How we built it

Phase 1 — ledger and close, no FS. Eight weeks. We built the ledger and close agents first, with no reporting on top. The output for the first three closes was a clean trial balance with full reconciliations, hand-prepared FS by the CA. We wanted to know whether the agents were producing a TB the CA could trust before adding any drafting layer.

Phase 2 — reporting agent. Five weeks. SOCI, SOFP, SCF in SFRS format with comparatives. The variance-commentary requirement was the hardest part — the first version produced “expenses increased materially,” which is useless. We tightened the tier-01 prompt to “name the driver, in plain English, in one clause” and added a check that rejected variance commentary that didn’t reference at least one ledger row.

Phase 3 — tax agent. Six weeks. GST F5 first, then ECI, then Form C-S. Each one is its own template; each one has its own section-number citation requirements. The capital-allowances schedule was the hardest — S19 vs S19A choices depend on the asset’s nature and the company’s treatment in prior years, and the agent has to read the prior years’ schedules to be consistent.

Phase 4 — governance agent. Three weeks. ACRA Annual Return, XBRL filing in the right taxonomy, AGM resolution drafting. The XBRL part was tedious — element mapping has to match the published taxonomy version exactly — but mostly mechanical.

Phase 5 — drilling, audit trail, classification log. Four weeks. Building the deep-link drilling from any figure to its source row. This is the audit trail the CA actually uses; without it the crew is a draft generator and the CA has to do the reconciliation work themselves. After this phase the crew became actually useful for the CA, not just impressive on a demo.

Total: about six months from first ledger import to the chartered accountant signing a client’s first agent-drafted Form C-S.

What I’d build differently

Three.

Drilling first, drafting second. We built the agents and bolted on drilling later. The right order is the opposite — build the figure-to-row-to-document deep-link infrastructure first, then layer agents on top. Drilling is the architecture.

Per-client classification log from day one. We didn’t have a structured log of “this client treats this expense as add-back” until phase three of phase three. Every period we re-litigated calls the CA had already made. The log should be tier-04 shared memory, written by the CA on every classification, read by the tax agent on every period.

The XBRL taxonomy version is a config, not a constant. ACRA updates the taxonomy. We had a single hardcoded version reference for the first six months. When ACRA updated, we had to chase the change across multiple files. The taxonomy version is now config; updates are one-place.

The shape ports. Five specialists for a Singapore SME accounting caseload becomes a different cardinality for a different jurisdiction or a different scale. The mechanics — narrow agents on a real chart of accounts, every figure traceable to a row, every position citing the rule, a registered practitioner in the only seat that signs — hold across every finance function we have looked at.

— Scott Li, wGrow