An AI bookkeeping assistant for sole traders
Invoices are typed by hand, receipts get lost in chats, payments are checked against the statement by eye. A Telegram agent issues invoices, files documents and matches payments.
Outcome
- Hours a week come back to the owner: the agent handles invoices, receipts and payments
- Money comes in faster: debts are visible at once, the reminder is one click away
- The single tax limit is never crossed unnoticed: the bot warns at 70% and 90%
- The accountant gets documents already organised, not a pile of photos at quarter end
The problem
A sole trader deals with two streams of paper every day: outgoing invoices that have to be drafted, numbered and given the amount in words, and incoming receipts and acts that must not get lost before the end of the quarter. It is the work of a part-time bookkeeping assistant, usually done in the evening or put off.
What I built
An invoice from one message. «Invoice Romashka LLC, 3 hours of consulting at 800» becomes a PDF with a number, bank details and the amount in words after your approval.
Documents without manual entry. The agent reads a receipt photo or a PDF itself: supplier, date, amount, expense category.
Payments reconcile themselves. The Monobank statement is pulled through the API and matched to invoices, and overdue ones show up at once with a ready reminder.
Daily control. A summary at 9:00, the single tax limit status and a CSV for the accountant.
When it fits
- Invoices are typed by hand in Word or Excel, and the client spots the wrong amount first.
- Receipts live in the gallery and in chats, and some are missing at the end of the quarter.
- It is too early to hire an assistant, but the routine is daily.
Why you can trust it
The model picks the action, the code runs and checks it. The agent works through a set of tools (tool calling), while arithmetic, numbering and the amount in words are done by code.
Nothing irreversible without you. An invoice number, saving or deleting a document happen only after your button.
Code matches the money, not the model. An invoice closes by itself only when number, amount and payer all match. Any doubt comes to you as a question.
How it was tested
On real documents: faded receipts, foreign invoices, bank payment orders. The reading model was chosen by measuring it on a benchmark of 15 documents, and it read all 160 fields correctly. An agent reply costs on average a hundredth of a cent.
Try it yourself
The «See it live» link opens the demo bot, which speaks Ukrainian. After Start you get your own sandbox that already has two clients and two services. Tap «Виставити приклад рахунку» (issue a sample invoice), confirm it, then tap «Прийшла оплата» (payment received) under the PDF and choose how the client paid: you will see when the bot closes the invoice itself and when it asks you. «Прочитати зразок чека» (read a sample receipt) shows how it handles a document.
The business details and the bank in the demo are fictional, and the PDF is marked «DEMO». Only you see your data, and it disappears after 7 days of inactivity or immediately with /forget.
Common questions
Can the agent send an invoice to a client or delete a document on its own? No. The invoice comes to you as a PDF file, and you forward it to the client. Deleting a document also needs your confirmation, and a deleted one stays in the database with a mark, as bookkeeping requires.
What if the model misreads the amount on a photo? The amount and the date are always shown to you before saving. One message fixes it, for example «amount 1340.50», and the agent changes that exact document, not the one next to it.
Does the bot decide on its own that a client has paid? Only when the invoice number, the amount and the payer all match. Any doubt comes to you as a question, and an automatic close can be undone with a button.
Does this replace an accountant? No. Tax documents and reporting are out of scope. The agent takes the daily routine off your hands and gives the accountant invoices and documents already collected.
Stack
- Python
- LLM + Tool calling
- LLM Vision
- aiogram 3
- Monobank API
- PDF (WeasyPrint)
Got a similar task?
Describe it in two sentences. I'll tell you if it can be automated, and we'll set up a short call to go through the details.