Post-close entries, year-end clustering, weekend postings, reversal pairs, and seldom-paired account combinations — the timing and pairing tells that signal an entry made to move a number rather than record a transaction.
Bank or purchase routed through a manual JV instead of its sub-ledger, structuring just below an approval ceiling, a new account first used by a JV, nature-aware duplicates, empty narration at a material value, round amounts, and unbalanced JEs — each one a place a control was stepped around.
First-digit and first-two-digit distributions tested by chi-squared against the Benford expectation, reported with an actual p-value — and the population size it was computed on, so a small or naturally non-conforming set isn't read as a false signal. Drill from any over- or under-represented digit straight to the underlying vouchers.
An account-to-account network of where value moved, so a circular or unusual flow between related ledgers is something you can see and trace — not something buried in a 400-page printout.
Every journal entry for the period is tested against the SA 240 management-override risk — not a judgemental or random sample. Coverage you can state in the working paper, with the rows behind each flag.
Every flag is auto-classified by your materiality band — above performance materiality, above the clearly-trivial threshold, or below it — so the partner reviews what matters first and nothing material slips below the line.
Each finding is nature-tagged in line with SA 450, separating factual exceptions from judgemental and projected ones, ready to roll into your summary of uncorrected misstatements.
From a spiking first-two-digit pair, drill straight to the vouchers that drove it — the statistic and the source rows in one place, so an anomaly becomes a list of entries to examine, not a hunch.
JVs clustered just below an approval limit are surfaced together, with the ceiling cited — the pattern that a single-entry review will almost always miss.
Facts are computed from the ledger; the AI narrates the finding in plain English but never invents a figure. Run the same file twice and you get the same numbers — reproducible for review and re-performance.
Every flag is timestamped, cites the rule it fired on, and traces to the exact source row — a re-performable evidence trail that supports your own SA 240 procedure, exportable into your working-paper file. The engine lays out the evidence; you perform the procedure, reach the conclusion and own the opinion.
Tests are gated by your SA 320 materiality, so below-threshold trivia stays out of the partner's way. The high-frequency tells — round amounts, weekend postings — only reach the queue when they clear performance materiality, so a cash-heavy client's routine round figures or a Saturday posting run don't flood the review. What lands is the exceptions that could matter to the opinion.
Blank or garbled narrations, amended and re-posted entries, inconsistent account naming and multi-registration clients — tested as your books actually arrive, whether they export from Tally, an ERP or raw Excel/CSV, not a clean demo dataset.
The same ledger produces the same flags and the same p-values on every run. Nothing depends on a model's mood — the figures are computed, the narration is generated, and the two are kept separate.
No more eyeballing a sampled tab of JVs hoping the odd one jumps out. The full population is tested; only the flagged entries need a human, each one traced to its voucher.
Open the flags by materiality band, not the whole ledger. Every one is nature-tagged under SA 450 and quantified, so the review is a queue of exceptions, not a fishing trip.
Your SA 240 procedure is defensible — 100% coverage stated, the Benford working and the 12 red-flag tests shown, the evidence trail re-performable for peer review and inspection. Run the same tests the same way across every engagement and office, so a JV review in one file is defensible in every other.