{
  "name": "Level Open Finance",
  "version": "0.2.1",
  "generatedAt": "2026-10-09",
  "revisionNote": "Synthetic idle-cash example distinguishes average cash from forecast liquidity and a conditional annual interest scenario. The full 13-week forecast now rolls forward, source coverage is explicit, and field-test links identify related examples rather than executable fixtures. The public toolkit is now v0.2.1 with corrected forecast and idle-cash examples; all 20 skills and field-test IDs are retained, and the historical v0.2.0 download remains available. On 2026-10-09, the 15 public field-test definitions moved to version 1.0.2 with reader descriptions, supported split-payment allocation and a gross-payment-to-bank-settlement bridge. The frozen toolkit ZIP remains version 0.2.1.",
  "toolkitLicense": {
    "spdx": "MIT",
    "appliesTo": "The separate downloadable Level Open Finance toolkit is MIT. This registry and the /data/finance-systems/*.json example files are CC-BY-4.0."
  },
  "license": {
    "name": "Creative Commons Attribution 4.0 International",
    "spdx": "CC-BY-4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "privacy": "Synthetic examples and reusable finance logic only. No client records, workpapers, credentials, communications, or private configurations.",
  "operatingModel": "Recorded finance judgment, AI-assisted investigation, final human judgment.",
  "fieldTests": [
    {
      "id": "FST-001",
      "capability": "cost-detail-footing",
      "title": "Same total, different population",
      "ruleIds": [
        "LOR-002",
        "LOR-024",
        "LOR-033"
      ],
      "test": "Compare same-cutoff record identities as well as the aggregate total.",
      "expectedOutcome": "A matching total without matching detail remains an exception.",
      "refusalConditions": [
        "Unknown cutoff",
        "Missing record identities"
      ],
      "reader": {
        "title": "Matching totals can hide different records",
        "test": "Compare the individual records for the same date, as well as the total.",
        "expectedOutcome": "A matching total is not enough if records are missing or different.",
        "pause": "The comparison date or record IDs are missing."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/cost-detail-footing.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/cost-detail-footing.json",
      "canonicalUrl": "/finance-systems/cost-detail-footing/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-002",
      "capability": "cost-detail-footing",
      "title": "Export manifest and fingerprint",
      "ruleIds": [
        "LOR-014",
        "LOR-024",
        "LOR-060"
      ],
      "test": "Record source, cutoff, filters, row count, control total, schema, and file fingerprint before use.",
      "expectedOutcome": "A changed or incomplete export is visible before analysis.",
      "refusalConditions": [
        "No source definition",
        "Missing fingerprint"
      ],
      "reader": {
        "title": "Keep a record of each export",
        "test": "Save the source system, report date, filters, row count, total, column names and a file checksum (a digital check for file changes).",
        "expectedOutcome": "The team can tell whether the file changed or was incomplete before using it.",
        "pause": "The source, report settings or file checksum cannot be verified."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/cost-detail-footing.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/cost-detail-footing.json",
      "canonicalUrl": "/finance-systems/cost-detail-footing/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-003",
      "capability": "ar-integrity-review",
      "title": "Invoice to payment to deposit continuity",
      "ruleIds": [
        "LOR-001",
        "LOR-021",
        "LOR-023"
      ],
      "test": "Trace invoice, credit, payment, deposit, open balance, and workflow status at one cutoff.",
      "expectedOutcome": "A closed invoice with unsupported remaining balance is an exception.",
      "refusalConditions": [
        "Missing application evidence",
        "Mixed cutoffs"
      ],
      "reader": {
        "title": "Follow an invoice through to payment",
        "test": "Compare the invoice, credits, payment allocations, deposit, unpaid balance and status as of the same date.",
        "expectedOutcome": "Investigate an invoice marked closed when a remaining balance cannot be explained.",
        "pause": "Payment allocations are missing or the reports use different dates."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/ar-integrity-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/ar-integrity-review.json",
      "canonicalUrl": "/finance-systems/ar-integrity-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-004",
      "capability": "ar-integrity-review",
      "title": "AR and AP cutover open-item footing",
      "ruleIds": [
        "LOR-017",
        "LOR-023",
        "LOR-054"
      ],
      "test": "Foot source and target open-item detail, aging, and control accounts at one documented cutoff.",
      "expectedOutcome": "Aggregate agreement without traceable open items remains unresolved.",
      "refusalConditions": [
        "Missing crosswalk",
        "Unexplained control-account difference"
      ],
      "reader": {
        "title": "Check unpaid balances when changing systems",
        "test": "Compare unpaid invoices and bills, aging reports and the AR and AP balances in the old and new general ledgers at the same cutoff.",
        "expectedOutcome": "Matching totals still need to be supported by the individual unpaid items.",
        "pause": "Old and new record IDs cannot be linked, or a ledger difference is unexplained."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/ar-integrity-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/ar-integrity-review.json",
      "canonicalUrl": "/finance-systems/ar-integrity-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-005",
      "capability": "remittance-matching-review",
      "title": "Exact composite identity",
      "ruleIds": [
        "LOR-019",
        "LOR-021",
        "LOR-027"
      ],
      "test": "Use native references, payer, date, and exact-cent amount before applying a remittance.",
      "expectedOutcome": "Only uniquely supported applications can be approved.",
      "refusalConditions": [
        "Conflicting native identifiers",
        "Cash allocated beyond its remaining amount"
      ],
      "reader": {
        "title": "Confirm which invoice a payment belongs to",
        "test": "Use the payment reference, payer, date and amount to support the allocation.",
        "expectedOutcome": "Approve the allocation only when the evidence identifies the intended invoice or invoices.",
        "pause": "References conflict or the same payment would be counted twice."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/remittance-matching-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/remittance-matching-review.json",
      "canonicalUrl": "/finance-systems/remittance-matching-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-006",
      "capability": "remittance-matching-review",
      "title": "Fuzzy candidate requires review",
      "ruleIds": [
        "LOR-011",
        "LOR-019",
        "LOR-020"
      ],
      "test": "Use name similarity only to rank candidate records with supporting fields visible.",
      "expectedOutcome": "Similarity creates a review candidate, not an accounting identity.",
      "refusalConditions": [
        "No stable identity",
        "Two plausible candidates"
      ],
      "reader": {
        "title": "Similar names need a person to check them",
        "test": "Use name similarity to suggest possible matches and show the other evidence alongside each suggestion.",
        "expectedOutcome": "A similar name suggests a possible match; it does not prove one.",
        "pause": "Stable record IDs are missing or two matches are plausible."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/remittance-matching-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/remittance-matching-review.json",
      "canonicalUrl": "/finance-systems/remittance-matching-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-007",
      "capability": "remittance-matching-review",
      "title": "One payment, several invoices",
      "ruleIds": [
        "LOR-021",
        "LOR-022",
        "LOR-026"
      ],
      "test": "Add up the invoice allocations and any unapplied cash to the supported gross customer payment. Use settlement records to explain fees and other deductions between that payment and the bank deposit.",
      "expectedOutcome": "A grouped application is accepted only when its allocations and any settlement differences are supported.",
      "refusalConditions": [
        "Incomplete components",
        "Non-footing amount",
        "Unsupported settlement differences"
      ],
      "reader": {
        "title": "One payment can cover several invoices",
        "test": "Compare cash applied to invoices plus cash not yet applied with the amount the customer paid before processor fees. Track credits and previously held deposits separately. Use settlement records to explain fees, deductions or several payments combined in the bank deposit.",
        "expectedOutcome": "The customer payment allocations and any bank-settlement differences are supported separately before an accountant approves the application.",
        "pause": "A payment allocation, unapplied cash amount or settlement difference has no supporting record."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/remittance-matching-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/remittance-matching-review.json",
      "canonicalUrl": "/finance-systems/remittance-matching-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-008",
      "capability": "remittance-matching-review",
      "title": "Competing subsets",
      "ruleIds": [
        "LOR-020",
        "LOR-022",
        "LOR-028"
      ],
      "test": "Test whether more than one exact invoice subset could explain one payment.",
      "expectedOutcome": "No subset is selected automatically when alternatives remain.",
      "refusalConditions": [
        "Competing exact subsets",
        "Capped candidate search"
      ],
      "reader": {
        "title": "More than one invoice group can fit a payment",
        "test": "Check whether two different groups of invoices could explain the same payment amount.",
        "expectedOutcome": "Leave the payment unapplied until the payer's details establish the right group.",
        "pause": "Two groups fit or the search stopped before checking all relevant candidates."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/remittance-matching-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/remittance-matching-review.json",
      "canonicalUrl": "/finance-systems/remittance-matching-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-009",
      "capability": "remittance-matching-review",
      "title": "One-cent batch refusal",
      "ruleIds": [
        "LOR-022",
        "LOR-074"
      ],
      "test": "Compare grouped components to cash at integer-cent precision.",
      "expectedOutcome": "A one-cent difference remains an exception until explained.",
      "refusalConditions": [
        "Non-zero difference",
        "Unsupported fee or withholding"
      ],
      "reader": {
        "title": "Investigate even a small payment difference",
        "test": "Compare the invoice amounts and cash received to the cent.",
        "expectedOutcome": "Explain a difference before applying it; a documented fee or adjustment may need a separate entry.",
        "pause": "The difference, fee or withholding has no supporting record."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/remittance-matching-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/remittance-matching-review.json",
      "canonicalUrl": "/finance-systems/remittance-matching-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-010",
      "capability": "remittance-matching-review",
      "title": "Prevent double allocation while allowing split payments",
      "ruleIds": [
        "LOR-003",
        "LOR-021",
        "LOR-075"
      ],
      "test": "Attempt to allocate more than the remaining amount of one source cash line, including across split invoice payments.",
      "expectedOutcome": "Over-allocation is refused; splits within available cash and invoice balances remain eligible.",
      "refusalConditions": [
        "Previously allocated cash would be allocated again"
      ],
      "reader": {
        "title": "Avoid applying the same payment twice",
        "test": "Check whether the same source payment has already been allocated, including when one payment is split across invoices.",
        "expectedOutcome": "A payment may be split, but the allocated amounts must not reuse the same portion of cash.",
        "pause": "An amount already allocated would be allocated again."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/remittance-matching-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/remittance-matching-review.json",
      "canonicalUrl": "/finance-systems/remittance-matching-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-011",
      "capability": "cost-detail-footing",
      "title": "Browser export schema change",
      "ruleIds": [
        "LOR-015",
        "LOR-061",
        "LOR-063"
      ],
      "test": "Require page identity, expected columns, download completion, and resulting population before transformation.",
      "expectedOutcome": "A changed page or schema fails visibly.",
      "refusalConditions": [
        "Missing required column",
        "Unexpected status value"
      ],
      "reader": {
        "title": "Check an export after the screen changes",
        "test": "Confirm the right report, expected columns, completed download and included records before processing the file.",
        "expectedOutcome": "A changed screen or export format needs review before automation continues.",
        "pause": "A required column is missing or a status value is unexpected."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/cost-detail-footing.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/cost-detail-footing.json",
      "canonicalUrl": "/finance-systems/cost-detail-footing/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-012",
      "capability": "month-end-close-preview",
      "title": "AI proposal versus approval",
      "ruleIds": [
        "LOR-016",
        "LOR-067",
        "LOR-071"
      ],
      "test": "Separate an AI-proposed explanation from the source evidence, reviewer decision, and approved action.",
      "expectedOutcome": "The proposal remains unapproved without supporting evidence and review.",
      "refusalConditions": [
        "AI as sole authority",
        "Missing provenance"
      ],
      "reader": {
        "title": "An AI suggestion still needs approval",
        "test": "Show the AI suggestion alongside the source records, reviewer decision and proposed accounting change.",
        "expectedOutcome": "The suggestion remains unapproved until the evidence and required review support it.",
        "pause": "AI is the only support or the original records are missing."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/month-end-close-preview.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/month-end-close-preview.json",
      "canonicalUrl": "/finance-systems/month-end-close-preview/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-013",
      "capability": "ar-integrity-review",
      "title": "Accepted import versus authoritative read-back",
      "ruleIds": [
        "LOR-018",
        "LOR-053",
        "LOR-054"
      ],
      "test": "Compare an import acceptance response with the target record and its financial consequence.",
      "expectedOutcome": "Accepted is not described as financially verified without read-back.",
      "refusalConditions": [
        "No target read-back",
        "Unexpected posted result"
      ],
      "reader": {
        "title": "Check the result after an import succeeds",
        "test": "Open the imported accounting record and check its balance, payment allocation and effect on the books.",
        "expectedOutcome": "An import-success message does not prove the accounting result is correct.",
        "pause": "The posted record cannot be checked or the result is unexpected."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/ar-integrity-review.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/ar-integrity-review.json",
      "canonicalUrl": "/finance-systems/ar-integrity-review/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-014",
      "capability": "month-end-close-preview",
      "title": "Stale mirror versus verified target",
      "ruleIds": [
        "LOR-034",
        "LOR-055",
        "LOR-072"
      ],
      "test": "Compare the verified target state with the analytical mirror fingerprint and refresh state.",
      "expectedOutcome": "A stale mirror remains unknown, not current reporting.",
      "refusalConditions": [
        "Failed read",
        "Mismatched fingerprint"
      ],
      "reader": {
        "title": "A dashboard can be behind the books",
        "test": "Compare the dashboard's data version and refresh time with the records already checked in the accounting system.",
        "expectedOutcome": "A stale dashboard cannot be described as current.",
        "pause": "The refresh failed or the dashboard uses a different version of the records."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/month-end-close-preview.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/month-end-close-preview.json",
      "canonicalUrl": "/finance-systems/month-end-close-preview/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    },
    {
      "id": "FST-015",
      "capability": "reconcile-account",
      "title": "Payroll journal and bank-feed duplicate trace",
      "ruleIds": [
        "LOR-004",
        "LOR-006",
        "LOR-042"
      ],
      "test": "Trace one pay run from register through journal, liabilities, cash settlement, bank match, and job-cost allocation.",
      "expectedOutcome": "A suspected duplicate is classified before any mapping change or deletion.",
      "refusalConditions": [
        "Missing pay-run evidence",
        "Unclear source authority"
      ],
      "reader": {
        "title": "Trace payroll before correcting a suspected duplicate",
        "test": "Follow one pay run through the payroll register, journal, liabilities, bank payment, bank-feed match and job-cost allocation.",
        "expectedOutcome": "Explain whether the entries are a duplicate, an accrual, a settlement or a match before changing accounts or deleting anything.",
        "pause": "Pay-run records are missing or it is unclear which system posted the entry."
      },
      "synthetic": true,
      "fixture": "/data/finance-systems/reconcile-account.json",
      "fixtureRole": "legacy-link-to-related-example-not-executable-test-fixture",
      "relatedExample": "/data/finance-systems/reconcile-account.json",
      "canonicalUrl": "/finance-systems/reconcile-account/",
      "version": "1.0.2",
      "lastReviewed": "2026-10-09"
    }
  ],
  "capabilities": [
    {
      "slug": "reconcile-account",
      "name": "Match bank transactions to the books",
      "status": "available",
      "description": "Compare invented bank and accounting transaction lists. Find supported matches and list the differences that still need review.",
      "page": "/finance-systems/reconcile-account/",
      "skill": "skills/reconcile-account/SKILL.md",
      "example": "/data/finance-systems/reconcile-account.json",
      "humanReviewRequired": true
    },
    {
      "slug": "duplicate-billing",
      "name": "Duplicate supplier invoice check",
      "status": "available",
      "description": "Flag repeated supplier invoice numbers and similar supplier, date and amount combinations. Review the original documents before deciding whether either entry is wrong.",
      "page": "/finance-systems/duplicate-billing/",
      "skill": "skills/duplicate-billing/SKILL.md",
      "example": "/data/finance-systems/duplicate-billing.json",
      "humanReviewRequired": true
    },
    {
      "slug": "revenue-leakage-review",
      "name": "Revenue leakage review",
      "status": "available",
      "description": "Compare invented completed-job and invoice records to find work that may be unbilled, underbilled or awaiting review.",
      "page": "/finance-systems/revenue-leakage-review/",
      "skill": "skills/revenue-leakage-review/SKILL.md",
      "example": "/data/finance-systems/revenue-leakage-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "spend-concentration-review",
      "name": "Supplier spending concentration",
      "status": "available",
      "description": "Add invented spending by supplier and category. Calculate each share of total spend so the owner can review purchasing dependencies.",
      "page": "/finance-systems/spend-concentration-review/",
      "skill": "skills/spend-concentration-review/SKILL.md",
      "example": "/data/finance-systems/spend-concentration-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "margin-trend-review",
      "name": "Margin trend review",
      "status": "available",
      "description": "Calculate gross margin, revenue less direct costs as a share of revenue, from invented period summaries. Compare periods and flag changes large enough to review.",
      "page": "/finance-systems/margin-trend-review/",
      "skill": "skills/margin-trend-review/SKILL.md",
      "example": "/data/finance-systems/margin-trend-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "cost-detail-footing",
      "name": "Check whether cost detail adds up",
      "status": "available",
      "description": "Add invented cost-detail rows and compare their sum with the reported total. This arithmetic check is called footing. Show the difference without changing either source.",
      "page": "/finance-systems/cost-detail-footing/",
      "skill": "skills/cost-detail-footing/SKILL.md",
      "example": "/data/finance-systems/cost-detail-footing.json",
      "humanReviewRequired": true
    },
    {
      "slug": "vendor-1099-readiness",
      "name": "Vendor 1099 readiness",
      "status": "available",
      "description": "Check invented supplier records for missing classifications, tax identifiers, addresses and payment totals. This is a readiness check, not tax advice or filing software.",
      "page": "/finance-systems/vendor-1099-readiness/",
      "skill": "skills/vendor-1099-readiness/SKILL.md",
      "example": "/data/finance-systems/vendor-1099-readiness.json",
      "humanReviewRequired": true
    },
    {
      "slug": "monthly-value-summary",
      "name": "Monthly CFO review",
      "status": "available",
      "description": "Turn invented monthly summaries into a review of changed numbers, unanswered questions and next actions for a finance professional and owner.",
      "page": "/finance-systems/monthly-value-summary/",
      "skill": "skills/monthly-value-summary/SKILL.md",
      "example": "/data/finance-systems/monthly-value-summary.json",
      "humanReviewRequired": true
    },
    {
      "slug": "monthly-variance-review",
      "name": "Actual spending versus budget",
      "status": "preview",
      "description": "Calculate dollar and percentage differences. Organize possible reasons, including timing, volume, price, work mix, expense categories and missing or inconsistent records.",
      "page": "/finance-systems/monthly-variance-review/",
      "skill": "skills/monthly-variance-review/SKILL.md",
      "example": "/data/finance-systems/monthly-variance-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "recurring-subscription-review",
      "name": "Recurring subscription review",
      "status": "available",
      "description": "Detect recurring charges, renewal patterns, price increases, duplicate tools, and subscriptions whose owner or usage is unclear.",
      "page": "/finance-systems/recurring-subscription-review/",
      "skill": "skills/recurring-subscription-review/SKILL.md",
      "example": "/data/finance-systems/recurring-subscription-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "idle-cash-interest-review",
      "name": "Cash available to earn interest",
      "status": "preview",
      "description": "Estimate an illustrative interest opportunity only after checking the operating cash buffer, forecast payments and account restrictions.",
      "page": "/finance-systems/idle-cash-interest-review/",
      "skill": "skills/idle-cash-interest-review/SKILL.md",
      "example": "/data/finance-systems/idle-cash-interest-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "cash-flow-forecast",
      "name": "13-week cash-flow forecast",
      "status": "preview",
      "description": "Start with verified cash, then add receipts and subtract payments each week. Include customer collections, supplier payments, payroll, taxes and debt. Keep base, better and worse scenarios separate.",
      "page": "/finance-systems/cash-flow-forecast/",
      "skill": "skills/cash-flow-forecast/SKILL.md",
      "example": "/data/finance-systems/cash-flow-forecast.json",
      "humanReviewRequired": true
    },
    {
      "slug": "ar-integrity-review",
      "name": "Check unpaid customer invoices",
      "status": "available",
      "description": "Trace accounts receivable (AR), the amounts customers owe, from invoice to payment and bank deposit. Find partially paid invoices and invoices marked closed with unexplained balances.",
      "page": "/finance-systems/ar-integrity-review/",
      "skill": "skills/ar-integrity-review/SKILL.md",
      "example": "/data/finance-systems/ar-integrity-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "cost-rationalization-review",
      "name": "Review recurring business costs",
      "status": "available",
      "description": "Review recurring costs outside headcount. Combine actual usage, contract terms, overlapping services and the work that depends on each supplier before proposing savings.",
      "page": "/finance-systems/cost-rationalization-review/",
      "skill": "skills/cost-rationalization-review/SKILL.md",
      "example": "/data/finance-systems/cost-rationalization-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "vendor-rule-audit",
      "name": "Check automatic expense categories",
      "status": "available",
      "description": "Compare automatic expense-category rules with historical purchases. Find rules that are outdated, conflict with evidence or cover purchases that need different treatment.",
      "page": "/finance-systems/vendor-rule-audit/",
      "skill": "skills/vendor-rule-audit/SKILL.md",
      "example": "/data/finance-systems/vendor-rule-audit.json",
      "humanReviewRequired": true
    },
    {
      "slug": "remittance-matching-review",
      "name": "Match payment notices to invoices",
      "status": "available",
      "description": "A remittance notice tells you which invoices a customer intends to pay. Check exact references, payer, date and amount first. Similarity can suggest a match; partial or uncertain allocations still need review.",
      "page": "/finance-systems/remittance-matching-review/",
      "skill": "skills/remittance-matching-review/SKILL.md",
      "example": "/data/finance-systems/remittance-matching-review.json",
      "humanReviewRequired": true
    },
    {
      "slug": "customer-margin-attribution",
      "name": "Check profit by customer",
      "status": "available",
      "description": "Check whether revenue and costs can be assigned consistently to customers before calculating their profitability. Include labor, materials, subcontractors and any shared-cost policy.",
      "page": "/finance-systems/customer-margin-attribution/",
      "skill": "skills/customer-margin-attribution/SKILL.md",
      "example": "/data/finance-systems/customer-margin-attribution.json",
      "humanReviewRequired": true
    },
    {
      "slug": "month-end-close-preview",
      "name": "Month-end close preview",
      "status": "available",
      "description": "Check the records and reviews needed to finalize the month’s books. Show completed checks, missing support and pending approvals without posting entries or declaring the period closed.",
      "page": "/finance-systems/month-end-close-preview/",
      "skill": "skills/month-end-close-preview/SKILL.md",
      "example": "/data/finance-systems/month-end-close-preview.json",
      "humanReviewRequired": true
    },
    {
      "slug": "cfo-chart-pack",
      "name": "Charts for the monthly finance review",
      "status": "available",
      "description": "Create cash-flow, margin, working-capital and budget-comparison charts from verified tables. Working-capital charts show balances such as unpaid customer invoices and supplier bills. Keep labels and source notes clear enough for an owner to decide what to do.",
      "page": "/finance-systems/cfo-chart-pack/",
      "skill": "skills/cfo-chart-pack/SKILL.md",
      "example": "/data/finance-systems/cfo-chart-pack.json",
      "humanReviewRequired": true
    },
    {
      "slug": "categorization-history-health",
      "name": "Review past expense categories",
      "status": "available",
      "description": "Review expense categories by supplier, manual changes and ambiguous purchases. Check whether purchasing patterns changed over time before proposing an automatic rule.",
      "page": "/finance-systems/categorization-history-health/",
      "skill": "skills/categorization-history-health/SKILL.md",
      "example": "/data/finance-systems/categorization-history-health.json",
      "humanReviewRequired": true
    }
  ]
}
