← Files VibooksARCHIVED FILE

skills/vibooks/references/workflows/evidence-review.md

24.7 KB · Oct 5, 2026 · 18:30 UTC

↓ Download file

# Independent Evidence Review

## Contents

- Purpose and boundary
- Complete-review rule
- Accounting-standard boundary
- Isolation rules
- Inputs
- Statement-evidence boundary
- Prohibited reuse
- Allowed tools
- Extraction independence
- Review workflow
- Review scopes
- Professional criteria
- Check matrix
- Output contract
- Auto-fix boundary
- Completion standard

## Purpose And Boundary

Use independent evidence review when the user asks an agent to check
AI-assisted Vibooks bookkeeping, posted transactions, draft work, or a period
close against original source evidence.

Vibooks remains the system of record. The review agent is a quality-control
workflow, not a substitute for owner or accountant judgment. By default it
produces an exception report and recommended fixes only; it does not mutate the
ledger.

Do not present independent evidence review as an audit, assurance engagement,
tax filing opinion, or blanket GAAP, IFRS, ASPE, or local-standards
certification. It is a bookkeeping quality-control review against the book's
configured policies, source evidence, and professional bookkeeping criteria.

## Complete-Review Rule

Default to complete review for the requested scope. Complete review means every
object in scope is enumerated, assigned a review status, and included in the
coverage totals. Do not silently narrow a broad request into sampling.

Before reviewing, state the review type:

- `complete_review`: every object in the declared scope will be checked
- `initial_risk_scan`: aggregate checks plus limited inspection; not a full
  review
- `sample_review`: user explicitly requested a sample; not a full review

Use `complete_review` unless the user explicitly asks for an initial scan or
sample. If time, access, evidence volume, missing files, or tool limits prevent
complete review, stop and say the review is blocked or ask to narrow the scope.
Do not replace complete review with sampling by judgment.

Sampling rules:

- use sampling only when the user explicitly asks for it
- label the result as `initial_risk_scan` or `sample_review`
- include the sample size, denominator, selection criteria, and excluded
  population
- do not say the book, month, supplier, account, or transaction population has
  been reviewed
- do not use sampled source documents to support a full-scope conclusion

For any complete review, build a scope register before conclusions:

- evidence or attachment objects in scope
- source documents with direct attachments
- records supported only by statement lines or derived workflows
- bank, debit-card, and credit-card statement lines in scope
- draft and posted Vibooks records in scope
- correction, application, reversal, opening-balance, and generated entries
  that need traceability rather than direct receipt matching

The final report must reconcile the denominator to reviewed statuses. If the
scope contains 146 evidence or ledger objects, the report must account for all
146, not only the subset with inspected PDFs.

## Accounting-Standard Boundary

Evaluate every record against the book's actual setup and professional
bookkeeping practice:

- accounting basis and book policy, such as cash, accrual, tax, or
  accountant-approved adjustments
- jurisdiction profile, statutory tax codes, tax rounding policy, claimability,
  and filing-period assumptions available in Vibooks
- chart of accounts, account roles, statement-account kind, subledger controls,
  and period controls
- first-class Vibooks workflows for invoices, bills, receipts, payments,
  expenses, refunds, transfers, settlements, reconciliations, and corrections
- source evidence, owner explanations, accountant notes, and prior confirmed
  patterns

When a treatment depends on professional judgment outside the available
evidence, mark it `needs_user` or `unknown`. Do not invent a policy, tax
treatment, contact, account, cutoff date, or standards conclusion.

## Isolation Rules

Start each review as a new run:

1. create a fresh working directory outside any prior bookkeeping-agent
   workspace
2. build a review input bundle from original evidence and a read-only Vibooks
   ledger snapshot or API reads
3. write all review outputs into the new review directory
4. keep the ledger read-only unless the user explicitly approves a correction
   workflow

At the start of the review, state the isolation boundary:

```text
Review isolation statement:
- Working directory: <fresh-review-directory>
- Evidence source: original documents only
- Bookkeeping artifacts used: none
- Ledger access: read-only
- Ledger mutation allowed: no
```

## Inputs

Use these as primary or comparison inputs:

- original receipts, supplier invoices, customer invoices, statements,
  contracts, processor reports, payout reports, and payment confirmations
- original bank, debit-card, and credit-card statement files or statement-line
  evidence
