Z poprzednich dwóch wpisów tej serii [1, 2] dowiedziałeś się czym są agenci AI, a także poznałeś koncepcję tworzenia takich agentów w technologii low-code na platformie Make.com. W tym artykule połączę dwa obszary, które szczególnie mnie interesują: automatyzację procesów biznesowych oraz finanse osobiste. Pokażę Ci, jak zbudować agenta AI, który pomoże Ci zapanować nad wydatkami.
Nauczę Cię, jak w technologii low-code zbudować narzędzie, z którego sam korzystam. Jeśli finanse Cię zupełnie nie interesują, potraktuj to jako przykład dydaktyczny. Praktyczna wiedza z tego poradnika może zostać wykorzystana do zautomatyzowania podobnych procesów, które są bliższe Twoim zainteresowaniom. Jeśli natomiast chciałbyś poczytać o tym, dlaczego kontrolowanie wydatków jest jednym z trzech filarów budowania bogactwa — zajrzyj na dwa fantastyczne blogi o tej tematyce: Finanse Bardzo Osobiste oraz Inwestomat.eu. To świetne źródła wiedzy o zarządzaniu finansami i inwestowaniu — jeśli chcesz spojrzeć szerzej na kontekst finansów osobistych.
Wyjaśnianie aspektów finansowych zostawiam więc ekspertom w tej dziedzinie. Ja w dalszej części tego artykułu będę koncentrował się wyłącznie na aspektach technicznych związanych z budowaniem finansowego agenta AI. Zapraszam do lektury.
Finansowy asystent AI — założenia projektu
Zgodnie z jedną z pryncypialnych zasad zarządzania projektami, na początku należałoby określić co mieści się w zakresie projektu, a co poza ten zakres wykracza. Funkcje, które chciałbym aby agent AI realizował, zdefiniowałem następująco:
- czytanie paragonów i faktur,
- przypisywanie kategorii do wydatków,
- zapisywanie wydatków do pliku,
- archiwizacja dokumentu (paragonu lub faktury) na dysku,
- użytkownik ma możliwość przesłać do agenta również wiadomość tekstową (nie tylko pliki z paragonem/fakturą),
- raz w tygodniu agent AI wysyła automatyczne podsumowanie wydatków w formie krótkiego raportu wraz z plikiem audio do odsłuchania,
- komunikacja z agentem odbywa się poprzez bota w Telegramie.
Skupię się na wersji MVP (Minimum Viable Product) tego finansowego asystenta — a więc będzie miał on swoje ograniczenia, np.:
- agent obsługuje jeden paragon/fakturę w jednej wiadomości,
- nie generuje wykresów ani dashboardów w tym etapie projektu – raporty będą prezentowane w formie tekstowej lub audio,
- nie rozpoznaje waluty, w jakiej dokonano płatności.
Architektura finansowego agenta AI
Na początek skoncentrujmy się na głównej części naszego agenta — czyli analizie danych z przesłanego dokumentu, nadaniu kategorii, zapisaniu informacji w pliku oraz przesłaniu użytkownikowi informacji zwrotnej. Uproszczony schemat takiego przepływu przedstawiłem na poniższej grafice (rys. 1).

