MoneyTracker
A Telegram bot that turns "Такси 1200" or a photo of a receipt into a clean, multi-currency expense ledger for a trip — with a running wallet that always reconciles.
A Telegram bot that turns "Такси 1200" or a photo of a receipt into a clean, multi-currency expense ledger for a trip — with a running wallet that always reconciles.
Tracking spending across a multi-country tour means many currencies, messy free-text entries, and no patience for a full app while you're on the move. The brief was the lowest-friction capture possible — just message a chat — that still produces a trustworthy per-trip ledger and answers "how much is left?" at any moment.
Built on python-telegram-bot, it parses plain-language expenses with a fast local parser and falls back to Gemini only for the messy ones. It handles six currencies (KZT, KGS, USD, EUR, UZS, TJS) with live conversion to USD, and keeps each tour in its own Excel file so balances never bleed between trips. Receipt photos are stored alongside the entry, with the amount taken from the caption rather than OCR.
A wallet tracks top-ups and real exchanges ("поменял 67 долларов 5360 сом") as two-legged transactions, so the running balance reflects reality. Every expense gets inline buttons for category, amount, and description edits, and deletion; the owner can correct a balance or remove a bad exchange in-chat with no redeploy. Access is owner-scoped with in-chat allow-listing, and the active tour exports to — or imports from — a single .xlsx.
Capturing a spend costs one short message, yet the output is a reconciled, per-trip ledger in plain Excel that outlives the bot entirely. The local-parser-plus-LLM split keeps it fast and cheap on the common case while still understanding the awkward ones — and the wallet model means the balance can always be trusted.
The parser design, currency model, and Excel store can be walked through, with sample output, on request.