Financial reconciliation automation
Context
B2B company with a high volume of daily financial transactions. Receives roughly 10 PDF statements per day, each with thousands of transactions. Traditionally, an operator spent about 2 hours daily manually checking which values in the outgoing column had no counterpart in the incoming column, and vice versa.
What we deliver
A Python desktop tool, distributed as a standalone Windows executable. The usage flow is direct:
- User drags one or more PDFs into the interface.
- Clicks process.
- Receives an Excel spreadsheet with two tabs: outgoing without matching incoming, incoming without matching outgoing.
The tool runs 100% offline. No server dependency, no financial data sent anywhere, no Python install or any external dependency required. The client gets a single .exe file that opens with two clicks.
How the algorithm decides what's reconciled
Three criteria across two passes:
- Same numerical value.
- Same text name, with tolerance for names truncated by the bank's system.
- Time proximity: strict filter first; when no match is found, relaxes to any time on the same day or different days.
Criteria are adjustable via a settings screen: time tolerance, minimum name prefix length, second-pass on/off. This lets the client refine behavior as the operation evolves.
Architecture
Tool interface

Technical decisions
Why Python, not JavaScript?
The PDF parsing (pdfplumber) and Excel generation (openpyxl) ecosystem is more mature in Python. Distribution as an .exe via PyInstaller requires no additional runtime on the client machine.
Why offline, not SaaS?
Sensitive financial data does not travel to external servers. The tool works without internet access, which is critical in corporate environments with network restrictions.
Why CustomTkinter, not Electron or web?
Zero-configuration install on corporate Windows machines. No Node.js or Chromium to distribute. Minimal footprint on resource-constrained machines.
Expected outcome
- ~40 hours per month of operational work recovered.
- Full traceability: each run generates an auditable spreadsheet with a summary of matched and unmatched pairs.
- Zero operational risk: offline tool, no third-party dependency.
Stack
How we execute this project
Paid 1-week discovery, scope, timeline and price locked, 4 weeks of construction, delivery with a 90-day warranty. No retainer, no hourly billing, no budget surprises.
“What used to take 2 hours now takes 5 minutes.”