Slavko Babić
Svi projekti

HR / marketplace

Portal za karijeru

Platforma koja povezuje kandidate i poslodavce — oglasi, prijave i uparivanje na jednom mestu — sa relevantnošću pretrage kao ključnim, teškim problemom u središtu.

Status U aktivnom razvoju

Pregled

Kandidati i poslodavci na istom tržištu su, na papiru, savršen spoj — a u praksi se retko efikasno pronađu. Oglasi su bučni, uparivanje je ručno, i obe strane gube vreme. Ovo je platforma za karijeru koja stavlja oglase, prijave i uparivanje na jedno mesto. U aktivnom je razvoju, a zanimljivi problemi su tačno oni koje biste i očekivali.

Problem

Naivna verzija portala za posao je pretraživa lista oglasa. To je onih lakih 20% i tu nije vrednost. Vrednost je u uparivanju — u tome da se prave pozicije prikažu pravim kandidatima kada nijedna strana nema strpljenja da preturi kroz sve. Zbog toga je relevantnost pretrage, a ne CRUD, središnji inženjerski problem.

Rešenje

Platforma na kojoj poslodavci objavljuju pozicije, kandidati se prijavljuju, a sistem obavlja stvaran posao da poveže to dvoje, umesto da ih samo skladišti. Symfony backend drži domen; Vue.js frontend opslužuje obe strane tržišta; OpenSearch pokreće otkrivanje i relevantnost; MySQL čuva kanonske podatke; a sve to radi u Dockeru.

Pošto je u aktivnom razvoju, ovaj tekst je iskren u tome da je snimak stanja, a ne gotova retrospektiva — arhitektura ispod je oblik koji se izgrađuje, a nešto od toga se još uvek dokazuje u praksi.

Arhitektura

Dizajn tretira pretragu kao prvorazredni podsistem od prvog dana, ne kao nešto što se doda kad se CRUD završi. OpenSearch je sloj za otkrivanje, sinhronizovan sa MySQL-om kao sistemom istine, tako da rezultati nikada ne kasne za stvarnošću. Symfony daje domenu disciplinovanu strukturu — entiteti, jasne granice, prostor za rast — a Vue frontend ga konzumira kao API umesto da poseže u njega.

Držati dve publike ovog tržišta (kandidate, poslodavce) koherentnim u jednom proizvodu znači biti promišljen oko toga gde njihovi tokovi dele mašineriju, a gde se razilaze, kako promena na jednoj strani ne bi tiho slomila drugu.

Tehnički izazovi

Relevantnost je ono što se stalno vraća — uparivati kandidate i pozicije dovoljno dobro da obe strane veruju rezultatima, što je više problem podešavanja i iteracije nego jednokratne izgradnje. A kao živ projekat, pravi izazov je obična disciplina inkrementalne izgradnje nečeg netrivijalnog: držati svaki korak isporučivim, držati indeks pretrage poštenim dok šema evoluira, i odupreti se porivu da se uparivanje prekomerno izgradi pre nego što postoji upotreba iz koje se može učiti.

Naučene lekcije

Još se pišu — što je iskren odgovor za projekat koji je u toku. Rana lekcija je ista ona koju projekti tržišta stalno predaju: prepoznaj tu jednu stvar zbog koje proizvod zapravo postoji (ovde uparivanje) i ne dozvoli da postane naknadna misao iza lake skele. Ažuriraću ovo kako bude isporučivano.

Tehnologije

  • Symfony
  • Vue.js
  • OpenSearch
  • MySQL
  • Docker