To celowo uproszczony model, który będzie naszym punktem wyjścia. Nie zawiera on jeszcze funkcjonalności tygodniowych raportów — będzie to osobny „mini-agent”. Na diagramie nie widać również kilku elementów technicznych niezbędnych do niezawodnego działania całego procesu. Te kwestie staną się jasne w trakcie dalszej części projektu.
Automatyzację zbudujemy na platformie low-code Make.com, wykorzystując następujące narzędzia (zgodnie z rys. 1):
- Telegram Bot – interfejs użytkownika, który odbiera wiadomości i pliki oraz odsyła informację zwrotną.
- Google Cloud Vision API – rozpoznawanie tekstu (OCR) na zdjęciach paragonów.
- OpenAI GPT – analiza wyodrębnionego tekstu i przypisanie kategorii wydatku.
- Google Sheets – baza danych z historią wydatków.
- (w osobnej części automatyzacji) ElevenLabs / TTS – generowanie audio z podsumowaniem tygodniowym.
Zanim przejdziemy do budowania agenta AI, warto zwrócić uwagę na kwestię integracji z ekosystemem Google.
O ile Google Cloud Vision API działa bezproblemowo na prywatnym koncie Google, to integracja Google Drive oraz Google Sheets może sprawiać trudności. Aby ich uniknąć, najlepiej korzystać z konta firmowego — Google Workspace (koszt ok. 30 PLN miesięcznie).
Usługę możesz przetestować przez 14 dni za darmo — wystarczy, że wpiszesz w wyszukiwarkę hasło „Google Workspace pricing”.
Na końcu tego artykułu znajdziesz formularz, za pomocą którego pobierzesz plik PDF z krótką instrukcją konfiguracji API Google Cloud Vision.
W tym wpisie celowo nie będę pokazywał integracji Dysku Google i Arkuszy na koncie prywatnym. Da się to zrobić, ale procedura jest złożona i — co ważne — nie daje gwarancji stabilnego działania. U mnie takie połączenie po pewnym czasie po prostu przestało działać.
Jeśli chcesz uniknąć frustracji, najlepiej od razu pracować na Google Workspace. Wtedy połączenie narzędzi Google z Make.com sprowadza się do zalogowania się na konto i przyznania odpowiednich uprawnień.
W dalszej części wpisu będę zakładał, że masz już za sobą te kwestie organizacyjno-techniczne — i możesz skupić się na czystej przyjemności budowania własnego agenta AI. Zapraszam do dalszej lektury, gdzie krok po kroku omawiam proces tworzenia automatyzacji.
Jak zbudować agenta AI: instrukcja krok po kroku
Teraz opiszę po kolei moduły, dzięki którym stworzyłem automatyzację odpowiadającą założeniom projektu. Polecam Ci “budować” w Make.com razem ze mną.
Jeśli jednak wolisz gotowe rozwiązanie, pod tym wpisem znajdziesz formularz, przez który pobierzesz gotowego agenta AI w formie pliku .json (Blueprint z Make.com).
Aby go użyć: utwórz nowy scenariusz → kliknij ikonę trzech kropek w prawym górnym rogu → wybierz Import blueprint.
Etap I — przesłanie pliku przez Telegram
Pierwsza część automatyzacji obejmuje moduły przedstawione na rys. 2.
- Telegram Bot — Watch Updates
Utwórz bota w Telegramie zgodnie z instrukcją z poprzedniego wpisu. To będzie kanał komunikacji z finansowym agentem AI. - Telegram Bot —Send a Text Message or a Reply
Po odebraniu wiadomości wysyłamy użytkownikowi natychmiastową odpowiedź: „Analizuję wydatki z przesłanego pliku…” Daje to informację zwrotną, że automatyzacja działa i rozpoczęła obróbkę danych. Parametr ChatID pobieramy bezpośrednio z poprzedniego modułu.

- Telegram Bot — Download a File
Pobieramy plik wysłany przez użytkownika — jeszcze nie zapisujemy go fizycznie na dysku, ale przygotowujemy do dalszej obróbki. Jako File ID wskazujemy plik z pierwszego modułu (rys. 3). Telegram udostępnia zdjęcia w kilku rozdzielczościach. Wartość[4]oznacza, że pobieramy najwyższą dostępną jakość (rys. 4). Jak widzisz, dodałem tutaj moduł Error Handler — Resume dzięki niemu automatyzacja się nie wysypie, jeśli użytkownik nie przesłał pliku. Możesz go dodać klikając prawym przyciskiem myszy na dowolnym module w Make.com.


- Router
Za pomocą Routera rozdzielamy automatyzację na dwie ścieżki:Na razie interesuje nas wariant (a). Między Routerem a kolejnym modułem dodajemy filtr (ikonka lejka), który przepuści tylko te wiadomości, w których plik faktycznie istnieje (rys. 5).

-
Google Drive — Upload a File
W tym kroku zapisujemy plik w chmurze Google Drive. Aby moduł działał, konieczne jest połączenie konta Google — i jak wspominałem wcześniej, najlepiej korzystać z Google Workspace.
W ustawieniach modułu podajemy:- ścieżkę folderu, w którym chcemy zapisywać pliki,
- plik pobrany w poprzednim kroku (dostępny jako Telegram Bot — Download File).
Po zapisaniu dokumentu otrzyma on domyślną, zunifikowaną nazwę — zmienimy ją później.

Na tym etapie masz gotowy pierwszy fragment automatyzacji low-code. Możesz przetestować go w trybie Run once albo od razu przejść do kolejnej części.
Etap II — odczytanie zawartości pliku i analiza danych
W tym etapie zajmiemy się wykorzystaniem narzędzi AI, których użyłem do stworzenia finansowego asystenta. Logika modułów została przedstawiona na rys. 7.
- Google Cloud Vision — Run Text Detection (OCR) within an Image
Łączymy się z usługą OCR dostarczaną przez Google. Jeśli nie masz jeszcze skonfigurowanego API, instrukcję pobierzesz z formularza pod wpisem.W module ustaw:- Data/URL → Data
- wybierz plik z bota Telegrama (analogicznie jak w module Google Drive → Upload a File)

