WhatsApp bot that turns a photo of a receipt into a categorized expense, with a live dashboard.
Manually logging every purchase into a spreadsheet doesn't survive contact with daily life. The goal was to make expense tracking as low-friction as sending a photo — straight from the WhatsApp conversation you're already in.
Sending a photo of a receipt over WhatsApp turns into a categorized ledger entry, with a dashboard showing spend by category and location — no manual data entry. The bot understands English, Spanish, and Brazilian Portuguese.
A FastAPI backend receives WhatsApp webhooks and runs each receipt image through an OpenCV/PyMuPDF preprocessing pipeline (deskew, crop, layout and text detection) before handing it to an LLM via OpenRouter for line-item categorization. PostgreSQL stores the ledger, and a Jinja2-rendered admin dashboard streams live updates over SSE.