AI Invoice Automation Bot
Overview
I built this bot for our family business to make issuing invoices quick and painless. Instead of having to sit down at a computer or fight with spreadsheet cells, anyone on our team can just send a normal text message in Discord. The bot reads what needs to be billed and drops a ready-to-use PDF invoice straight into the chat in a few seconds.
The Problem
Issuing an invoice used to mean breaking your workflow. You either had to struggle through small cells on your phone screen or get up, go find your laptop, wait for it to boot, and type everything in manually. Doing that every couple of days was annoying and often led to mistakes like typos or lost leading zeros in invoice numbers. We just wanted a simple way to get it done from a pocket in ten seconds, no matter where you are.
How It Works
- Uses Discord as a simple mobile and desktop app so nobody has to install anything new.
- Checks Discord user IDs against a list in the config file so only our family can use it.
- Sends the raw text message to Gemini, which pulls out the invoice number, dates, and all items with their units and prices.
- Writes those values into our Google Sheets template through the API, keeping text formatting so zeros don't disappear.
- Fills up to four items, clears out any leftover empty rows, exports the sheet to PDF in the background, and drops the file into chat.
Reliability & Hosting
- Runs as a background service directly on my laptop for now, but the code is set up so I can push it to Railway or a Docker VPS whenever we want it online 24/7.
- If Google's API throws an error or gets busy, the bot automatically retries and shows a live countdown in Discord so you know it didn't just crash.
- If the outage lasts too long, it shows simple retry and cancel buttons so you can try again with one tap.
- Everything runs asynchronously with asyncio, so waiting on APIs doesn't freeze the bot.
How I Built It
- I came up with the system logic, how data flows between services, and how the bot should behave when something fails.
- I used AI coding tools like Antigravity, Claude, and Gemini to write the code faster, debug issues, and clean things up.
- Using AI as a coding assistant helped me turn the idea into a working tool used by my family just in hours.
Planned Features
- Sending an image preview (JPG) straight to Discord so you can check the invoice without downloading or opening the PDF.
- Adding a button to email the invoice directly to the client or company with one tap.
- Moving user IDs from the config file to a small database once more people start using it.
Tech Stack
- Python, discord.py, asyncio
- Google Gemini API, Google Sheets API, Google Cloud Console
- PDF export, JSON
- Local daemon, ready for Railway / Docker
AI Bot na automatickú generáciu faktúr
O čo ide
Bota som spravil pre našu firmu, aby sme nemuseli strácať čas s faktúrami. Namiesto sedenia pri počítači a klikania do tabuliek stačí poslať bežnú správu na Discord. Bot z nej hneď vytiahne, čo treba vyfakturovať, a za pár sekúnd vráti hotovú PDF faktúru priamo do chatu.
Problém
Doteraz to bolo zbytočné zdržanie. Buď sa človek trápil s miniatúrnymi bunkami na mobile, alebo musel ísť po notebook, zapnúť ho a všetko tam nahadzovať ručne. Robiť to každé dva-tri dni liezlo na nervy, človek sa v tom ľahko sekol alebo tabuľka zmazala nulu na začiatku čísla faktúry. Preto som prišiel s riešením, s ktorým stačí vytiahnuť mobil z vrecka a do desiatich sekúnd je pokoj.
Ako to funguje
- Beží to cez Discord na mobile aj počítači, takže nikto nemusel riešiť žiadne nové aplikácie.
- Prístup je obmedzený len na zoznam našich Discord ID v konfigurácii, aby to nemohol spustiť nikto cudzí.
- Správu z chatu prečíta Gemini a vytiahne z nej číslo faktúry, dátumy aj jednotlivé položky s cenami a jednotkami.
- Cez API to zapíše do našej šablóny v Google Sheets, pričom stráži formát textu, aby nezmizli začiatočné nuly.
- Nahodí až štyri položky, uprace prázdne riadky, na pozadí vygeneruje PDF a hodí súbor do chatu.
Spoľahlivosť a beh
- Zatiaľ to beží na pozadí na mojom notebooku, no kód je pripravený v Docker kontajneri, takže ho viem kedykoľvek hodiť na Railway alebo vlastný cloud, ak budeme potrebovať nonstop beh.
- Keď API od Googlu na chvíľu vypadne alebo nestíha, bot to skúša sám znova a priamo v chate ukazuje odpočet, aby bolo vidno, že nezamrzol.
- Pri dlhšom výpadku hodí tlačidlá, cez ktoré sa dá pokus zopakovať alebo zrušiť jedným klikom.
- Všetko ide asynchrónne cez asyncio, takže bot nečaká na externé volania a nezasekáva sa.
Ako som to poskladal
- Celú architektúru, tok dát a riešenie chybových stavov som si navrhol sám podľa toho, čo sme reálne potrebovali.
- Na samotné písanie kódu, ladenie a úpravy som využíval AI nástroje ako Antigravity, Claude a Gemini.
- Vďaka tomu som funkčný nástroj, ktorý reálne používame, stihol postaviť, otestovať a spustiť za niekoľko hodín.
Čo chcem časom pridať
- Náhľad faktúry ako obrázok (JPG) priamo do Discordu, aby človek nemusel otvárať PDF len kvôli kontrole.
- Tlačidlo, ktoré po vygenerovaní pošle faktúru mailom rovno zákazníkovi.
- Prechod z konfiguračného súboru na jednoduchú databázu, ak pribudnú ďalší používatelia.
Tech Stack
- Python, discord.py, asyncio
- Google Gemini API, Google Sheets API, Google Cloud Console
- PDF export, JSON
- Beh na pozadí (daemon), pripravené pre Railway / Docker
AI-faktura-automatiseringsbot
Overblik
Jeg byggede denne bot til vores familievirksomhed for at gøre udstedelse af fakturaer hurtig og problemfri. I stedet for at skulle sidde foran en computer eller kæmpe med regneark på mobilen, kan alle på vores team bare sende en normal besked i Discord. Botten læser, hvad der skal faktureres, og smider en færdig PDF-faktura direkte ind i chatten på et par sekunder.
Problemet
At udstede en faktura plejede at betyde, at man skulle afbryde sin arbejdsgang. Man skulle enten kæmpe med bittesmå celler på sin telefonskærm eller rejse sig, finde sin bærbare, vente på, at den startede, og indtaste alt manuelt. At gøre det hver anden dag var irriterende og førte ofte til fejl som slåfejl eller mistede nuller i starten af fakturanumre. Vi ville bare have en nem måde at gøre det på ti sekunder fra lommen, uanset hvor man befinder sig.
Sådan fungerer det
- Bruger Discord som en simpel mobil- og desktop-app, så ingen behøver at installere noget nyt.
- Tjekker Discord bruger-ID'er mod en liste i konfigurationsfilen, så kun vores familie kan bruge den.
- Sender den rå tekstbesked til Gemini, som udtrækker fakturanummer, datoer og alle varer med deres enheder og priser.
- Skriver disse værdier ind i vores Google Sheets-skabelon via API'en, og bevarer tekstformateringen, så foranstillede nuller ikke forsvinder.
- Udfylder op til fire varer, rydder eventuelle tomme rækker, eksporterer arket til PDF i baggrunden og smider filen i chatten.
Pålidelighed & Hosting
- Kører som en baggrundstjeneste direkte på min bærbare indtil videre, men koden er sat op, så jeg kan skubbe den til Railway eller en Docker VPS, når vi vil have den online 24/7.
- Hvis Googles API kaster en fejl eller får travlt, prøver botten automatisk igen og viser en live nedtælling i Discord, så man ved, at den ikke bare er gået ned.
- Hvis nedetiden varer for længe, viser den simple knapper til at prøve igen eller annullere med ét tryk.
- Alt kører asynkront med asyncio, så ventetid på API'er ikke fryser botten.
Hvordan jeg byggede det
- Jeg udtænkte systemlogikken, hvordan data flyder mellem tjenester, og hvordan botten skal opføre sig, når noget slår fejl.
- Jeg brugte AI-kodningsværktøjer som Antigravity, Claude og Gemini til at skrive koden hurtigere, finde fejl og rydde op i tingene.
- Brug af AI som kodningsassistent hjalp mig med at omsætte ideen til et fungerende værktøj, som min familie bruger, på bare få timer.
Planlagte funktioner
- At sende en forhåndsvisning af billedet (JPG) direkte til Discord, så man kan tjekke fakturaen uden at downloade eller åbne PDF'en.
- Tilføjelse af en knap til at e-maile fakturaen direkte til kunden eller virksomheden med ét tryk.
- At flytte bruger-ID'er fra konfigurationsfilen til en lille database, når flere begynder at bruge den.
Tech Stack
- Python, discord.py, asyncio
- Google Gemini API, Google Sheets API, Google Cloud Console
- PDF-eksport, JSON
- Lokal daemon, klar til Railway / Docker