Telegram Expense Tracker
Voice, receipt photo, or PDF on Telegram → GPT-4o-mini JSON (vendor, GSTIN, amount, CGST/SGST) → Google Sheet → confirmation.
Problem
Receipts live in camera rolls. By month-end nobody remembers GSTIN, tax split, or destination of supply.
What we built
Telegram in, structured GST row out. AI parse + JS clean + Google Sheets + instant Telegram ack.
How it runs in real time
Forward a restaurant bill photo or say “Zoho Books Professional 4,500 GST” on Telegram. Whisper/Vision turns it into text; GPT-4o-mini fills the JSON; Sheets gets a bookkeeping-ready row; you get the ack. Accountant opens the sheet, not a WhatsApp archaeology session.
Pipeline
01
Telegram in
Voice → Whisper. Photo → Vision. PDF → extract. Text passes through.
02
Parse
GPT-4o-mini extracts date, vendor, GSTIN, amount, tax lines into JSON.
03
Clean
JS Code node fixes formatting so Sheets never gets a broken array.
04
Log + ack
Append row. Telegram sends the logged summary back to the same user.
In the canvas
- ▸ Telegram-only intake (voice, image, PDF, text)
- ▸ GPT-4o-mini strict JSON expenses array
- ▸ JS sanitiser before write
- ▸ GST / CGST / SGST / reverse charge columns
- ▸ Instant Telegram summary
Ops and founders dump expenses where they already talk: Telegram. The workflow accepts voice notes, receipt images, PDFs, or plain text. GPT-4o-mini is prompted to return a strict JSON array (date, vendor, GSTIN, amount, tax name/type/percent, destination of supply, GST treatment). A JS node sanitises the model output so a bad comma cannot break the sheet. Each line becomes a row with INR, exchange rate, reverse charge, and Tamil Nadu as destination when that is the fact. The bot replies with a personalised summary so the sender knows the book is updated without opening Sheets. Output columns match accounting handoff (Zoho-style GST fields), not a toy “amount + note” list.
Proof
Results
- ▸ Sheet rows for COM domain, Zoho Books, food — with CGST/SGST splits
- ▸ GST treatment and destination of supply (Tamil Nadu) captured
- ▸ Same-thread confirmation after every log