How does it work, step by step?
- You send receipts. Photograph a receipt and send it to the bot on Telegram, forward an emailed one, or drop PDFs in the chat. Albums of several photos arrive together.
- It reads them. Date, merchant, amount, currency, tax, and a category based on your rules.
- It files them. It renames the image or PDF consistently, saves it in your folder and adds a row to your sheet.
- It checks. Same amount and merchant twice? Card transaction with no receipt? It asks.
- It prepares the report. At month end it fills the template or your expense tool and sends it to you for review.
Which apps does it work in?
For the ledger, Google Sheets or Airtable as connected apps, or Numbers and Excel on your computer through computer use. For receipts, Gmail or Outlook and Google Drive or Dropbox. For filing, your expense tool if it’s connected, or its website in your browser. Bookkeeping tools like QuickBooks and Xero are connected apps too.
How do you set it up?
- Install AppuBot and choose the AI.
- Make a bot called "Expense Manager" with the job "Receipts in, report out".
- Paste instructions, for example: “Every receipt I send becomes a row in the sheet Expenses 2026: date, merchant, amount, currency, VAT, category, file name. Categories: Travel, Meals, Software, Equipment, Other. Rename files YYYY-MM-DD Merchant Amount and save them in Drive › Receipts. If something looks like a duplicate or a personal purchase, ask me. Never submit a report without my OK.”
- Connect Sheets, Drive and your mail, and turn on only those for this bot.
- Connect Telegram so you can send receipts from your phone the moment you get them.
- Add a routine: “On the last weekday of the month, prepare the expense report and send it to me.”
What does it ask before doing?
Writing to your sheet and saving files are actions in your accounts, so on "Approve for me" it asks before them unless you tell it otherwise; many people approve a batch at once from Telegram. Submitting a report, emailing finance or changing an existing entry should always wait for you, and the example instructions say so.
