← Back to home

Compare two lists and see exactly where they don't match

Cuadra is a web application that imports two data sources, pairs their records and explains the difference between them. I designed and built it myself, from start to finish, between July and September 2026. The interface is in Spanish.

Type
Own project
Status
Online as a test application
My role
Design, development, testing and deployment

Two lists that should match

A bank statement and the month's invoicing. Two exports from different programs. A list from the accountant and another from your own system. They should match and almost never fully do.

The usual fix is to open two spreadsheets, sort, search by hand and mark with colours. It takes time, mistakes happen, and afterwards nobody can explain where the difference comes from.

Cuadra was born to solve that: import both files and get, without formulas, the list of what matches, what's missing on each side and what differs in amount.

Five steps, no formulas

  1. Import both sources

    CSV or Excel files. Cuadra detects the separator, the encoding and the header row.

  2. Map the columns

    You say which column is the reference, which the amount and which the date. Cuadra suggests a mapping and you confirm it. It can be saved as a template.

  3. Process and compare

    Matching runs in the background. You can follow the progress and cancel it.

  4. Review matches and discrepancies

    A summary with the total difference and its explanation, plus separate lists: only in A, only in B, different amount, duplicates and invalid rows. Each discrepancy can be reviewed, annotated or paired by hand.

  5. Export

    Summary and discrepancies as CSV, ready to share with whoever has to close the month.

Cuadra's column mapping assistantEnlarge the screenshot
Column mapping assistant. Sample data, Spanish interface.
Cuadra summary with the difference explainedEnlarge the screenshot
A − B summary with the difference explained. Sample data, Spanish interface.
Cuadra's list of discrepancies with reviewEnlarge the screenshot
List of discrepancies with review. Sample data, Spanish interface.

From the idea to the application online

I took care of the whole journey: architecture, interface, automated tests, continuous integration, deployment and the demo environment. Some decisions that define the product:

  • Amounts with exact decimals.Nothing goes through floating-point numbers, so 0.10 + 0.20 always gives 0.30.
  • Exact, deterministic matching.No guessing. With the same files and the same mapping, the result is always the same and can be explained.
  • Background processing.Large files don't block the screen. You see the progress and can cancel.
  • Data separated by organisation.Each organisation sees only its own. Reconciliations expire after 30 days.
  • Automated tests and deployment.Every change passes a test suite before being published.
  • Care with other people's files.Excel dates, inverted signs, debit/credit columns and exports protected against injected formulas.

What you can expect from me

  • Turning a manual, confusing process into an application anyone can use.
  • Taking care of the whole cycle, not just the visible part.
  • Handling sensitive data and edge cases with care.
Technical sheet
BackendPHP 8.3, Laravel 12
InterfaceLivewire 3, Blade, Tailwind CSS
DataPostgreSQL 16, Redis for queues, cache and sessions
TestsPest (unit, integration and concurrency), Playwright
DeliveryGitHub Actions with automatic deployment to a VPS via Laravel Forge
FilesCSV and XLSX with a custom reader, storage in the EU
Status and limits
  • Test application, free and with sample data.
  • It doesn't accept real data and isn't intended, today, as a commercial product.
  • I don't publish savings figures because I haven't measured them.

Do you have two sources that should match and don't?

Or any other task that's still done by hand. Tell me about it and I'll say whether it can be automated.

Tell me about your case