Run reconciliation
Three-way matching: GPay CSV ⟕ screenshots, then merged transactions vs the
internal log XLSX. CSV rows are re-ingested on every run so the merge view
reflects whatever CSVs are in data/inbox/ right now.
Pipeline state
Reconcile against internal log
What happens
- Re-ingest every
GPay_*.csvindata/inbox/intogpay_settlements. - Refresh the
merged_transactionsview (CSV joined with screenshots on Google Transaction ID). - Reload the internal log XLSX into
deposit_entries. - Match merged rows ↔ log entries: UTR-exact first (1.0 conf), then amount + time ±5min.
- Assign each row to a bucket (VERIFIED / MATCHED_NO_PROOF / ORPHAN_PAYMENT / PHANTOM_LOG / GHOST_DEPOSIT / GHOST_SCREENSHOT) and flag amount mismatches and duplicates.