Katalog je bio suština problema. 700 odgovora na anketu je to potvrdilo.
Pre: slobodan tekst haos. Posle: 77 kategorija, 797 institucija, 52.098 tagova.
Ali ne možete samo baciti AI na 40.000 dokumenata i nadati se. Potrebni su slojevi.
Zašto slojevi?
Svaki poziv Gemini-ju košta. Vreme i novac.
Ako svaki upload prolazi kroz punu klasifikaciju — ekstrahuj tekst, analiziraj sadržaj, odredi tip, kategoriju, naslov, sažetak, ključne reči, instituciju — koštaćete mnogo i biće sporo.
Ali većina upload-a ne treba punu klasifikaciju. Neki su očigledno neprihvatljivi: e-knjige, CV-jevi, reklame, nečitljiv OCR. Zašto trošiti resurse na njih?
Zato: dvoslojna arhitektura.
Sloj 1: Gatekeeper
Brza, jeftina provera. Da li je ovaj dokument uopšte prihvatljiv za platformu?
Šta proverava:
- Da li je akademski sadržaj (score 0-1)
- Da li je komercijalna e-knjiga/izdavački sadržaj (rizik 0-1)
- Crvene zastave: e-knjiga, CV/biografija, reklama, prekratak, nečitljiv OCR
Odluka:
PROCEED— Nastavi ka punoj klasifikacijiREJECT— Prikaži grešku, ne obrađuj dalje
Gatekeeper je brz. Par sekundi. Ako dokument ne prođe, korisnik odmah zna.
interface GatekeeperResult {
decision: 'PROCEED' | 'REJECT';
scoreAcademic: number; // 0.0 - 1.0
ebookRisk: number; // 0.0 - 1.0
redFlags: string[]; // ['ebook', 'resume', 'advertisement', 'too_short', 'illegible_ocr']
reasoning: string;
}
Sloj 2: Puna klasifikacija
Samo za dokumente koji prođu gatekeeper.
Ekstrahuje:
documentType: Seminarski rad, Maturski rad, Skripta, Prezentacija, itd.subjectCategory: Iz 77 akademskih predmetatitle: Predloženi naslov na srpskom (latinica)summary: 120-350 karaktera sažetkakeywords: 2-5 ključnih rečischool: Detalji o institucijiconfidence: 0-1 score
Srpski jezik awareness:
Ovo nije trivijalno. Dokumenti su na srpskom (latinica i ćirilica), hrvatskom, bosanskom. Različiti termini za iste koncepte. Regionalne varijacije.
Gemini prompt eksplicitno navodi:
- Izlaz mora biti na srpskom (latinica)
- Prepoznaj regionalne varijacije
- Normalizuj termine na standardne kategorije
14-fazni pipeline
Klasifikacija je samo deo. Ceo pipeline:
- PDF unlock — Otključaj zaštićene PDF-ove
- Convert — DOC/DOCX/PPT/ODT → PDF
- Markdown extraction — PDF → Markdown za AI analizu
- Gatekeeper — Da li je akademski? (Sloj 1)
- Full classification — Tip, kategorija, naslov, sažetak (Sloj 2)
- PDF redaction — 30% preview za neregistrovane
- Compression — Smanji veličinu fajla
- Images — Generiši slike stranica
- HTML preview — PDF → HTML za web prikaz
- Thumbnails — Cover slike za listing
- RAG markdown — Optimizovan tekst za pretragu
- Final gate — Poslednja AI provera pre objave
- Institution extraction — Fuzzy matching + AI fallback
- R2 upload — Upload na Cloudflare R2
Svaka faza može da failuje. Sistem je fail-closed: ako bilo šta ne radi, dokument se ne objavljuje.
Final Gate: Poslednja linija odbrane
95% dokumenata prolazi. Ali taj final gate je kritičan.
Zašto još jedna provera? Zato što gatekeeper vidi samo početak procesa. Final gate vidi sve: originalni sadržaj, klasifikaciju, kako se naslov podudara sa sadržajem.
Tri ishoda:
GO— Objavi (odmah za PRO, zakazano 3-7 dana za non-PRO)NO_GO+ riskScore < 0.8 — Drži za admin pregledNO_GO+ riskScore >= 0.8 — Automatski u trash
interface FinalGateResult {
decision: 'GO' | 'NO_GO';
riskScore: number; // 0.0 - 1.0
reasoning: string;
suggestedAction: 'publish' | 'hold' | 'trash';
}
Fail-closed filozofija
Ako je Gemini nedostupan, šta se dešava?
Stari pristup (fail-open): Prihvati dokument, klasifikuj kasnije. Problem: spam prolazi.
Novi pristup (fail-closed): Odbij sa porukom za retry. Problem: korisnik mora da pokuša ponovo.
Izabrali smo fail-closed. Bolje je odbiti legitiman dokument nego prihvatiti spam.
// Error handling u ai-classification.ts
throw new Error('Document analysis service is temporarily unavailable. Please try again later.')
Ekstrakcija institucije: Dve strategije
Dokumenti često pominju instituciju. Ali na mnogo načina:
- "Univerzitet u Beogradu, Ekonomski fakultet"
- "Ekonomski fakultet BG"
- "EF Beograd"
- "EKOF"
Strategija 1: Fuzzy matching protiv poznatih termina (797 institucija).
Strategija 2: AI fallback za edge cases.
AI dobija listu institucija i traži best match. Ako confidence > 0.7, dodeljujemo. Ako ne, ne dodeljujemo — bolje bez nego pogrešna.
Pre i posle: Primer
Pre:
Naslov: SEMINARSKI RAD EKONOMIJA 2023
Kategorija: Ostalo
Institucija: (prazno)
Tagovi: (prazno)
Posle:
Naslov: Analiza makroekonomskih pokazatelja Srbije u periodu 2020-2023
Kategorija: Makroekonomija
Institucija: Univerzitet u Beogradu - Ekonomski fakultet
Tagovi: [makroekonomija, BDP, inflacija, Srbija, ekonomska analiza]
Sažetak: Rad analizira ključne makroekonomske pokazatelje Srbije...
Isti dokument. Potpuno drugačija discoveryability.
Metrke posle revizije
3.948 postojećih postova je imalo probleme sa kvalitetom:
- UPPERCASE naslovi
- lowercase naslovi
- kebab-case naslovi
- Prekratki naslovi
- Numerički prefiksi
AI reklasifikacija rezultati:
- 100% stopa popravke kategorija
- 99% stopa popravke naslova
- 69% stopa popravke tagova
- 28% stopa popravke HTML-a
695 nepopravljenih. Zašto? Izvorni fajl ne postoji na R2. Bez izvora, ni AI ne može da pomogne.
Efikasna AI klasifikacija nije samo "baci LLM na problem." To je arhitektura koja balansira troškove, latency, i kvalitet.
Gatekeeper eliminiše očigledno loše brzo i jeftino. Puna klasifikacija ide duboko samo za kvalifikovan sadržaj. Final gate hvata greške pre objave.
Dvoslojni pristup nije komplikacija. To je optimizacija.