AI automatyzacja księgowość python openai

Asystent księgowy AI — dashboard finansowy z Claude Code

Python, OpenAI i VS Code z Claude. Wrzuciłem maile z fakturami, a AI zbudował mi serwer z zakładkami, wykresami i chatbotem, który odpowiada na pytania o finanse firmy.

L

LiveSales

21 min czytania

Maile z fakturami wrzucone do AI. Na wyjściu: dashboard finansowy z chatbotem.

“Miałem ~3000 maili z fakturami, wyciągi z Santandera i zero kontroli nad kosztami. Przepuściłem maile przez OpenAI ($80), dostałem czyste CSV-ki. Potem Claude Code w VS Code postawił mi z tego dashboard na localhost — 2 dni i mam zakładki, filtry, wykresy i AI chat.”

Etap 1: surowe maile

~3000 maili z fakturami ściągniętych ze skrzynki

Etap 2: OpenAI ekstrakcja

AI wyciąga dane z maili do CSV (~$80)

Etap 3: Claude Code

Dashboard z zakładkami, wykresami i AI chat


Problem: faktury w mailach, wydatki w banku, kontrola w głowie

Każdy, kto prowadzi firmę e-commerce, zna ten ból. Faktury przychodzą mailem — dziesiątki miesięcznie. Wyciągi bankowe osobno. Kategorie kosztów? Gdzieś w Excelu albo w głowie.

Faktury — rozproszone po mailach, bez jednego widoku

Wydatki bankowe — wyciąg CSV, zero kontekstu

Matchowanie — który przelew to która faktura?

Pytania — “ile wydałem na logistykę w styczniu?” Brak szybkiej odpowiedzi

Postanowiłem to rozwiązać jednym narzędziem. Nie SaaS-em za 200 zł/msc. Własnym skryptem, zbudowanym z AI w kilka godzin.


Rozwiązanie: jeden plik Python, localhost, AI chat

Całe narzędzie to jeden plik Python (~1100 linii), który uruchamiasz komendą:

python serwer_ksiegowosc.py

I otwierasz http://localhost:8080. To wszystko.

Jak to działa — od danych do dashboardu

1

Maile z fakturami → OpenAI → CSV

AI wyciąga z maili dane: numer faktury, NIP, kwoty, daty, pozycje. Zapisuje do ustrukturyzowanych CSV.

2

Serwer Python wczytuje wszystko

Faktury, wydatki bankowe (Santander CSV), przychody, kategorie kosztów — ładowane na żywo przy każdym odświeżeniu.

3

Automatyczne matchowanie kontrahentów

Łączy faktury z przelewami po NIP-ie i numerze konta bankowego. Wie, kto to jest nawet jeśli dane niespójne.

4

Embeddingi → indeks wektorowy → AI chat

Każda faktura, wydatek i kontrahent to dokument w indeksie. Pytasz — AI wyszukuje kontekst i odpowiada z danymi.


Co widać na dashboardzie

Serwer generuje pełny frontend HTML z zakładkami. Bez frameworków, bez npm install — czysty HTML + JavaScript + Chart.js.

Kontrahenci

  • Lista dostawców z NIP-em i kontem
  • Ile faktur, ile przelewów, sumy
  • Rozwijane szczegóły po kliknięciu

Faktury

  • Tabela z sortowaniem i filtrami
  • Status: opłacona / nieopłacona
  • Status: zaksięgowana / nie
  • Kategoria kosztu przypisana

Wydatki bankowe

  • Wszystkie przelewy wychodzące
  • Automatycznie powiązane z fakturami
  • Kategorie: logistyka, towar, reklama…

Przychody

  • Historia wpływów z Santandera
  • Nadawca i pochodzenie wpłaty
  • Sortowanie po dacie i kwocie

Statystyki

  • Wykresy kosztów miesięcznych
  • Rozbicie na kategorie (pie chart)
  • Saldo: przychody vs wydatki

AI Chat

  • Chatbot GPT-4o z kontekstem danych
  • RAG: wyszukuje pasujące dokumenty
  • ”Ile wydałem na logistykę w Q4?”

AI Chat — najciekawsza część

To nie jest zwykły ChatGPT wklejony na stronę. To RAG (Retrieval-Augmented Generation) — system, który:

Buduje indeks z Twoich danych

