Recon
Generic reconciliation for any two data sources: CSV, XLSX, or live HTTP APIs.
Recon is a vendor-neutral financial reconciliation product inside the Juniors workspace. Define your own sources (CSV / XLSX uploads or live HTTP_API fetches) with column mappings for join key, amount, status, and timestamp; pair any two sources into a comparison with an amount tolerance and an optional cross-vendor status equivalence map; trigger runs over a date window and watch Recon hash-join both sides, bucket every row into MATCHED / AMOUNT_MISMATCH / STATUS_MISMATCH / MISSING_IN_LEFT / MISSING_IN_RIGHT, and persist every result to your own database. Adding a new payment gateway, PSP, or ledger is a config change, never a deploy.
What Recon does
CSV, XLSX, or live HTTP API sources
Define each feed once with a name, type, and column mappings. CSV / XLSX sources accept per-run uploads; HTTP_API sources are fetched live with templated URLs, headers, query params, and POST bodies (`{fromIso}`, `{toIso}`, `{fromDate}`, `{toDate}` placeholders).
Column mappings, not vendor code
Tell Recon which columns are the join key, amount, status, and timestamp, across any number of header variants (case, underscores, whitespace are normalised). The same engine handles every PSP, gateway, or ledger without forking.
Comparisons with match rules
Pair two sources, set an absolute amount tolerance, choose case-sensitive or case-insensitive joining, and optionally provide a JSON status equivalence map (e.g. SUCCESS / ISSUANCE_SUCCESS / COMPLETED) for cross-vendor state alignment.
Bucketed runs with hash join
Each run normalises both sides, hash-joins on the join key, and buckets every row into MATCHED, AMOUNT_MISMATCH, STATUS_MISMATCH, MISSING_IN_LEFT, or MISSING_IN_RIGHT, with totals, amounts, and full row snapshots persisted to your own database.
HTTP pagination + bearer auth
HTTP_API sources support page-number or cursor-based pagination with safety caps. Bearer tokens and other secrets are encrypted at rest with AES-256-GCM and redacted from the API surface.
Date-window scoping
Every run carries a fromTs / toTs window. Rows whose timestamp falls outside are dropped before matching; sources without a timestamp column include every row regardless. Quick presets cover today, yesterday, and the last 14 days.
Inspect every row
Drill into any run, filter by bucket, and see the full left + right row snapshot side by side, including the join key, mapped fields, and the extra columns you flagged. No exports needed to investigate a single mismatch.
Your data, your retention
Sources, comparisons, runs, and row snapshots live in your own PostgreSQL database. Recon never holds a copy of your transactional data, only the configuration that tells the engine how to reconcile it.