A period-close graph where every close input becomes a node. Each node has a clear status, an evidence trail, and a readiness score.
Lawenots treats close inputs as graph nodes, not separate records scattered across different tools. This covers transactions, reconciliation items, AR and AP expectations, compensation expectations, and settlement anchors. Each one is checked against the same ledger before a period can close.
[
{
"id": "node_txn_9421",
"type": "transaction",
"state": "settled",
"label": "Stripe payout matched to bank deposit",
"weight": 12
},
{
"id": "node_recon_117",
"type": "reconciliation_item",
"state": "matched",
"label": "Duplicate suspect resolved",
"weight": 10
},
{
"id": "node_ar_2026_05_mrr",
"type": "ar_expectation",
"state": "open",
"label": "Expected MRR not received by cutoff",
"weight": 15
},
{
"id": "node_ap_vendor_17",
"type": "ap_expectation",
"state": "carried_forward",
"label": "Vendor bill carried to next period with hashed note",
"weight": 8
},
{
"id": "node_anchor_331",
"type": "settlement_anchor",
"state": "attested",
"label": "Settlement anchor included in evidence package",
"weight": 10
}
]{
"period": "2026-05",
"closePolicyVersion": "close-graph-v1",
"readinessFormula": "readiness = round((sum(weight for passed nodes) / sum(all node weights)) * 100)",
"canonicalLedger": "single matched/unmatched ledger for transactions, AR, AP, comp, settlement",
"nodeCounts": {
"open": 1,
"matched": 1,
"settled": 1,
"attested": 1,
"carried_forward": 1
},
"evidencePackage": "locked trial balance + issue list + graph JSON + export receipts + timeline hashes + attestation metadata"
}