Każda faktura, wydatek, kontrahent i podsumowanie miesięczne to osobny dokument. Serwer tworzy z nich embeddingi przez OpenAI.

Wyszukuje kontekst do pytania

Pytasz “ile wydałem na towar w styczniu?” — system szuka 25 najbardziej pasujących dokumentów przez cosine similarity.

GPT-4o odpowiada z danymi

Model dostaje system prompt z kontekstem firmy + znalezione dokumenty. Odpowiada konkretnymi kwotami, nie wymyśla.

Przykład rozmowy

Ty:

Ile wydaliśmy na logistykę w ostatnim kwartale?

AI:

W Q4 2025 koszty logistyki wyniosły łącznie 12 847,32 PLN. Główni dostawcy: InPost (8 faktur, 7 234,50 PLN), DPD (5 faktur, 3 890,00 PLN), Poczta Polska (3 faktury, 1 722,82 PLN).

Ty:

Które faktury nie są jeszcze opłacone?

AI:

Masz 4 nieopłacone faktury na łączną kwotę 3 215,80 PLN. Najstarsza: FV/2025/11/034 od Hurtownia ABC, termin płatności: 15.12.2025 (po terminie).


Matchowanie kontrahentów — inteligentne łączenie danych

Jeden z najtrudniejszych problemów: ta sama firma może pojawiać się pod inną nazwą na fakturze i na wyciągu bankowym.

Serwer rozwiązuje to wielopoziomowo:

1

Po NIP-ie — najlepsza jakość, jednoznaczna identyfikacja

2

Po koncie bankowym — łączy przelew z fakturą nawet gdy nazwa jest inna

3

Po nazwie — fallback, gdy NIP i konto nieznane

Efekt: klikasz na kontrahenta i widzisz wszystkie jego faktury i przelewy w jednym miejscu. Nie musisz niczego ręcznie łączyć.


Jak powiązanie faktura ↔ przelew działa w praktyce

To jest serce całego narzędzia. Wyobraź sobie sytuację:

Przykład: faktura od InPost

Faktura (z maila)

Nr: FV/2025/12/0847

Sprzedawca: InPost Sp. z o.o.

NIP: 6793087624

Konto: 12 3456 7890 …

Brutto: 1 234,56 PLN

Termin: 15.01.2026

Przelew (z banku)

Data: 12.01.2026

Kwota: -1 234,56 PLN

Odbiorca: INPOST SP Z O O

Konto: PL12 3456 7890 …

Tytuł: FV/2025/12/0847

Serwer automatycznie łączy te dwa dokumenty

Matchowanie po koncie bankowym (normalizacja: usunięcie spacji, “PL”, apostrofów). Nawet jeśli nazwa na fakturze to “InPost Sp. z o.o.” a na wyciągu “INPOST SP Z O O” — system wie, że to ten sam kontrahent.

Ale to nie koniec. System buduje pełny obraz każdego kontrahenta:

Ile faktur wystawił i na jaką łączną kwotę

Ile przelewów poszło na jego konto i na jaką sumę

Które faktury są opłacone (przelew powiązany), a które nie

Które faktury są zaksięgowane (z pliku od księgowej), a które czekają

Rozbieżności — jeśli suma faktur ≠ suma przelewów, od razu to widać

Klikasz na kontrahenta w tabeli — rozwija się panel z historią wszystkich faktur i przelewów posortowanych chronologicznie. Widzisz całą relację z dostawcą w jednym miejscu.


Dostęp dla księgowej — kolumna “zaksięgowane”

Jedno z najciekawszych rozwiązań: współpraca z księgową bez dawania jej dostępu do całego systemu.

Jak to działa

1

Eksportujesz listę faktur do CSV

Dashboard generuje plik z numerami faktur, datami, kwotami i kontrahentami.

2

Wysyłasz ksiegowej

Księgowa otwiera CSV, zaznacza które faktury zaksięgowała, zapisuje plik.

3

Wrzucasz plik z powrotem do folderu dane/

Serwer automatycznie wczytuje plik zaksiegowane.csv i aktualizuje statusy.

4

Dashboard pokazuje co jest zaksięgowane, a co nie

Przy każdej fakturze pojawia się badge: zaksięgowana lub niezaksięgowana

