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.
Log in or sign up for Devpost to join the conversation.