- Tools — Text aggregator
Moduł, który stosuję zawsze podczas pracy z OCR — pozwala uporządkować tekst i sprawić, że dalsza analiza przebiega bezproblemowo. Konfiguracja:

- OpenAI (ChatGPT, Sora, DALL-E, Whisper) — Message an assistant
Utwórz asystenta AI oraz zintegruj go z Make.com — dokładnie tak, jak pokazywałem w poprzednim wpisie. Celem tego asystenta jest rozpoznanie daty z dokumentu oraz przypisanie kwoty do jednej z 9 kategorii. Prompt, jakiego użyłem, znajdziesz poniżej. Należy jeszcze zadbać o pewne detale:


Zanim przejdziemy dalej, zatrzymajmy się na chwilę przy formacie JSON, w którym AI zwróci wynik. JSON (JavaScript Object Notation) to jeden z najpopularniejszych formatów wymiany danych w świecie automatyzacji, API i sztucznej inteligencji. Umożliwia zapisywanie informacji w czytelnej strukturze klucz → wartość, którą łatwo przetwarzają zarówno ludzie, jak i maszyny.
Przykładowy obiekt JSON zwrócony przez asystenta AI na podstawie promptu, który wkleiłem poniżej, wygląda tak:
{
"date": "2025-11-15",
"Spożywcze": 0,
"Restauracje": 0,
"Auto i Motocykl": 0,
"Kosmetyki i Fryzjer": 0,
"Podróże": 0,
"Rachunki/Dom i ogród": 0,
"Zdrowie/Sport": 0,
"Ubrania": 0,
"Inne": 6.99
}
Najważniejsze elementy formatu JSON:
- klucze (np.
"date","Spożywcze","Restauracje"itd.) to nazwy pól, - wartości mogą być tekstem, liczbą, wartością logiczną, listą lub kolejnym obiektem,
- wszystko zawsze zapisujemy w nawiasach klamrowych
{ }, - każdy element oddzielamy przecinkiem.
Dlaczego JSON jest ważny w naszym projekcie?Ponieważ agent AI zwróci wynik analizy w dokładnie takim formacie — dzięki temu Make.com może później odczytać konkretną datę oraz kwotę przypisaną do każdej kategorii i zapisać je w odpowiednich kolumnach Google Sheets. JSON sprawia, że dane są uporządkowane, przewidywalne i łatwe do dalszego wykorzystania w automatyzacji. Na kolejnych dwóch obrazkach (rys. 11 oraz rys. 12) pokazuję jak to wygląda w praktyce w Make.com — jak wyglądają dane JSON na wyjściu modułu OpenAI (rys. 11) oraz jak możemy je wykorzystywać w następnych modułach (rys. 12).


