Journal Entry Review
Pre-posting review of proposed JEs. Mechanical validation + risk-pattern detection. Best in Cowork when supporting files accompany the JE listing; Excel add-in when the JEs are in a workbook.
Required inputs
- JE listing — CSV, XLSX, or the
JEs_Proposedtab from another skill's output. Must conform toworkpaper-standards/references/je-template.md:JE_ID,Date,Account,Debit,Credit,Memo,Support Reference,Preparer,Reviewer
- Optional but recommended: support folder — files referenced in
Support Referenceso the skill can verify they exist. - firm-config — uses
materiality.je_*andapproval-matrix.md.
Workflow
Validate mechanics. Run
scripts/validate_je.py:- Debits equal credits per entry (within $0.01)
- All
Accountvalues exist inchart-of-accounts.csvand are active Datefalls within an open period perclose-calendar.mdMemonon-emptySupport Referencenon-empty- At least one debit line and one credit line per entry
Any failure →
REJECTwith the specific reason.Detect risk patterns. Run
scripts/risk_patterns.py:- Round dollar above threshold — amount is whole hundreds/thousands and ≥
materiality.je_round_dollar_threshold - Manual entry to revenue (4xxx) ≥
materiality.je_revenue_manual_threshold - Manual entry to cash (10xx) ≥
materiality.je_cash_manual_threshold - Late posting — entry dated in prior period, being posted after
materiality.je_late_posting_workday - Near-duplicate within batch — same accounts, same amount, same day, different
JE_ID - Reversal of prior entry — opposite signs to a recent prior-period entry on the same accounts; memo must reference the original JE
- Above preparer authority — entry amount exceeds preparer's per-
approval-matrix.mdlimit
- Round dollar above threshold — amount is whole hundreds/thousands and ≥
Classify each entry. Apply in order:
- Any mechanical failure →
REJECT - Otherwise, any risk pattern that requires preparer input →
NEEDS_CLARIFICATION - Otherwise, amount above preparer authority →
MANUAL_REVIEW_REQUIRED(escalate to the role identified byapproval-matrix.md) - Otherwise →
READY_TO_POST
- Any mechanical failure →
Generate preparer questions for
NEEDS_CLARIFICATIONitems. Specific to the pattern:- Round dollar to revenue: "JE_017 records $50,000 revenue to 4010 as a round dollar amount. Is this an accrual estimate? If so, the memo should reference the source of the estimate and the true-up plan."
- Late posting: "JE_022 is dated 2026-03-31 but is being posted on 2026-05-08 (WD7 of the May close). Why is this only being posted now? Has the prior period been re-opened?"
Separate high-risk entries into their own summary for manager attention. High-risk =
MANUAL_REVIEW_REQUIREDOR multiple risk patterns OR amount > $100K.Output workbook tabs:
Cover— period, totals, batch IDSource_JEs— raw inputValidation_Results— per-entry pass/fail on each mechanical checkRisk_Patterns— per-entry detected patternsClassification—READY_TO_POST/NEEDS_CLARIFICATION/MANUAL_REVIEW_REQUIRED/REJECTwith reasonsQuestions— preparer questions consolidatedHigh_Risk— manager-attention itemsApproval_Routing— forMANUAL_REVIEW_REQUIRED, who needs to signSummary— counts by classification, dollar exposure by classificationEvidence— links each classification back to the rule(s) it triggeredReview_Notes
Invariants
- A balanced entry with weak support is
NEEDS_CLARIFICATION, notREADY_TO_POST. Mechanical correctness is necessary but not sufficient. - Never approve entries above the preparer's authority threshold. Always escalate, regardless of how clean they look.
- Reversals must reference the original
JE_IDin the memo. A reversal with a thin memo isNEEDS_CLARIFICATIONeven if it ties to a prior entry the skill identified. - Don't synthesize a "this looks fine" approval. If the skill flags nothing, it states the checks that passed — not a vague endorsement.
When to say "I don't know"
Support Referencepoints to a file the skill can't find → flag asNEEDS_CLARIFICATION("Support file not found at referenced path"). Don't approve.- Account isn't in the chart but looks like a typo of an active account → flag, suggest the likely intended account, don't auto-correct.
- Entry pattern matches a reversal but no prior entry can be located in the lookback window → flag as
NEEDS_CLARIFICATION, ask the preparer to provide the original.