The problem

A duplicate-looking charge can be easy to miss in a long transaction list. Ghost Ledger gives individuals a transparent starting point for reviewing transactions without uploading their financial information to a server.

What it does

Import a UTF-8 CSV with date, merchant and amount columns, or try the included synthetic sample. The app flags pairs with matching normalized merchant names and exact amounts within seven days, then displays the dates, amount and reason for each match. A match is a clue, not proof: legitimate repeat purchases can look alike. It does not connect to banks, identify refunds, or claim a detection accuracy. Data is processed in the browser.

How it was built

The application combines a browser interface, a CSV parser and a deterministic matching engine in JavaScript. During the Kiroween build period, Kiro IDE was used to inspect and improve the initial prototype, write a project spec and steering file, expand CSV handling, revise the UI and create synthetic fixtures and tests. The repository includes those Kiro artifacts.

Challenges and testing

Handling CSV quoting, line endings and clear input errors required careful tests. The Node test suite has 21 passing checks. Browser checks in Edge verified the synthetic sample, CSV upload, invalid headers and that an injected image tag is rendered as text. Accessibility and broad cross-browser support have not been fully audited.

Built With

Share this project:

Updates

Submission history