Dlaczego to ważne: Nie musisz logować się do systemu księgowej, żeby wiedzieć co jest zaksięgowane. Nie musisz jej dawać dostępu do Twojego narzędzia. Wymieniacie się jednym plikiem CSV — prosta, bezpieczna współpraca.

Dzięki temu na jednym ekranie widzisz trzy statusy każdej faktury:

Czy jest w systemie?

Faktura wczytana z maila / CSV

Czy jest opłacona?

Powiązanie z przelewem bankowym

Czy jest zaksięgowana?

Status z pliku księgowej

Filtr na górze pozwala wyświetlić np. tylko nieopłacone lub tylko niezaksięgowane — od razu wiesz, co wymaga uwagi.


Kategorie kosztów — dynamiczna klasyfikacja

Kategorie nie są wpisane na sztywno w kodzie. Tworzą się dynamicznie na podstawie danych z faktur — serwer analizuje wczytane dokumenty i automatycznie buduje listę kategorii. Jak dodasz fakturę z nową kategorią, pojawi się na dashboardzie bez zmiany kodu.

W praktyce wygląda to tak — oto przykładowe kategorie, które system wyciągnął z naszych dokumentów:

Towar handlowy
Logistyka
Prowizje marketplace
Reklama
Oprogramowanie
Materiały do pakowania
Leasing
Wyposażenie
Usługi pracownicze
Lokal / najem
Usługi inne
Inne

Dynamiczne kategorie = zero konfiguracji

Nie musisz definiować kategorii z góry. Serwer czyta plik kategorie.csv i buduje strukturę automatycznie. Dodajesz nową kategorię do CSV — dashboard ją podchwytuje przy następnym odświeżeniu.

Dashboard pokazuje wykres kołowy z rozkładem kosztów i wykresy miesięczne z trendem wydatków w każdej kategorii. Od razu widać, na co idą pieniądze.


Jak to zbudowałem — cały proces od zera

To nie była jedna rozmowa z AI. Proces trwał 2 dni i miał 3 wyraźne etapy.

1

Ściągnięcie ~3000 maili z fakturami

Pierwszy problem: wszystkie dokumenty finansowe siedziały w poczcie email. Faktury od dostawców, potwierdzenia przelewów, rozliczenia — setki maili miesięcznie, lata wstecz. Trzeba było uzyskać dostęp do skrzynki i ściągnąć wszystko w jednym miejscu.

2

Analiza przez OpenAI — $80 za 3000 dokumentów

Ręczna analiza 3000 maili to tygodnie pracy. Przepuściłem wszystko przez OpenAI — AI wyciągało z każdego maila dane strukturalne: numer faktury, NIP sprzedawcy, kwoty netto/brutto, daty, pozycje, numery kont bankowych. Na wyjściu: czyste pliki CSV gotowe do przetworzenia.

Koszt

~$80

Dokumentów

~3000

3

Claude Code buduje dashboard z CSV-ek

Dopiero z gotowymi danymi w CSV otworzyłem VS Code z Claude Code. Pokazałem mu pliki, opisałem czego potrzebuję, i zaczęliśmy iterować. Claude widział strukturę danych i pisał kod, który pasował do mojego formatu.

Rozmowa z Claude Code wyglądała tak:

VS Code — Claude Code
Ja:Mam folder z CSV — faktury, wydatki bankowe z Santandera, kategorie. Zbuduj mi serwer na localhost który to wszystko wyświetla w ładnym dashboardzie z zakładkami.
Claude:Buduję serwer HTTP w Pythonie z wczytywaniem CSV, matchowaniem kontrahentów po NIP i koncie, tabelami z sortowaniem i filtrami…
Ja:Dodaj AI chat — chcę móc pytać o dane. Użyj embeddingów OpenAI i GPT-4o.
Claude:Dodaję RAG: buduję dokumenty z faktur i wydatków, tworzę indeks embeddingowy z cache’em, cosine similarity search, i chat z kontekstem…
Ja:Dodaj wykresy — koszty miesięczne, rozkład kategorii, saldo przychody vs wydatki.
Claude:Dodaję Chart.js — bar chart, pie chart, stacked chart…

Iterowałem kilka razy, doprecyzowywałem, dodawałem features. Claude widział moje pliki CSV, rozumiał strukturę danych i pisał kod, który od razu działał.

Nie obyło się bez błędów

