Bilko Modul B (Knjigovodstvo) — Spec + Board presuda (2026-06-13) TL;DR — 4/4 CONDITIONAL GO (jednoglasno). Modul B = dovršenje Modula A, ne ekspanzija. Četiri tvrda uvjeta (U1–U4) moraju biti zadovoljeni prije B-1 sprintova. Gate je komercijalni: 1 imenovan, obvezani ovlašteni računovođa kao design-partner. CEO direktiva 2026-06-13: "kreni kao da imamo računovođu" → B-1 path otvoren; U1 (Vlado posting-rule templates) u toku — MC #103530. 1. Presuda odbora — Board Verdict Datum: 2026-06-13 · MC #103523 Članovi: Markos Zachariadis (fintech/tržište), Petter Graff (izvodljivost), Vlado Brkanić (HR domena/regulativa), Skybound (SaaS strategija) Rezultat: 4/4 CONDITIONAL GO (jednoglasno uvjetno DA) Nijedan NO-GO. Nijedan bezuvjetni GO. Sva četiri nezavisna glasa stigla na istu strukturu — što je sam po sebi signal: nije pristranost jednog ugla, nego konvergencija. Zajednički zaključci (sva 4 se slažu) B nije "drugi proizvod" / premature expansion — to je dovršenje Modula A. Bez GL-a, svaka A-faktura pada u računovodstvenu crnu rupu (računovođa je ručno pretipkava). B pretvara Bilko iz "alata koji STVARA posao računovođi" u "platformu gdje računovođa živi". Vertikalna integracija unutar istog workflowa. Računovođa = distribucijski kanal. Na HR/Balkan tržištu vlasnik NE bira računovodstveni softver — bira ga (ili veta) računovođa. 1 računovođa = potencijalno 30 firmi na Modulu A. To je flywheel (isti mehanizam kao Xero). "Light-export" alternativa = povlačenje, ne strategija (Skybound + Markos). Cementira Bilko u trajno podređenu "feeder" poziciju, bez lock-ina, bez cjenovne poluge. Gradi se SAMO kao fallback ako uvjet ispod ne padne u 30 dana. Pakiranje "2 proizvoda 1 platforma" = koherentno (Xero/QuickBooks/FreeAgent rade isto). Cijena: računovođin seat (flat) + po-firmi iznad besplatnog praga. Mapira se na postojeći feature-gate #102481. Bez arhitektonske kontradikcije. Četiri hard uvjeta (presjek svih glasova — moraju biti TRUE prije builda) Uvjet Opis Glasači Rok / Eskalacija U1 Vladini posting-rule templates ISPISANI i ovjereni PRIJE prve linije B-1 koda. Ne razgovor — potpisan dokument: konto po tipu dokumenta po jurisdikciji u JSONB formatu. Bez toga B-1 ship-a s placeholder pravilima = kriva knjiga = gore od ničega. Markos + Petter + Skybound + Vlado Markos: ako nije u 3 tjedna → NO-GO U2 Jedan IMENOVANI, obvezani ovlašteni računovođa kao design-partner: (a) daje posting pravila, (b) vodi praksu na B-1 MVP-u u pilotu, (c) tjedni feedback. Čak WhatsApp potvrda dovoljna na ovom stupnju. Skybound (gate) Postiže se u danima/tjednima. Ako ne padne u 30 dana → light-export fallback. U3 SAMO B-1 sada (8-10 tj, 1 senior BE + 0.5 FE). B-2/B-3 ODGOĐENI dok: A stabilan (0 sev-1 bugova 60 dana), riješen domain-QA kapacitet, ≥1 PLAĆAJUĆI računovodstveni servis koristi B-1. Kill-switch (Unleash ACCOUNTING_GL_MODULE / GL_AUTO_POST) ožičen i testiran PRIJE bete. Petter + Vlado B-2/B-3 su zasebna CEO odluka tek nakon dokaza. U4 Za F3 (GFI/PD/PDV obrasci prema FINA/Poreznoj): stalni ovlašteni računovođa kao "regulatory owner" na platnoj listi. Honorarni konzultant NE zadovoljava. F4 (JOPPD/plaće) = zasebna CEO odluka, NE u ovom glasu. Vlado (hard uvjet) Preduvjet za F3 fazu — ne za B-1. Glasačka tablica Glasač Glas Ključni uvjet Markos Zachariadis (Finverge) CONDITIONAL GO Vlado posting-rule templates zaključani PRE B-1 sprinta; referentni računovođa potpisan; A ima mjerljive klijente Petter Graff (CodeCraft) CONDITIONAL GO — B-1 ONLY NOW, B-2/B-3 DEFERRED 8-10 tjd bounded bet; Vlado pisana pravila PRIJE prvog koda; kill-switch aktivno testiran Vlado Brkanić (domena) UVJETNO GO — F1 DA; F3 UVJETNO; F4 NE F3+: stalni ovlašteni računovođa na platnoj listi; VERIFY-NN runda za sve obrasce Skybound (SaaS strategija) CONDITIONAL GO Jedan imenovan design-partner računovođa s posting-rule obvezom PRIJE kickoffa; inače light-export fallback Što odbor poručuje CEO-u (akcija) Build-odluka NIJE inženjerska — gate je KOMERCIJALNI: nađi 1 obvezanog računovođu (čak WhatsApp potvrda dovoljna na ovom stupnju). To istovremeno rješava U1 (daje pravila), U2 (validira spremnost na prelazak prije 20-26 tj builda) i prvi referentni/plaćajući slučaj. Ako CEO potvrdi imenovanog računovođu u 30 dana → B-1 ide CodeCraftu na scoping (8-10 tj). Ako ne → light-export layer kao privremeni kanal, B se revidira. Raspon koji nije u specu (rizici koje je odbor dodao) Compliance je DOŽIVOTNI OPEX , ne jednokratni build trošak — COMBINED spec ga nije ucijenio (Vlado + Petter). Attention-split: 1 senior BE + 0.5 FE radi SAMO ako su to DODATNI ljudi, ne postojeći A-tim. Inače A skuplja neservisirani dug. Provjeri headcount prije GO. Opening-balance onboarding wizard mora biti stvarno dobar — računovođa ne migrira 30 firmi sredinom porezne godine bez toga. Jedna rečenica: A = jezgra i ulaz na tržište; B-1/F1 = GRADI (uz imenovanog računovođu + Vladina pisana pravila); B-2/B-3 = tek nakon dokaza plaćanja; F4/plaće = zasebna odluka. 2. Modul B Spec — Vizija i arhitektura Jedna platforma, dva proizvoda A = Bilko Fakturiranje (vlasnik firme) — postoji. B = Bilko Knjigovodstvo (OVLAŠTENI RAČUNOVOĐA, multi-org) — novo. Feature-gated preko postojeće #102481 arhitekture (Feature enum / PlanTier / FeatureMatrix — operativno; B se uključi BEZ mijenjanja postojećeg koda). Novi Stripe add-on/plan za B. Temelj koji već postoji (tool-verificirano u repou) accounts/account_types (kontni plan, seeded per jurisdikcija V23/24/27/62) ✓ Transactions tabela + validateDoubleEntry() stub (no.alai.bilko.accounting) ✓ Feature-gate (#102481) operativan ✓ · orgTransaction/RLS čist ✓ · ReportExportService (PDF/XLSX) reuse ✓ KRITIČNO: postojeća Transactions = 2-leg (debit_account_id/credit_account_id) = prečica, NIJE prava temeljnica. Izlazni račun s PDV-om = 3 noge (Kupci D / Prihod P / PDV-obveza P). GL engine treba PRAVI multi-leg model. Transactions ostaje za bank-recon, nije GL. GL Engine (Petter Graff) 4 nove tabele: journal_entries — glava temeljnice (org_id, period, status: DRAFT/POSTED/REVERSED) journal_postings — noge (account_id, debit/credit amount; multi-leg per entry) accounting_periods — periodi s OPEN/CLOSED statusom i period-close logikom document_postings — idempotency bridge: UNIQUE(org_id, source_type, source_document_id) posting_rules (config) — JSONB konfiguracija po dokumentu po jurisdikciji 3 PG triggera: balance enforcement (ΣD=ΣP na POSTED), immutability (entries+postings readonly nakon POSTED). 1 servis: PostingRuleEngine — evaluira posting_rules JSONB, generira journal_postings automatski. A→B bridge: SINHRON unutar orgTransaction (DB atomicity). Idempotencija: UNIQUE constraint → dokument se knjiži tačno jednom; edit/void = reversing entry. Codebase disciplina (Petter): B routes ostaju u /accounting/* namespace; GlService nikada ne importira iz InvoiceService (bridge kroz domain event / DTO); Flyway migracije B prefiksovane zasebno (VN__gl_*.sql). Kako A hrani B — auto-prijedlog temeljnice Svaki A-dokument → auto-PRIJEDLOG temeljnice (računovođa pregleda/potvrdi, ne naslijepo): Tip dokumenta Knjiženje (D = Duguje / P = Potražuje) Izlazni račun D 1200 Kupci / P 7600 Prihod + P 2400 PDV-obveza Naplata (uplata klijenta) D 1000 Banka / P 1200 Kupci Ulazni račun D 4xxx Trošak + D 1400 Pretporez / P 2200 Dobavljači Plaćanje dobavljaču D 2200 Dobavljači / P 1000 Banka Putni nalog D 4200/4201 Dnevnice / P 2310 Obveza prema zaposleniku Blagajnički primitak D 1020 Blagajna / P 1200 Kupci ili P 7600 Prihod Mapiranje konfigurabilno po orgu; bez mapiranja → status "za kontiranje" (računovođa ručno unosi). Faze i trud (order-of-magnitude, Petter) Faza Trajanje Resursi Sadržaj B-1 MVP 8–10 tj 1 senior BE + 0.5 FE GL shema, kontni plan UI, auto-post izlazni računi, ručne temeljnice, glavna knjiga, BRUTO BILANCA, feature-gate, Stripe add-on, opening-balance wizard B-2 6–8 tj isti Ulazni računi, plaćanja, putni→temeljnice, pravi PDV obrazac, period close, salda-konti B-3 6–8 tj isti GFI (bilanca/RDG/bilješke), DI+amortizacija, PD obrazac B-4 8–12 tj TBD Plaće/JOPPD — ZASEBNA CEO odluka, samo iza certificirane cijevi Ukupno bez B-4: 20–26 tj (~5–6.5 mj), gated po fazama, ne blank check. Build vs Buy: BUILD Nema OSS JVM double-entry s Balkan jurisdikcijom + multi-tenant RLS. Engine ~1500 linija Kotlina. Složenost je u Vladinim domenskim pravilima, ne u mehanizmu. Ništa eksterno. Pravne granice (Vlado Brkanić) Bilko PRIPREMA + IZVOZI; uprava potpisuje GFI (čl. 18.9–10 ZoR); ovlaštena osoba podnosi PDV/PD/JOPPD. ZABRANJENO: "automatski/jednim klikom/garantirano/zamjenjuje računovođu". Disclaimer ostaje na svakom regulatornom outputu — vidljiv, perzistentan, ne-dismissable. Plaće/JOPPD = crvena zona (F4 = zasebna CEO odluka). Rizici (Petter) Posting-rule correctness (BLOKER): Vlado mora dati konta za svaki tip dokumenta po jurisdikciji; krivo pravilo = kriva glavna knjiga. Platform-admin review gate PRIJE auto-post aktivacije. Double-post: DB unique constraint (entry + idempotency u jednoj tx). GL query perf: composite index (org_id, account_id, created_at); materijalizirani snapshots u Fazi B-3. Migracija postojećih: orgovi sredinom godine trebaju opening-balance → GL onboarding wizard obavezan u B-1. VERIFY NN (potrebno prije F2/F3) PDV-K status, dnevnice iznosi, JOPPD osnovice, amortizacija udvostručenje — nije potvrđeno, FINA URL 404 (Vlado napomena). Eksplicitna VERIFY-NN runda obvezna. 3. Status odluke — CEO direktiva 2026-06-13 CEO direktiva 2026-06-13: "kreni kao da imamo računovođu" → B-1 path otvoren. U1 u toku: Vlado Brkanić ispisuje posting-rule templates → MC #103530. U2 pending: CEO traži imenovanog računovođu-design-partnera (rok: 30 dana ili light-export fallback). U3: B-1 jedino ovlašteno; B-2/B-3 freezed dok A ne postigne 0 sev-1 bugova 60 dana + ≥1 plaćajući računovodstveni servis na B-1. U4: F3 faza blokirana dok Bilko ne zaposli stalnog ovlaštenog računovođu kao "regulatory owner". Sljedeći korak za CodeCraft (Petter): čekaj U1 (Vladine template) → B-1 scoping sprint (8-10 tj estimate). Appendix: Sažetak individualnih glasova Markos Zachariadis — Finverge (FinTech & tržište) Glas: CONDITIONAL GO Tržišna analiza: SMB bookkeeping SaaS segment u HR/BA/RS podservisiran — incumbenti (RRiF, Pantheon, Minimax, Saga) su desktop-native, single-org, bez eRačun-native workflowa. Bilko-ov wedge: računovođa dovodi 30 klijenta na platformu gdje su već (kao A korisnici) — obrnut distribucijski model od Minimaxa i fundamentalno jeftiniji za akviziciju. A→B flywheel realan, ali aktivira se kasno (tek kad A ima dovoljno penetracije da računovođe naiđu organski). Efikasni wedge pitch: "eRačun-first" — klijentovi eRačuni teku direktno u knjige bez re-unoса. Tri hard pre-condition gate: (1) Domain input locked — Vlado potpisani JSONB konto-templates PRIJE B-1 sprinta; (2) Referentni računovođa potpisan — ovlašteni računovođa (HZRFD ili ekvivalent) kao beta partner PRIJE B-1 produkcijskog laунcha; (3) A ima mjerljive traction (preporuka: 50 plaćajućih A klijenata ILI 3 računovodstvena servisa na A). Flip to NO-GO: ako Vlado posting-rule input nije dostupan u 3 tjedna od B-1 start datuma. Matematički balansiran ali sadržajno pogrešan GL = tiha erozija povjerenja + pravna izloženost računovođi. Petter Graff — CodeCraft (arhitektura i izvodljivost) Glas: CONDITIONAL GO — B-1 ONLY, B-2/B-3 DEFERRED Arhitektura je ispravna i čista. B-1 isporučuje pravi minimalni proizvod kojim računovođa može raditi (izlazni računi, ručne temeljnice, bruto bilanca). 8-10 tjd = bounded bet; 26 tjd sada = blank check na proizvod koji još pronalazi PMF, s otvorenim A-bugovima iz UAT-a. Glavni rizik nije u engine-u — nego u posting-rule correctness kao TRAJNOJ operativnoj funkciji: PDV stope, GFI FINA sheme, dnevnice iznosi mijenjaju se godišnje. Vlado nije na stalnom ugovoru → domenska QA kapacitet ne postoji za B-2/B-3 opseg. Uvjeti za B-2/B-3: (1) A stabilan (0 sev-1 bugova 60 dana + bank recon live); (2) Vlado na retaineru ILI stalni ovlašteni računovođa; (3) ≥1 plaćajući B-1 accounting firm. Vlado Brkanić — Domena (HR računovodstvo/porez) Glas: UVJETNO GO — F1 DA; F3 UVJETNO; F4 NE dok uvjet ne padne F1 = sigurna zona (ništa ne ide državi; računovođa pregledava; bruto bilanca nije regulatorni output). F3 = visoki regulatorni rizik (GFI/PDV/PD obrasci prema FINA/Poreznoj se mijenjaju godišnje; NN/Pravilnici/FINA sheme). F4 (JOPPD/plaće) = crvena zona — ne u ovom glasu. Jedan hard uvjet za F3: Bilko zapošljava stalnog ovlaštenog računovođu kao "regulatory owner" Modula B. Honorarni konzultant NE zadovoljava. Compliance = doživotni OPEX, ne jednokratni build trošak. Bilko na govorljivom HR tržištu — jedan bug koji 30 firmi jednog servisa pogrešno proknjiži = trajno narušeno ime. Skybound — SaaS strategija Glas: CONDITIONAL GO B nije premature expansion — to je vertikalna integracija unutar istog workflowa. Računovođa = stvarni decision-maker za A-akviziciju (vlasnik ne bira software, bira računovođa). Light-export alternativa = retreat opcija, ne strategija — cementira Bilko u podređenu "feeder" poziciju bez lock-ina i bez cjenovne poluge. Pricing model: računovođin seat (flat) + per-client-org fee iznad besplatnog praga (npr. prvih 5 orgova uključeno, zatim X BAM/mj po dodatnom orgu) — koherentno s #102481 feature-gate arhitekturom. Jedan hard gate: imenovan design-partner računovođa s posting-rule obvezom PRIJE B-1 kickoffa (čak WhatsApp potvrda dovoljna). Bez toga: light-export fallback u 30 dana. Sequencing: B-1 s design-partnerom u svakom sprintu → tek po prvom plaćajućem korisniku komercijalni push A → B-2/B-3 na temelju feedback-a.