- Vibooks posted or draft results read through official API or CLI surfaces
- Vibooks chart of accounts, tax codes, jurisdiction profile, contacts,
  items, and reconciliation status
- prior confirmed contact aliases or supplier patterns only as supporting
  evidence

Treat Vibooks bookkeeping results as the object under review. Do not treat
them as source evidence.

## Statement-Evidence Boundary

Bank, debit-card, and credit-card statements are external evidence of the
observable account movement they report. Subject to authenticity and
readability, they can support the statement account, amount, displayed payee or
memo, the per-line transaction and posting dates actually shown, and the
account balance used for reconciliation. Keep transaction date, posting date,
and statement period-end as separate source facts when the statement provides
them.

Statement evidence does not, by itself, establish:

- what goods or services were supplied or why the activity was business-related
- the complete legal identity or role of the underlying counterparty
- whether the activity is revenue, expense, asset, liability, loan, transfer,
  owner activity, refund, prepayment, or another accounting treatment
- the recognition or cutoff date when the book uses accrual accounting
- deductibility, commodity-tax entitlement, tax rate, tax amount, or the
  statutory documentary information required by the jurisdiction

For transaction-like records, evaluate these evidence conclusions separately:

- `payment_or_receipt_supported`: payment or receipt, amount, and applicable
  date are supported under the payment method and jurisdiction profile; do not
  pass this conclusion merely because account movement is visible
- `business_nature_supported`: the underlying business purpose and accounting
  treatment are supported
- `recognition_date_supported`: the date used under the book's accounting basis
  is supported
- `tax_documentation_supported`: the evidence meets the applicable
  jurisdiction's documentary requirements for the claimed tax treatment

`statement_supported` is a provenance label, not an item-level sufficiency or
pass status. Do not mark an item `pass` merely because a statement proves that
money moved. A bank-originated item such as an account fee or interest, or a
clearly evidenced transfer between the book's own accounts, may rely primarily
on statement evidence when that evidence establishes the full treatment and
the jurisdiction profile does not require something more.

For matching and reconciliation, Vibooks stores one per-line `statement_date`.
When the source shows both transaction and posting dates, use the financial
institution's posting or clearing date as `statement_date` and retain the
transaction date in the original statement plus the line `reference` or `note`.
If the source provides only one per-line date, record that date and identify its
type as known or unknown; never silently relabel it. This storage choice does
not decide the bookkeeping recognition date.

For cash-basis books, select the payment or receipt date under the book policy,
payment method, and jurisdiction rules. That may be a retained transaction date
rather than Vibooks' matching-oriented `statement_date`. The statement
period-end or closing date is not the line's payment or receipt date and must
not be used merely because the line appears on that statement. For
accrual-basis books, do not substitute the settlement, transaction, or posting
date for the invoice, supply, service, delivery, or other recognition date.

An owner or accountant explanation may support bookkeeping classification or
resolve why another document is unavailable. It does not replace an invoice,
receipt, prescribed tax document, or other source record when the jurisdiction
requires one. Mark the affected evidence conclusion `warning`, `fail`,
`needs_user`, or `unknown` as appropriate, and do not claim a deduction or
commodity-tax entitlement that the available evidence cannot support.

Use the book's jurisdiction profile to decide documentary sufficiency. When a
material local evidence rule is not documented, research the current official
tax authority, law, or standards guidance before concluding. Until the rule is
confirmed, use `needs_user` or `unknown` rather than presenting the item as
locally compliant.

## Prohibited Reuse

Do not use local tools or artifacts that may repeat the bookkeeping agent's
mistake path:

- receipt parsers, statement parsers, importers, auto-categorizers, or vendor
  normalization scripts used for posting
- OCR caches, extraction JSON, classification JSON, importer staging files, or
  intermediate objects created by the bookkeeping run
- bookkeeping-agent chain-of-thought, explanations, confidence scores, or
  inferred tax/contact classifications
- prior exception reports as proof for the current document

If a value must be checked from a source document, re-read the original source
document visually or from the source statement evidence in the review run.

## Allowed Tools

Use tools that preserve review independence:

- PDF rendering, image viewing, cropping, rotation, and zooming used only to
  inspect original evidence
- deterministic arithmetic for totals, tax splits, rates, date comparisons,
  and documented rounding tolerances