3-4 faktury miały błędy po analizie OpenAI — źle wyciągnięty NIP, pomylona kwota netto z brutto, brakujący numer konta. To były proste bugi, ale wyłapanie ich i poprawienie zajęło czas. Ważne: AI nie jest bezbłędne. Przy 3000 dokumentów kilka pomyłek to norma — ale i tak zajmuje to godziny zamiast tygodni ręcznej pracy.


Stos technologiczny

Backend

  • Python — http.server, zero frameworków
  • OpenAI API — embeddingi + GPT-4o chat
  • NumPy — cosine similarity na wektorach
  • CSV — dane ładowane na żywo

Frontend

  • HTML + JS — inline, zero build step
  • Chart.js — wykresy z CDN
  • Inter font — czysty, profesjonalny wygląd
  • CSS variables — spójny design system

Zero zależności frontendowych

Nie ma node_modules, nie ma npm install, nie ma webpacka. Serwer serwuje jeden duży HTML z wbudowanym CSS i JS. Uruchamiasz Pythona i działa.


Sprytne detale

Kilka rzeczy, które Claude dodał, a których sam bym nie wymyślił od razu:

Cache embeddingów — indeks zapisywany do JSON z hashami plików CSV. Jeśli dane się nie zmieniły, nie generuje embeddingów od nowa (oszczędność API).

Deduplikacja faktur — normalizuje numery faktur, usuwa prefiksy typu (s), (k), żeby ta sama faktura nie pojawiła się dwa razy.

Sesje czatu — chat pamięta kontekst rozmowy (do 40 wiadomości). Możesz dopytywać o szczegóły.

Podsumowania miesięczne — serwer automatycznie generuje dokumenty z podsumowaniami per miesiąc (faktury, wydatki, przychody, saldo), żeby AI miał kontekst czasowy.

Normalizacja kont bankowych — usuwa spacje, prefiksy PL, apostrofy. Dzięki temu matchuje konto z faktury z kontem z wyciągu bankowego.


Dane są bezpieczne — wszystko lokalne

Localhost = Twoje dane zostają u Ciebie

Serwer działa na Twoim komputerze. Dane nie idą do żadnego chmurowego SaaS-a. Jedyne połączenie zewnętrzne to OpenAI API — i to tylko po to, żeby stworzyć embeddingi i odpowiedzieć na pytania w chacie.

Możesz wyłączyć chat AI (nie podając klucza API) — dashboard i tak działa w 100%.


Ile to kosztuje

0 zł

Serwer Python

~2 zł/msc

Embeddingi OpenAI

~5 zł/msc

Chat GPT-4o (zależnie od użycia)

Dla porównania: typowy SaaS do zarządzania fakturami to 100-300 zł miesięcznie. Tu masz pełną kontrolę, pełny dostęp do danych i AI chat w cenie kawy.


To dopiero 2. dzień projektu

Projekt żyje i będzie rozwijany

To co widzisz w tym artykule to efekt 2 dni pracy. Nie miesiąca, nie kwartału — dwóch dni z VS Code i Claude Code. I to dopiero początek.

Narzędzie będzie rozwijane wewnątrz firmy. Na liście jest m.in. automatyczny import nowych faktur z maila, alerty o zbliżających się terminach płatności, porównania miesiąc do miesiąca i integracja z systemem księgowym. Każdy nowy feature to kolejna rozmowa z AI — i kolejne kilka godzin zamiast tygodni.


Wnioski

Nie musisz czekać na idealny SaaS. Nie musisz płacić za coś, co nie pasuje do Twojego workflow. Możesz wziąć VS Code + Claude Code, opisać problem po polsku, i mieć działające narzędzie tego samego dnia.

1 plik Python

~1100 linii kodu

Kilka godzin pracy

Zamiast tygodni bez AI

AI chat z RAG

Pytaj o swoje finanse

Najlepsze narzędzia to te, które budujesz pod siebie. AI nie zastąpi księgowej — ale da Ci dashboard, którego żaden gotowy program nie oferuje.

Zainteresowany automatyzacją danych?

LiveSales pomoże Ci zaoszczędzić czas i podejmować lepsze decyzje biznesowe dzięki automatycznym raportom i dashboardom.

Skontaktuj się z nami

Podobał Ci się ten artykuł?

Subskrybuj, aby dostawać powiadomienia o nowych artykułach.

Bez spamu. Możesz się wypisać w każdej chwili.