Upload your bank CSV. Ask questions in plain English. Get instant charts and GPT-powered insights.
Most people have no idea where their money actually goes. SpendLens fixes that.
- Upload any bank CSV export (Chase, BoA, Wells Fargo, Mint, etc.)
- Instantly see spending by category, by month, and over time
- Ask anything in plain English — "Where did I overspend in February?", "What's my daily average?", "Which subscriptions should I cut?"
- Get actionable answers powered by GPT-4o-mini with your real data as context
▶ Try the live demo →
(Uses built-in sample data — no upload needed)
git clone https://github.com/yourusername/spendlens.git
cd spendlenspip install -r requirements.txtstreamlit run app.pyhttp://localhost:8501
- Get your bank CSV — Most banks let you export transaction history as CSV from the account activity page
- Upload it to SpendLens (or hit "Use sample data" to try immediately)
- Explore the charts — spending by category (donut), monthly totals (bar), and cumulative over time (area)
- Add your OpenAI API key to unlock the Q&A feature
- Ask questions — use the quick-question buttons or type anything
SpendLens auto-detects column names, but works best with:
| Column | Description |
|---|---|
Date |
Transaction date |
Description |
Merchant or memo |
Amount |
Negative = expense (most bank formats) |
Category |
Optional — SpendLens handles uncategorized too |
Compatible with: Chase, Bank of America, Wells Fargo, Capital One, Mint CSV exports.
The Goal: Make personal finance analysis accessible — no spreadsheets, no manual categorization, just upload and understand.
AI Tools Used:
- Codex / GPT-4o-mini — Powers the natural language Q&A layer. The model receives a structured JSON summary of the user's transactions and answers questions with specific numbers and actionable tips.
- GitHub Copilot — Used throughout development for boilerplate, Plotly chart configs, and CSS styling.
Tech Stack:
Streamlit— Web app framework (zero frontend code needed)Pandas— CSV parsing and transaction aggregationPlotly— Interactive charts (donut, bar, area)OpenAI Python SDK— GPT-4o-mini for Q&A
What I Learned:
- Prompt engineering matters a lot for financial Q&A — giving the model a pre-computed JSON summary (rather than raw transactions) makes responses much faster and more accurate
- Streamlit's session state makes it easy to build multi-turn conversations
- Auto-detecting CSV column names (different banks use different headers) was the trickiest parsing challenge
spendlens/
├── app.py # Main Streamlit app
├── requirements.txt # Dependencies
├── sample_data.csv # Sample transactions for demo
└── README.md
Deploy free on Streamlit Community Cloud:
- Push to GitHub
- Go to share.streamlit.io
- Connect your repo → deploy
MIT — free to use, modify, and share.
Built with Python + OpenAI for the OpenAI Codex Student Lab