Everything below is fictional. When this gets built for a real business, it reads from whatever billing, payment-ledger, and remittance/EOB data already exists, it does not replace any of those systems, it just checks them against each other before anything goes in the mail.
Statements about to go out
Reconciliation runs automatically the moment a statement enters the queue. Anything held stays held until someone resolves it, nothing gets mailed by default just because time passed.
Sent log
Add a statement to the queue
In production this row comes from a billing-system export, a payment-ledger export, and a remittance/EOB feed, matched automatically. Here you fill it in by hand to see the reconciliation check run.