Nothing leaves your browser
This page reads the file you choose on your own device and runs the same
second-look Python package inside your browser, using
Pyodide. No statement, row or
byte of it is ever sent anywhere. There is no upload button and no server that
could receive one.
How you can check this
-
The Content-Security-Policy this page sets blocks any request this page's
own code could try to make to another origin. It still allows requests to
this site's own address. Its exact, current value:
(reading the page's own policy…) -
A test in this project's continuous integration loads this page in
Chromium, runs it once on a made-up statement, and fails the build if the
page makes any request to another origin, a request that is not a plain
GET, or a request outside a fixed list of this site's own files. - The source code for this page and for the exact rules it runs is public: github.com/Iliya-Valizadeh/second-look.
- Browser extensions you have installed run outside this policy and can read any page, including this one.
Ready. Choose a statement CSV to begin.
1. Choose a statement
Drop a CSV file here, or press Enter to choose a file.
Only a CSV export of a bank or card statement. The file stays on this device.
2. Tell it which column is which
No bank format is guessed. Check the preview below and match each column yourself. Learn more in how importing works.
3. Worth a second look
No charge matched any of the four rules. The rules miss some patterns, such as bills whose amount changes each month. If you expected flags, check the sign choice on the previous screen.
These rules were tested only on made-up statements. Some flags will be wrong, and some charges worth a look will be missed. The project's list of known limits says where.
Save your feedback
Mark any flag above as right, wrong or not sure, then save a file to your own device. Nothing is sent anywhere; the button below only creates a local download. Sharing the file afterwards, for example in a GitHub issue, is always your choice.