Inspiration

I was staring at my Meezan Bank statement one night and realized I had no idea what it was actually telling me. Rows of STAN codes, IBFT references, and comma-decimal amounts designed for machines, not people. I asked my mother. Same confusion. I asked a friend. Same. That was the moment if nobody understands their own bank statement, the problem isn't the people. It's the format. SpendStory was born to fix that.

What it does

How we built it

Fully browser-based. Zero backend. Zero servers. Your bank data never leaves your device. PDF/Image/CSV→PDF.js + Tesseract.jsRaw Text→Column ParserTransactions→Claude AIYour Story 19 files. 9 page modules. Clean modular architecture built over the course of the hackathon. Stack: Vanilla JS · PDF.js · Tesseract.js · PapaParse · Chart.js · Claude API

Challenges we ran into

I uploaded a real Meezan Bank statement and the totals were completely wrong. After hours of debugging I discovered that Pakistani banks use comma as a decimal point. 1,100,00 is PKR 1,100.00 not 110,000. Once I fixed that, the parser matched the statement's own summary exactly: PKR 185,020 debits. PKR 211,470 credits. To the rupee.

Accomplishments that we're proud of

Built a working Pakistani bank PDF parser that no existing fintech tool has Zero backend complete financial privacy, everything runs locally in the browser 14 fully functional interactive screens built solo OCR support for scanned statements photograph a printed MCB slip, get a full AI analysis Verified against a real Meezan Bank statement. Numbers match perfectly

What we learned

Pakistani banks use 380,00 to mean PKR 380.00 not 38,000. No existing open-source parser handles this. I discovered it at 2am from a real Meezan statement. OCR on scanned PDFs needs 2.5× canvas upscaling or Tesseract.js misreads half the characters. Users don't trust AI output until they can see why it decided something. In finance, explainability isn't optional it's everything. True HCI means designing for a homemaker in Faisalabad and a freelancer in Karachi simultaneously. That tension made the product better.

What's next for Spend story

Multi-account merging combine Meezan + JazzCash + EasyPaisa into one unified story Urdu language support AI narrative in Urdu with a single toggle AI-powered what-if — type "what if I stop late-night food delivery" and get the projected saving from your real data Family finance mode combined household dashboard for joint-income Pakistani families Open-source the Pakistani bank parser so no other developer has to solve this from scratch

Built With

Share this project:

Updates