- official Vibooks API or CLI reads for the ledger state being reviewed
- official Vibooks reports, tax summaries, reconciliation summaries, and
  accountant handoff workpapers as comparison surfaces

Rendering a PDF to an image is allowed. Business extraction from an existing
local parser or cache is not allowed.

Do not invent materiality thresholds. Use materiality only when it is explicitly
defined by the user, accountant, book policy, or jurisdiction workflow. Without
that documented threshold, treat non-rounding differences as `warning`, `fail`,
`needs_user`, or `unknown` according to the check result. Never waive statutory
tax, source total, bank or card reconciliation amount, duplicate-posting risk,
or closed-period impact as immaterial unless the user or accountant explicitly
directs that treatment.

## Extraction Independence

New review scripts may assist the review, but they do not become source
evidence.

Allowed script-assisted tasks:

- render PDFs or images
- crop, rotate, enhance, or split pages for visual inspection
- calculate totals, tax rates, date ranges, and coverage totals
- generate scope registers, check matrices, and report skeletons from
  independently reviewed facts

Script-extracted receipt, invoice, or statement fields are candidate values
only. For material fields such as date, counterparty, subtotal, tax,
adjustments, total, payment account, and document number, confirm the value
visually against the original evidence or mark the check `unknown` or
`needs_user`. Do not pass a record only because a new script's OCR or parser
output matches Vibooks.

Record field provenance whenever source facts support a conclusion, whether the
source was inspected visually or with script assistance. In particular, record
`statement_supported` whenever original statement facts support a conclusion;
do not make this provenance conditional on OCR or parser use.

- `visual_confirmed`: value was visually confirmed from original evidence
- `script_candidate_only`: value came from script output and was not confirmed
- `ledger_only`: value exists only in Vibooks and lacks source confirmation
- `statement_supported`: an observable account-movement value is supported by
  original statement evidence; this is provenance, not a sufficiency or pass
  conclusion
- `owner_or_accountant_explained`: value is supported by documented
  explanation rather than a source document

## Review Workflow

1. define the scope: one transaction, one supplier or customer, one account,
   one month, or one book close
2. declare `complete_review`, `initial_risk_scan`, or `sample_review`; default
   to `complete_review`
3. enumerate the full scope register and denominator before making conclusions
4. create the fresh review workspace and isolation statement
5. gather original evidence and read-only Vibooks state
6. independently extract evidence facts from every applicable source document
   in scope
7. compare source facts to Vibooks records and reports
8. complete the required check matrix for each scoped object
9. classify each scoped object as `pass`, `warning`, `fail`, `needs_user`, or
   `unknown`
10. produce structured exceptions with evidence, severity, recommended fix, and
   auto-fix safety
11. write a human-readable review report in the user's language with
   item-by-item results, then include JSON artifacts only as machine-readable
   support
12. stop before mutating Vibooks unless the user authorizes a specific official
   correction workflow

Read-only Vibooks `verify`, reconciliation summaries, task lists, tax summaries,
attachment coverage, and period reports are useful aggregate checks. They do
not substitute for item-by-item evidence review when the requested scope is a
complete review.

## Review Scopes

### Single Transaction

Check whether one draft or posted record can be trusted:

- source total, subtotal, tax, tips, shipping, discounts, adjustments, and
  document date
- bank or card statement amount, date, payee, memo, and statement account
- supplier, customer, employee, owner, lender, or other counterparty
- tax code, tax amount, claimable ratio, and control-account direction
- accounting treatment: invoice, bill, sales receipt, expense, receipt,
  payment, transfer, loan funding or repayment, owner contribution or draw,
  refund, prepayment, deferred revenue, asset, COGS, or journal
- duplicate risk across attachments, bank lines, source documents, and posted
  entries

### Supplier Or Customer Pattern

Compare a party's current documents with prior confirmed patterns:

- recurring tax treatment and invoice structure
- stable merchant, legal, store, and bank-memo aliases
- normal expense or revenue accounts, items, and tax codes
- expected subtotal/tax/total layout and adjustment lines
- sudden tax amount, contact, account, or source-document format drift

Use prior patterns to flag anomalies, not to override current source evidence.

### Month Or Account

Check whether a period is complete enough for close:

- every statement line is imported, matched, explained, or still open
- bank and debit balances tie to statements
- credit-card liability balances tie to card statements
- transfers and card payments are not misposted as revenue or expense
- duplicate bank-feed and manual activity is not present
- tax summary movements are plausible against source documents and posted
  activity
- suspense, uncategorized, unmatched, unapplied, or missing-evidence items are
  resolved or clearly listed as exceptions

For a complete month or account review, classify every statement line and every
scoped ledger or evidence object. A reconciliation summary can prove account
balance tie-out, but it does not prove that every source document's date,
counterparty, subtotal, tax, total, account, and posting treatment were checked.

### Book Close

Check close readiness:

- trial balance balances
- balance sheet, income statement, general ledger, AR/AP aging, tax summary,
  evidence exception report, attachment manifest, and reconciliation summary
  are internally consistent
- all review exceptions are either corrected, owner-confirmed, or listed for
  accountant handoff

## Professional Criteria

Apply these criteria before calling work reviewed:

- source evidence priority: original documents and statements outrank ledger
  guesses, AI reasoning, and historical defaults, but each source supports only
  the facts it actually contains
- completeness: all source activity in scope is accounted for or explained
- existence: every posted activity in scope has real source support or an
  owner-confirmed explanation, while any unmet jurisdictional document
  requirement remains an explicit exception
- amount accuracy: totals, splits, currency, fees, discounts, refunds, and
  partial settlements are consistent
- tax accuracy: statutory tax lines, zero-rated, exempt, out-of-scope, included
  tax, non-tax levies, recoverable/payable direction, and claimability are not
  conflated
- accounting treatment: use the correct first-class workflow before manual
  journals and avoid treating transfers, card payments, loans, owner activity,
  refunds, deposits, and prepayments as ordinary income or expense
- counterparty accuracy: bank memos, document names, aliases, and historical
  matches support the selected customer or vendor
- cutoff: document dates, payment dates, per-line statement transaction or
  posting dates, and period boundaries are not interchanged
- consistency: similar activity is treated consistently unless source evidence
  explains the difference
- reconciliation: statement-backed accounts tie to statement evidence
- traceability: every exception states the evidence reviewed, the mismatch, the
  recommendation, and whether user or accountant confirmation is needed

## Check Matrix

For complete review, produce a check matrix before final conclusions. Each
scoped item must have every required check marked with one of these statuses:

- `pass`
- `warning`
- `fail`
- `needs_user`
- `unknown`
- `not_applicable`

Use `not_applicable` only when the check truly does not apply to that item
type, and explain why. Use `unknown` when the check applies but the evidence is
missing, unreadable, unavailable, or professionally inconclusive.

For each required check, include:

- status
- evidence reviewed
- field provenance for material source values, including `statement_supported`
  whenever original statement facts support a conclusion
- reason for `warning`, `fail`, `needs_user`, `unknown`, or `not_applicable`
- recommended action, or `none`

The item final status is the highest-risk status across its required checks.
Do not mark an item `pass` if any required check is `warning`, `fail`,
`needs_user`, or `unknown`.

## Output Contract

Write the user-facing report first. It must be in the user's language and it
must be readable without opening JSON. JSON artifacts such as
`review_report.json` are supporting workpapers only; do not use JSON as the
primary user report.

The user-facing report must start with:

- review type: complete review, initial risk scan, or sample review
- exact scope and denominator
- coverage counts by status
- whether every item in scope was reviewed
- the discovered issues, or a clear statement that no issues were found in the
  completed scope
- what remains blocked, unknown, or outside scope

Then include an item-by-item review table or grouped item list. For every
scoped item, show:

- item reference and type
- final status
- source evidence reviewed
- required checks and their conclusions
- field provenance for material source values, including `statement_supported`
  whenever original statement facts support a conclusion
- any mismatch, uncertainty, or missing evidence
- recommended action or `none`

For transaction-like records, include required checks such as:

- evidence present and readable
- payment or receipt supported
- business nature supported
- recognition date supported under the book's accounting basis
- jurisdictional tax documentation supported or explicitly unresolved
- source date matches or is explained
- counterparty matches or is explained
- subtotal, tax, adjustments, and total match or are explained
- tax code and tax direction are correct or unresolved
- posting treatment is correct or unresolved
- bank/card statement line match or traceability is present
- duplicate check result

For bank or card statement lines, include required checks such as:

- line imported or accounted for
- matched, reviewed exception, or unmatched status
- amount and sign match the statement account type
- transfer, card payment, fee, refund, loan, or owner activity treatment
- linked source document or explanation
- whether the statement supports only account movement or also supports the
  underlying treatment under the jurisdiction profile

Do not treat a documented explanation as a substitute for a locally required
invoice, receipt, prescribed tax document, or other source record.

For correction, application, reversal, opening-balance, and generated entries,
include traceability checks instead of forcing receipt-style checks:

- source workflow or parent document
- reason or review note
- linked evidence or owner/accountant explanation
- period and account impact
- whether further user or accountant confirmation is needed

Only after the readable report, write a machine-readable report such as
`review_report.json`. Use one object per scoped item or finding. For complete
review, include a coverage entry for every scoped item even when the item
passes. For issue reports, include every `warning`, `fail`, `needs_user`, and
`unknown` item:

```json
{
  "scope": "transaction",
  "status": "needs_user",
  "issue_type": "tax_split_mismatch",
  "severity": "high",
  "record_ref": "expense:<id-or-number>",
  "evidence": {
    "source_total": "113.00",
    "source_tax": "13.00",
    "book_total": "113.00",
    "book_tax": "0.00"
  },
  "recommendation": "Use the applicable HST tax code and split 13.00 as purchase tax.",
  "safe_to_auto_fix": false,
  "confirmation_needed": "owner_or_accountant"
}
```

Top-level report fields should include:

```json
{
  "review_type": "complete_review",
  "complete_scope_reviewed": true,
  "sampling_used": false,
  "scope": {
    "book": "<book-name-or-id>",
    "date_from": "2026-05-01",
    "date_to": "2026-05-31",
    "population_count": 146
  },
  "coverage": {
    "pass": 129,
    "warning": 10,
    "fail": 2,
    "needs_user": 4,
    "unknown": 1,
    "total": 146
  }
}
```

Allowed item `status` values:

- `pass`
- `warning`
- `fail`
- `needs_user`
- `unknown`

Severity:

- `high`: affects tax, revenue, expense, asset/liability classification,
  bank/card reconciliation, duplicate posting, or close readiness
- `medium`: affects counterparty, period, category consistency, or evidence
  quality
- `low`: affects memo, non-material metadata, or documentation quality

## Auto-Fix Boundary

Default to no mutation. Mark `safe_to_auto_fix` as `true` only when source
evidence, ledger state, and the official Vibooks correction workflow are clear.

Never auto-fix:

- ambiguous accounting treatment
- uncertain tax status
- unclear customer or vendor identity
- closed-period changes
- material revenue, expense, asset, liability, AR, AP, loan, owner-equity, or
  tax changes that need owner or accountant judgment

When the user approves a correction, use the normal Vibooks correction,
replacement, reversal, reopen, apply, reconciliation, or tax-code correction
workflow. Do not edit storage directly.

## Completion Standard

An independent evidence review is complete only when:

- the isolation statement is recorded
- prohibited bookkeeping artifacts were not used
- the review type is declared as `complete_review`, `initial_risk_scan`, or
  `sample_review`
- for `complete_review`, every scoped item is enumerated and marked `pass`,
  `warning`, `fail`, `needs_user`, or `unknown`
- for `complete_review`, every required check for every scoped item is marked
  `pass`, `warning`, `fail`, `needs_user`, `unknown`, or `not_applicable`
- every `unknown` and `not_applicable` check has a reason
- material script-extracted source fields are visually confirmed or clearly
  labeled as unconfirmed candidate values
- statement-supported transaction-like items separately conclude payment or
  receipt support, business nature, recognition date, and jurisdictional tax
  documentation; no item passes from account-movement evidence alone
- the coverage totals add up to the declared scope denominator
- exceptions include source evidence, ledger comparison, severity,
  recommendation, and confirmation requirement
- unresolved issues are summarized for the owner or accountant
- the user receives a readable item-by-item report in the user's language, not
  only JSON or a high-level summary
- no ledger mutation occurred without explicit user approval

If any complete-review requirement is not met, say the work is incomplete and
label it as an initial scan, partial review, or blocked review. Do not present
sampled evidence as a full-scope conclusion.

SHA-256: 53e9e9c81643d456974e051cc0e80b1751bac14450ec5de1b99a5f3082e0f27d