Prompt:
You are a financial assistant tasked with categorizing expenses from receipt data. You will be provided with receipt information, and your job is to categorize the expenses and identify the purchase date.
Here is the receipt data you will be working with:
<receipt_data>
{{RECEIPT_DATA}}
</receipt_data>
Your task is to categorize the expense(s) from this receipt into one or more of the following categories:
1. Spożywcze (Groceries)
2. Restauracje (Restaurants)
3. Auto i Motocykl (Auto and Motorcycle)
4. Kosmetyki i Fryzjer (Cosmetics and Hairdresser)
5. Podróże (Travel)
6. Rachunki/Dom i ogród (Bills/Home and Garden)
7. Zdrowie/Sport (Health/Sport)
8. Ubrania (Clothes)
9. Inne (Other)
Important rule: Alcohol and non-alcoholic beers should always be categorized as "Inne" (Other), regardless of the store where they are purchased.
First, identify the date of the purchase from the receipt data. The date may appear in different formats, including standard ones like 2025-07-01, 01/07/2025, or 07.01.2025, as well as non-standard formats such as dn.25r07.01. Interpret and normalize the date to the format yyyy-mm-dd.
Important rule for date identification: If the purchase date is missing, unreadable, or cannot be determined from the receipt data (e.g., due to formatting issues or lack of date-related information), do not attempt to generate or infer a date. Instead, set the value of the "date" field in the output to "None". Always provide the exact date from the receipt if available, and normalize it into the format yyyy-mm-dd when possible.
Next, carefully analyze the receipt data to determine which category or categories the expense(s) fall into. If you identify multiple categories, you should include all relevant categories in your output.
If the name of an item is vague, use the name of the dealer (if provided) to help determine the appropriate category. For example, a dealer name might suggest it's a barber shop (Kosmetyki i Fryzjer) or an automotive shop (Auto i Motocykl).
If you're unsure about a category, use your best judgment based on the information provided in the receipt data. If no category seems appropriate, use the "inne" (Other) category.
Include ALL categories in the output, even if they have no items. Set the amount to 0 for unused categories.
Structure your output as a JSON object with the following format:
{
"date": "purchase_date",
"category1": amount,
"category2": amount,
...
}
Where "purchase_date" is in the format yyyy-mm-dd, "category1", "category2", etc., are the names of the categories you've identified, and "amount" is the corresponding expense amount for each category.
Here are two examples to guide you:
Example 1:
<receipt_data>
Date: 2023-05-15
Store: Supermarket XYZ
Items:
1. Bread - 5.99
2. Milk - 3.50
3. Shampoo - 8.75
Total: 18.24
</receipt_data>
Output:
{
"date": "2023-05-15",
"Spożywcze": 9.49,
"Kosmetyki i Fryzjer": 8.75,
"Restauracje": 0,
...
}
Example 2:
<receipt_data>
Date: 2023-06-02
Restaurant: Tasty Bites
Items:
1. Pizza - 12.99
2. Salad - 8.50
3. Soft drink - 2.50
Total: 23.99
</receipt_data>
Output:
{
"date": "2023-06-02",
"Restauracje": 23.99,
"Spożywcze": 0,
...
}
Example 3:
<receipt_data>
Date: ?????
Store: Supermarket ABC
Items:
1. Bread - 4.00
2. Milk - 3.50
3. Beer 0.0 - 6.00
4. Wine - 25.00
Total: 38.50
</receipt_data>
Output:
{
"date": "None",
"Spożywcze": 7.50,
"Inne": 31.00,
"Zwierzaki": 0,
...
}
Please analyze the provided receipt data and generate your output accordingly.
Streszczenie promptu:
Asystent AI ma odczytać dane z paragonu, ustalić datę zakupu, a następnie przypisać każdą kwotę do jednej z zdefiniowanych kategorii wydatków. Alkohol i piwa bezalkoholowe zawsze trafiają do kategorii „Inne”. Wynik musi zostać zwrócony w formacie JSON, zawierającym datę zakupu oraz kwoty dla wszystkich kategorii (nawet tych z wartością 0). Agent ma nie zmyślać daty, jeśli ta nie została podana, lub nie da się jej określić.
Etap III — zapisywanie danych do Google Sheets
Tabela, w której będziemy przechowywać dane, składa się z dwunastu kolumn (rys. 13):
- Data — przygotowany plik zawiera już wpisane przyszłe daty.
- Kategorie wydatków — w tych kolumnach zapisujemy kwoty. Każdy nowy wydatek dodajemy do istniejącej wartości (nie nadpisujemy jej).
- Paragon — w tej kolumnie umieszczamy link do skanu dokumentu.
- data_text — techniczna kolumna z datą w formacie tekstowym, konieczna do stabilnego wyszukiwania wiersza.
Czysty plik gotowy do pracy możesz pobrać przez formularz pod tym wpisem.

Zanim przejdziemy do samego Google Sheets, zmienimy nazwę zapisanego pliku na Google Drive (rys. 14).
- Google Drive — Update a File
Chcemy, aby każdy plik miał nazwę składającą się z trzech elementów oddzielonych “_”:- data dokonania zakupu (odczytana przez asystenta AI),
- tekst “scanning_date”,
- obecną datę i godzinę w formacie
YYYY-MM-DD_HH-mm-ss
Do uzyskania takiej nazwy wykorzystujemy zmienną now oraz funkcję formatDate, które są dostępne w sekcji Date and time (rys. 15).
Na rysunku 16 pokazuję przykład, jak takie nazwy wyglądają w praktyce na dysku Google.


Rys. 15. Google Drive — zmiana nazwy pliku z użyciem formatDate oraz zmiennej now

- Google Sheets — Search Rows
Połączenie z Google Sheets konfigurujemy identycznie jak w przypadku Google Drive: logując się na konto Google i udzielając uprawnień Make.com.
Ten moduł służy do odszukania wiersza odpowiadającego konkretnej dacie, rozpoznanej przez naszego asystenta AI.
Wyszukiwanie wykonujemy w kolumnie technicznej date_text (rys. 17).

