Skip to main content
Mohamed Noor
Back to projects
Healthcare and fintech platformsExample project

Reconciliation dashboard

A dashboard for spotting and resolving mismatches between two ledgers, built so an operator can see the discrepancy and the evidence for it on one screen.

Role
Sole developer
Period
2024
Stack
  • React
  • Next.js
  • Node.js
  • PostgreSQL

This is a seeded example project, not client work. It is here so the structure of a case study is right from day one, and it is replaced before this site goes live.

Measured

  • Under 30 seconds

    Reconciliation run

    Measured on a day of production-scale transaction volume

  • Integer minor units

    Money handling

    No floating point anywhere in the calculation path

  • Idempotent

    Repeat runs

    Re-running a completed day produces no duplicate entries

Problem

Two systems recorded the same transactions and disagreed often enough that someone was reconciling them by hand in a spreadsheet each morning.

The manual process took hours, and because it produced no record of the reasoning, the same mismatch was investigated repeatedly.

Approach

The matching rules came first, written as pure functions with tests covering the awkward cases: partial matches, same-amount duplicates on one day, and entries arriving out of order.

The interface was built around the operator's actual question, which was not whether a mismatch existed but why, so each discrepancy shows both sides and the rule that failed.

  • Matching logic as pure, tested functions before any interface
  • Every amount handled as integer minor units
  • Each resolution stores who decided it and on what basis

Architecture

A scheduled Node job pulls both ledgers, runs the matcher, and writes results to Postgres. The dashboard reads those results and never recomputes on request.

Runs are keyed by date and source so a repeat run replaces its own results rather than appending duplicates.

  • Matching separated from both fetching and rendering
  • Idempotency keyed on date and source
  • Resolutions append to a history rather than overwriting

Outcome

The morning reconciliation went from hours of spreadsheet work to reviewing a short queue of genuine exceptions.

Because each resolution recorded its reasoning, recurring mismatches were traced to their source instead of being re-investigated.