# Što ćete izgraditi#
Ovaj vodič opisuje produkcijski spreman pipeline za ulazne PDF-ove i slike uz n8n automatizaciju obrade dokumenata: zaprimanje dokumenata, OCR, klasifikaciju vrste dokumenta, ekstrakciju polja, validaciju rezultata, usmjeravanje prema CRM-u i računovodstvenim alatima te održavanje potpunog revizijskog traga.
Cilj nije demo workflow. Ovo je pipeline koji možete pokretati svakodnevno uz predvidljivu točnost, zaštitne ograde kroz ljudsku provjeru i obradu grešaka koja neće potajno oštetiti financijske podatke.
# Pregled arhitekture#
Produkcijski pipeline treba odvojiti računski zahtjevne korake, poslovna pravila i downstream integracije. n8n orkestrira korake, dok specijalizirani alati odrađuju OCR i ekstrakciju.
Tok na visokoj razini#
- 1Ulazni dokumenti stižu putem e-maila, upload forme, SFTP-a ili cloud pohrane.
- 2Predobrada datoteka i normalizacija ulaza u slike i tekst.
- 3OCR i parsiranje rasporeda.
- 4Klasifikacija za odabir prave strategije ekstrakcije.
- 5Ekstrakcija polja u strukturirani JSON.
- 6Validacija i bodovanje pouzdanosti.
- 7Ljudska provjera za iznimke i rezultate niske pouzdanosti.
- 8Usmjeravanje prema sustavima zapisa: računovodstvo, CRM, ticketing, pohrana.
- 9Revizijski trag i nadzor.
Komponente i odgovornosti#
| Komponenta | Preporučene opcije | Zašto je važno |
|---|---|---|
| Orkestrator | n8n self-hosted ili n8n cloud | Centralizirani workflow, retry, odobrenja, logiranje |
| OCR | Google Document AI, AWS Textract, Azure Form Recognizer, Tesseract | Kvaliteta OCR-a određuje točnost nizvodno |
| Pohrana | S3-kompatibilno, Google Drive, SharePoint | Nepromjenjiva pohrana izvornog файла za reviziju |
| Baza podataka | Postgres (preporučeno) | Trajno stanje, deduplikacija, revizijski događaji, redovi |
| Ljudska provjera | Slack, Teams, Email approvals | Brza obrada iznimki uz sljedivost |
| Downstream | Xero, QuickBooks, NetSuite, HubSpot, Salesforce | Automatizirano knjiženje i usmjeravanje |
ℹ️ Napomena: U produkciji izbjegavajte oslanjanje isključivo na interne podatke o izvršavanju u n8n kao revizijski log. Vodite zaseban trajni revizijski trag u Postgresu ili vašem data warehouseu kako biste mogli dokazati što se dogodilo čak i ako se povijest workflowa obriše.
# Preduvjeti#
| Zahtjev | Verzija | Napomene |
|---|---|---|
| n8n | 1.40+ | Koristite queues mode za pouzdanost pod opterećenjem |
| Node.js | 18+ | Za self-hosted deploymente |
| Postgres | 14+ | Za stanje, dedup, audit i red za provjeru |
| Object storage | Bilo koji | S3, GCS, Azure Blob ili SharePoint |
| OCR provider | Bilo koji | Odaberite prema jeziku, cijeni i SLA-u |
| Access tokens | CRM + računovodstvo | Koristite scoped vjerodajnice i least privilege |
Ako želite i ekstrakciju temeljenu na LLM-u ili dohvat metapodataka o dobavljaču, pročitajte n8n AI agents and RAG workflows kako biste AI dijelove dizajnirali sigurno.
# Korak 1: Ulazno zaprimanje i normalizacija#
Ulaz je mjesto gdje počinje većina produkcijskih problema: duplicirani e-mailovi, oštećeni PDF-ovi, računi zaštićeni lozinkom, threadovi s više privitaka i slike loše kvalitete.
Podržani ulazni kanali#
| Kanal | n8n čvorovi | Tipična upotreba |
|---|---|---|
| E-mail inbox | IMAP Email, Gmail, Microsoft Outlook | Dobavljači šalju račune i potvrde e-mailom |
| Upload portal | Webhook, Form tool | Interno osoblje učitava skenirane dokumente |
| Cloud folder | Google Drive, OneDrive, S3 | Model “drop folder” |
| SFTP | SFTP node | Legacy integracije s dobavljačima |
Normalizirajte rano#
Normalizirajte sve u dosljedan interni prikaz:
document_idkao vlastiti UUID- originalna datoteka pohranjena nepromjenjivo
- slike po stranicama za OCR
- metapodaci poput pošiljatelja, predmeta, vremena zaprimanja, izvornog kanala
Jednostavan obrazac je: pohranite original, zatim kreirajte izvedene artefakte u strukturi mapa poput:
raw/originalni PDF ili slikarendered/PNG straniceocr/JSON odgovorextracted/normalizirani JSONaudit/događaji validacije i usmjeravanja
Primjer: kreirajte zapis dokumenta i trajno pohranite datoteku
// n8n Function node (keep under 20 lines)
const crypto = require('crypto');
const documentId = crypto.randomUUID();
return items.map(item => ({
json: {
document_id: documentId,
source: item.json.source || 'email',
received_at: new Date().toISOString(),
filename: item.json.filename,
},
binary: item.binary,
}));⚠️ Upozorenje: Ne tretirajte predmet e-maila ili broj računa dobavljača kao jedinstveni ID. Duplikati se događaju često. Uvijek deduplicirajte pomoću content hasha plus ključnih metapodataka.
Zaštitna ograda za deduplikaciju#
Izračunajte SHA-256 originalnih bajtova datoteke i spremite ga u Postgres s unique constraintom. Ako ista datoteka stigne ponovno, prekinite proces s događajem “already processed”.
| Dedup ključ | Prednosti | Nedostaci |
|---|---|---|
| Content hash | Snažno i jednostavno | Ne radi ako dobavljač ponovno pošalje malo izmijenjeni PDF |
| Hash + pošiljatelj + datum | Manje lažnih pozitivnih | Zahtijeva podešavanje |
| Broj računa + dobavljač | Poslovno smisleno | Nepouzdano ako ekstrakcija zakaže |
# Korak 2: Predobrada za kvalitetu OCR-a#
Performanse OCR-a snažno ovise o kvaliteti ulaza. Uobičajena poboljšanja uključuju ispravljanje nagiba (deskew), normalizaciju DPI-a i razdvajanje stranica.
Praktična pravila koja povećavaju točnost#
- Pretvorite PDF-ove u slike od 300 DPI za OCR kada je PDF sken.
- Za digitalne PDF-ove prvo izvadite ugrađeni tekst i OCR koristite samo kao fallback.
- Ako su slike fotografirane, ispravite nagib i povećajte kontrast.
Strategija usmjeravanja OCR-a: digital-first#
Koristite ovu odluku:
- Ako PDF ima ugrađeni tekst iznad praga, preskočite OCR i koristite izvučeni tekst.
- Inače pokrenite OCR.
Razuman prag je embedded_text_length greater than 200 znakova po stranici.
# Korak 3: OCR i parsiranje rasporeda#
Odaberite OCR providera sa stabilnom latencijom, dobrom podrškom za račune i transparentnim confidence scoreovima. Za EU račune na različitim jezicima cloud OCR alati obično nadmašuju lokalni OCR u detekciji rasporeda.
Usporedba providera#
| Provider | Prednosti | Kompromisi |
|---|---|---|
| Google Document AI | Snažni invoice parseri, dobar layout | Trošak i GCP lock-in |
| AWS Textract | Solidno za obrasce i tablice | Ekstrakcija tablica zna biti šumovita na skenovima |
| Azure Form Recognizer | Dobra opća ekstrakcija | Podešavanje modela traži trud |
| Tesseract | Jeftino, lokalno, kontrolabilno | Niža točnost na lošim skenovima |
Preporučena shema OCR izlaza#
Pohranite OCR izlaz kao JSON s:
- tekstom po stranici
- bounding boxovima
- per-token confidenceom ako je dostupan
- detektiranim jezikom
- request ID-om providera
Ovo je ključno za reviziju i kasnije debugiranje kada dobavljač osporava iznos.
💡 Savjet: Spremite OCR provider request ID u revizijski log. To značajno ubrzava otvaranje support ticketa kod providera i dokazivanje konkretno lošeg OCR izvođenja.
# Korak 4: Klasifikacija (Račun, Potvrda, PO, Ugovor)#
Klasifikacija određuje koja se strategija ekstrakcije pokreće i koja se pravila validacije primjenjuju.
Praktične metode klasifikacije#
| Metoda | Kada koristiti | Ideja implementacije |
|---|---|---|
| Pravila temeljena na ključnim riječima | Stabilni predlošci | Pretražite OCR tekst za “invoice”, “vat”, “total” |
| ML ili LLM klasifikator | Mnogo layouta | LLM vraća jednu oznaku plus confidence |
| Mapiranje po dobavljaču | Poznati dobavljači | Mapirajte domenu pošiljatelja na dobavljača i vrstu dokumenta |
Robustan pristup je hibrid:
- 1Ako je pošiljatelj poznati dobavljač, koristite vendor mapping.
- 2Inače brzi rule-based klasifikator.
- 3Inače LLM klasifikator, ali tražite confidence i kasniju validaciju.
Minimalna strategija prompta za klasifikator#
Ako koristite LLM, želite kratak input, determinističan output i confidence score. Šaljite samo tekst prve stranice plus nekoliko ključnih linija poput iznosa ukupno i zaglavlja, ne cijeli OCR.
# Korak 5: Ekstrakcija polja u strukturirani JSON#
Ekstrakcija treba davati stabilnu shemu bez obzira na providera. Downstream računovodstveni alati žele predvidljiva polja.
Preporučena normalizirana shema#
| Polje | Tip | Napomene |
|---|---|---|
doc_type | string | invoice, receipt, purchase_order |
vendor_name | string | Preferirajte podudaranje s vendor masterom |
vendor_vat_id | string | Validirajte prema pravilima države |
invoice_number | string | Obavezno za račune |
invoice_date | date | ISO format |
due_date | date | Opcionalno |
currency | string | ISO 4217 |
net_amount | number | Validirajte matematiku |
vat_amount | number | Validirajte matematiku |
gross_amount | number | Validirajte matematiku |
iban | string | Opcionalno |
line_items | array | Količina, jedinična cijena, porez |
confidence | object | Confidence po polju |
Strategije ekstrakcije#
- 1Template ekstrakcija za poznate dobavljače.
- 2Parser ekstrakcija koristeći invoice modele OCR providera.
- 3LLM ekstrakcija za polustrukturirane račune, ali samo uz jaku validaciju.
Produkcijski obrazac je pokušati ih tim redom i stati na prvoj koja prođe validaciju s prihvatljivim confidence scoreom.
Primjer: normalizacija brojeva i datuma
// n8n Function node
function toNumber(v) {
if (v === null || v === undefined) return null;
return Number(String(v).replace(/\s/g, '').replace(',', '.'));
}
function toISODate(v) {
if (!v) return null;
const d = new Date(v);
return isNaN(d.getTime()) ? null : d.toISOString().slice(0, 10);
}
items[0].json.net_amount = toNumber(items[0].json.net_amount);
items[0].json.gross_amount = toNumber(items[0].json.gross_amount);
items[0].json.invoice_date = toISODate(items[0].json.invoice_date);
return items;# Korak 6: Validacija i zaštitne ograde točnosti#
Validacija je ono što pipeline čini sigurnim. Cilj nije “izvući nešto”, nego “izvući nešto dovoljno točno da se može knjižiti u računovodstvo”.
Osnovna pravila validacije za račune#
| Pravilo | Primjer | Radnja ako padne |
|---|---|---|
| Obavezna polja prisutna | broj računa, datum, dobavljač, bruto | Pošalji na provjeru |
| Provjera iznosa | net + vat = gross unutar tolerancije | Provjera ili ponovna ekstrakcija |
| Valuta prepoznata | EUR, USD, GBP | Provjera |
| Format VAT ID-a | HR12345678901 | Provjera |
| IBAN kontrolna suma | HR1210010051863000160 | Provjera |
| Duplikat računa | isti dobavljač + broj računa | Blokiraj i upozori |
Koristite toleranciju zbog zaokruživanja. Uobičajeno pravilo je abs((net + vat) - gross) less than 0.02 u jedinicama valute za valute s dvije decimale.
Confidence scoring koji radi u praksi#
Izračunajte confidence na razini dokumenta iz confidencea polja i ishoda validacije.
Jedan praktičan model bodovanja:
- Krenite od 100
- Oduzmite 30 za nedostajuće obavezno polje
- Oduzmite 20 za matematičko neslaganje
- Oduzmite 10 za nisku OCR kvalitetu
- Oduzmite 10 po kritičnom polju čiji je confidence ispod 0.8
Zatim odlučite:
- Score 85 do 100: auto-usmjeri
- Score 60 do 84: usmjeri uz obaveznu ljudsku provjeru
- Score ispod 60: ponovno pokreni OCR ili ekstrakciju s fallbackom, zatim provjera
🎯 Ključna poruka: Validacijske neuspjehe tretirajte kao signal za promjenu puta obrade, ne kao grešku koju treba ignorirati. Većina “katastrofa automatizacije” događa se kad se neispravni podaci ipak pošalju u računovodstvo.
Obrada grešaka i retry#
OCR API-ji i SaaS integracije padaju. Ugradite retry s backoffom i alertovima.
Koristite dosljedan obrazac: retry za prolazne greške, stop za tvrde validacijske neuspjehe i podignite alert kad je potrebna ručna intervencija. Za implementacijske obrasce koristite n8n error handling, retries, and alerting.
# Korak 7: Workflow za ljudsku provjeru (brz, revizibilan i siguran)#
Human-in-the-loop nije kompromis. To je način da postignete visoku točnost uz uštedu vremena.
Kada zahtijevati provjeru#
- Bilo koje obavezno polje nedostaje
- Bilo koje matematičko neslaganje
- Bilo koje kritično polje s niskim confidenceom
- Bilo koji novi dobavljač koji nije u master podacima
- Bilo koja sumnja na duplikat
- Bilo koji “high-risk” račun iznad praga, npr. iznad 5000 EUR
Kako implementirati odobrenja u n8n#
Koristite approval korak koji šalje izvučena polja plus link na originalni PDF i OCR overlay.
Praktična review poruka uključuje:
- naziv dobavljača
- broj računa
- datum
- bruto iznos
- iznos PDV-a
- predloženi kontni kod i cost center
- putanju “Approve” i “Request changes”
Za implementacijske detalje kroz Slack, Teams i e-mail slijedite n8n approval workflows.
Model podataka reda za provjeru#
Spremite review zadatke u Postgres, ne samo u Slack threadove.
| Stupac | Tip | Svrha |
|---|---|---|
task_id | UUID | Identifikator review zadatka |
document_id | UUID | Veza na dokument |
status | string | pending, approved, rejected |
assigned_to | string | E-mail ili user ID |
payload | JSON | Izvučena polja i validacija |
decision | JSON | Odobrene izmjene, komentari |
created_at | timestamp | Praćenje SLA-a |
decided_at | timestamp | Revizija |
Ovo omogućuje SLA-ove, dashboarde i potpuni revizijski trag.
# Korak 8: Usmjeravanje prema CRM-u i računovodstvenim alatima#
Usmjeravanje je mjesto gdje se realizira poslovna vrijednost: računi idu u računovodstvo, potvrde u troškove, narudžbenice u nabavu, a korisnički dokumenti u CRM.
Matrica usmjeravanja#
| Vrsta dokumenta | Ruta | Primjer integracije |
|---|---|---|
| Račun dobavljača | Accounting AP | Xero bills, QuickBooks bills, NetSuite vendor bill |
| Potvrda | Alat za troškove | Expensify, Rydoo ili računovodstveni expense |
| Narudžbenica | Nabava | ERP modul ili ticketing |
| Obrazac narudžbe kupca | CRM | HubSpot deal note, Salesforce attachment |
| Ugovor | DMS | SharePoint, Google Drive s metapodacima |
Strategija knjiženja u računovodstvu#
Knjižite u dva koraka:
- 1Kreirajte draft bill s izvučenim header poljima.
- 2Dodajte stavke, porezne kodove i privitke.
- 3Označite kao “ready for approval” ili ostavite kao draft, ovisno o politici.
Ako računovodstveni sustav to podržava, uključite vaš interni document_id u custom polje radi sljedivosti i deduplikacije.
⚠️ Upozorenje: Nikada ne knjižite direktno u stanja “approved” ili “paid” kroz automatizaciju osim ako imate jake kontrole, role-based access i odvojena odobrenja. Za većinu timova automatizacija treba raditi u draft-first modu.
# Korak 9: Revizijski tragovi i observability#
Revizijski tragovi su obavezni za financije i usklađenost. Morate moći odgovoriti: što je zaprimljeno, što je izvučeno, tko je odobrio, što se promijenilo i što je poslano downstream sustavima.
Što logirati za svaki dokument#
| Revizijski događaj | Pohranjena polja | Zašto |
|---|---|---|
| Zaprimanje ulaza | izvor, pošiljatelj, timestampovi, file hash | Dokazuje porijeklo i dedup |
| OCR dovršen | provider, request ID, confidence, trajanje | Debugiranje i SLA |
| Klasificirano | label, confidence, metoda | Objašnjava odluku usmjeravanja |
| Izvučeno | izvučeni JSON, confidence po polju | Reproducibilnost |
| Validirano | rezultati pravila, score, padovi | Opravdava potrebu za provjerom |
| Pregledano | recenzent, izmjene, odluka, timestampovi | Usklađenost |
| Usmjereno | destination ID-evi, payload, status | Sljedivost |
| Greške | stack trace, broj retryja, finalni status | Pouzdanost |
Metriке koje su bitne#
Pratite metrike tjedno i poboljšavajte sustav na temelju dokaza:
- straight-through processing stopa, postotak obrađen bez provjere
- stopa provjere po dobavljaču i po vrsti dokumenta
- točnost na razini polja za kritična polja
- prosječno end-to-end vrijeme obrade
- cijena po dokumentu, uključujući OCR i ručni rad
Osnovni cilj kojem mnogi financijski timovi teže je 60 do 80 posto straight-through za račune nakon vendor mappinga i podešavanja predložaka, dok se ostatak usmjerava na provjeru. Stvarna brojka ovisi o varijabilnosti dokumenata i kvaliteti skenova.
# Checklist za produkcijsko učvršćivanje#
Sigurnost i privatnost#
- Enkriptirajte datoteke u mirovanju u object storageu.
- Ograničite n8n vjerodajnice na least privilege.
- Maskirajte osjetljiva polja u logovima gdje je moguće.
- Koristite zaseban service account po integraciji.
Dizajn workflowa za pouzdanost#
- Koristite queues mode i odvojene workere za OCR-teške tokove.
- Dodajte timeoute za pozive vanjskih API-ja.
- Implementirajte idempotency ključeve na računovodstvenim postovima.
- Uvijek spremite međukorake prije poziva downstream sustava.
Fallback strategije#
| Vrsta kvara | Prva reakcija | Fallback |
|---|---|---|
| OCR timeout | Retry s backoffom | Promijeni providera ili smanji DPI |
| Nizak OCR confidence | Ponovno renderiraj stranice | Forsiraj OCR s jačim postavkama |
| Ekstrakcija ne uspije | Probaj alternativni extractor | Ljudska provjera s OCR tekstom |
| Downstream API greška | Retry ako je prolazna | Kreiraj ticket i pauziraj usmjeravanje |
# Primjer nacrta n8n workflowa (čvorovi i tok)#
Ovaj odjeljak daje praktičnu “mapu čvorova” koju možete brzo implementirati.
Glavni workflow čvorovi#
| Faza | Primjeri čvorova | Izlaz |
|---|---|---|
| Ulaz | IMAP Email Trigger ili Webhook | Binary datoteka + metapodaci |
| Pohrana raw | S3 ili Drive upload + Postgres insert | document_id, URL datoteke, hash |
| Detekcija teksta | PDF extract ili OCR decision Function | ruta na OCR ili parsiranje teksta |
| OCR | HTTP Request prema provideru | OCR JSON |
| Klasifikacija | Function + opcionalni LLM poziv | doc_type, confidence |
| Ekstrakcija | Function + opcionalno parsiranje OCR modela | normalizirani JSON |
| Validacija | Function + Postgres provjere | izvještaj validacije + score |
| Ljudska provjera | Slack/Teams/Email approval | odluka + izmjene |
| Usmjeravanje | Accounting/CRM čvorovi | vanjski ID-evi |
| Audit | Postgres insert events | audit zapis |
Minimalni insert audit događaja#
-- Postgres node query example
INSERT INTO document_audit_events
(document_id, event_type, event_payload, created_at)
VALUES
($1, $2, $3::jsonb, NOW());Koristite parametre za $1, $2, $3 iz n8n kako biste izbjegli probleme sa spajanjem stringova.
# Ključne poruke#
- Dizajnirajte n8n automatizaciju obrade dokumenata kao pipeline s trajnim stanjem: raw datoteka, OCR izlaz, izvučeni JSON, validacija, usmjeravanje i audit događaji.
- Koristite digital-first OCR strategiju: vadite ugrađeni tekst iz PDF-a kada je dostupan, OCR pokrećite samo kada treba i spremite OCR provider request ID-eve radi podrške.
- Kombinirajte klasifikaciju i validaciju: klasifikacija bira put ekstrakcije, ali validacija odlučuje je li rezultat dovoljno siguran za automatsko usmjeravanje.
- Implementirajte ljudsku provjeru kao funkcionalnost prve klase s Postgres-backed redom za provjeru, praćenim odlukama i izmjenama spremljenima kao audit događaji.
- Usmjeravajte downstream u draft-first modu za računovodstvo i provodite idempotency ključeve kako biste spriječili duplikate i oštećene glavne knjige.
- Tretirajte obradu grešaka kao dio proizvoda: izgradite retry, alertove i fallbackove koristeći obrasce iz n8n error handling.
# Zaključak#
Produkcijski spreman dokumentni pipeline nije “OCR plus jedan API poziv”. To su OCR, klasifikacija, ekstrakcija, deterministička validacija, sigurno usmjeravanje i revizijski trag koji izdrži financijski i compliance nadzor.
Ako želite da Samioda implementira ovo end-to-end, uključujući podešavanje vendor predložaka, approval workflowe i računovodstvene integracije, kontaktirajte nas putem naših usluga automatizacije i pomoći ćemo vam isporučiti pouzdan n8n document processing automation sustav u tjednima, ne mjesecima.
FAQ
Više iz kategorije Poslovna automatizacija
Sve →Automatizirano izvještavanje s n8n: izradite tjedne KPI sažetke iz GA4, Stripea i Postgresa
Praktičan vodič za automatizirano izvještavanje s n8n: povucite tjedne KPI-je iz GA4, Stripea i Postgresa, provjerite kvalitetu podataka, generirajte sažet narativni pregled i pošaljite ga u Slack i e-mail uz ponovne pokušaje i održivu strukturu.
n8n + Supabase/Postgres obrasci automatizacije: webhooks, RLS-sigurni upisi i pouzdana sinkronizacija
Praktičan vodič kroz obrasce automatizacije n8n + Supabase Postgres: ingestija webhooks događaja, idempotency ključevi, upserts, RLS-sigurni upisi i pouzdana dvosmjerna sinkronizacija za SaaS back-office tijekove rada.
Izgradnja workflowova AI agenata u n8n-u: RAG, korištenje alata i zaštitne ograde za produkciju
Praktičan end-to-end vodič za n8n AI agent RAG workflow: unos dokumenata, segmentiranje i izrada embeddinga, pohrana u vektorsku bazu, upit s LLM-om te sigurno puštanje u rad uz PII kontrole, obranu od prompt-injectiona, ograničenja troškova i ljudska odobrenja.
Trebate pomoć s projektom?
Gradimo prilagođena rješenja koristeći tehnologije iz ovog članka. Senior tim, fiksne cijene.
Povezani članci
Kako automatizirati svoj CRM s n8n: praktični vodič (lead scoring, follow-upovi, izvještavanje)
Praktični vodič za 2026. za CRM automatizaciju s n8n: povežite HubSpot ili Pipedrive, izgradite lead scoring, automatizirane follow-upove i workflowe za izvještavanje uz primjere koje možete copy-pasteati.
10 automatizacijskih workflowa za e-trgovinu koji štede sate svakog tjedna (n8n primjeri)
Praktičan vodič kroz automatizacijske workflowe za e-trgovinu: 10 provjerenih automatizacija za obradu narudžbi, upozorenja o zalihama, recenzije, napuštene košarice, podršku i analitiku — s n8n primjerima workflowa koje možete kopirati.
Automatizirano izvještavanje s n8n: izradite tjedne KPI sažetke iz GA4, Stripea i Postgresa
Praktičan vodič za automatizirano izvještavanje s n8n: povucite tjedne KPI-je iz GA4, Stripea i Postgresa, provjerite kvalitetu podataka, generirajte sažet narativni pregled i pošaljite ga u Slack i e-mail uz ponovne pokušaje i održivu strukturu.