- Google Sheets — Get Range Values
Ten moduł pobiera aktualny stan kwot zapisanych w poszczególnych kategoriach. Wyniki będziemy wykorzystywać do zsumowania ich z nowymi wartościami odczytanymi przez AI. Naturalnie korzystamy z Row Number otrzymanego w poprzednim kroku (rys. 18).

-
Google Sheets — Update a Row
Ten moduł faktycznie wpisuje zaktualizowane kwoty do arkusza.
Do operacji na wartościach używamy trzech kluczowych funkcji:-
replace()— zamienia przecinki na kropki oraz odwrotnie; dzięki temu mamy kontrolę nad formatem liczb (Make.com wymaga kropek do sumowania, Google Sheets pracuje często na przecinkach). -
sum()— dodaje starą wartość do nowej. -
parseNumber()— zamienia tekst na liczbę.
Funkcje znajdziesz tutaj:
-
replace()— Math functions -
sum()iparseNumber()— Text and binary functions
Link do paragonu również dopisujemy do istniejących linków — tutaj pracujemy na zwykłych stringach, więc żadne dodatkowe funkcje nie są potrzebne.
Konfigurację modułu znajdziesz na rys. 19.
Praktyczna wskazówka:
W Make.com funkcje możesz swobodnie kopiować między modułami, zachowując wszystkie odwołania.
Po wklejeniu wyglądają np. tak:{{replace(sum(parseNumber(replace(13.`1`; ","; "."));(10.result.`Spożywcze`)); "."; ",")}}.
Make sformatuje je automatycznie. -

Etap IV — Odpowiedź wysłana użytkownikowi przez Telegram
Na końcu nasz agent AI odsyła użytkownikowi krótkie podsumowanie.
Używamy do tego dwóch modułów Telegrama (rys. 20):
- Telegram Bot — Delete a Message
Usuwa wiadomość “powitalną”, którą bot wysłał na samym początku. - Telegram Bot — Send a Text Message or a Reply
Wysyła użytkownikowi czytelne podsumowanie, zawierające:- link do zapisanego skanu paragonu,
- datę,
- kwoty przypisane do każdej kategorii.
W polu Text wklejamy poniższy blok, a Parse Mode ustawiamy na HTML, żeby formatowanie działało poprawnie.
Tekst do wklejenia:
<b>Podsumowanie wydatków z paragonu</b>
<a href="{{32.webContentLink}}">📎 Otwórz skan paragonu</a>
<b>Data:</b> {{10.result.date}}
<b>🍎 Spożywcze:</b> {{10.result.`Spożywcze`}}
<b>🍴 Restauracje:</b> {{10.result.Restauracje}}
<b>🚗 Auto i Motocykl:</b> {{10.result.`Auto i Motocykl`}}
<b>🧴 Kosmetyki i Fryzjer:</b> {{10.result.`Kosmetyki i Fryzjer`}}
<b>🌍 Podróże:</b> {{10.result.`Podróże`}}
<b>🏡 Rachunki / Dom i ogród:</b> {{10.result.`Rachunki/Dom i ogród`}}
<b>🏋️ Zdrowie / Sport:</b> {{10.result.`Zdrowie/Sport`}}
<b>👕 Ubrania:</b> {{10.result.Ubrania}}
<b>🛠️ Inne:</b> {{10.result.Inne}}


Jak zbudować agenta AI — Podsumowanie
Na tym zakończę ten wpis. Pokazałem Ci cały proces tworzenia agenta AI w technologii low-code na platformie Make.com. Co ważne, ma on praktyczne zastosowanie — faktycznie może Ci pomóc okiełznać wydatki wystarczy, że po każdych zakupach prześlesz paragon do swojego finansowego agenta AI przez Telegram.
Pracowaliśmy na przykładzie automatyzacji low-code, którą można wykorzystywać na co dzień. Po drobnej modyfikacji, taki agent AI może być nieocenionym pomocnikiem w każdym biznesie — może np. przesyłać faktury od razu do księgowości tak, żeby już nigdy ich nie brakowało, kiedy nadchodzi koniec okresu rozliczeniowego.
W kolejnym wpisie dokończymy tę automatyzację — przebudujemy ją tak, żeby pracowała zarówno ze skanem dokumentu, jak również z tekstem przesłanym w wiadomości na Telegramie. Dodamy też drugą automatyzację, która będzie wysyłać tygodniowe raporty. A w ostatniej części serii przeniesiemy się z Make do Power Automate. Już teraz serdecznie zapraszam do kolejnych artykułów.
Poniżej znajdziesz formularz z materiałami, o których wspominałem we wpisie.



