Blueprint screening CV AI — DW E-Recruitment (Golang)
Versi 0.5 · 10 Oktober 2026 · Rancangan, belum implementasi.
Revisi ini menambahkan AI + Simple Additive Weighting (SAW) hanya pada blueprint DW. Publikasi rancangan terpisah dari implementasi: tidak mengubah sistem E-Recruitment/Biproo, backend DW, atau portal operasional.
1. Identitas, masalah, dan tujuan
DW adalah produk milik Devworks, terpisah dari Biproo. Flow bisnis umum dapat serupa, tetapi DW memiliki codebase, aturan, pengguna, data, dokumen, database, kredensial, audit, dan roadmap sendiri. Tidak ada akses atau impor data Biproo yang diasumsikan. Rancangan ini bukan port kode atau migrasi produk tersebut.
Masalah penelitian: review CV membutuhkan waktu, dokumen memiliki format beragam, dan alasan ranking sulit ditelusuri. Tujuan prototipe Go adalah membantu recruiter DW membaca bukti, membandingkan CV dengan persyaratan posisi, dan memprioritaskan review; bukan menggantikan keputusan manusia.
Usulan judul: Rancang Bangun dan Evaluasi Sistem Screening CV Menggunakan Large Language Model dan Metode Simple Additive Weighting (SAW) dengan Backend Golang pada DW. Pembimbing menentukan rumusan akhir.
Pertanyaan penelitian:
- Seberapa dekat ranking AI + SAW dan skor aspek AI dengan penilaian recruiter pada dataset DW berizin/sintetis, dibanding baseline jumlah berbobot tanpa normalisasi antar-kandidat?
- Bagaimana kelengkapan ekstraksi dan dukungan bukti memengaruhi kualitas screening?
- Bagaimana bantuan AI memengaruhi waktu review, dengan kualitas hasil tetap diukur?
2. Scope
Prototipe penelitian mencakup lowongan, lamaran, upload CV privat, ekstraksi PDF teks/scan/hibrida, scoring AI berbukti, batch asinkron, ranking, review, dan audit. Rancangan platform lengkap DW mencakup 16 modul/82 kebutuhan: FPK/approval, talent pool/Walk Interview, assessment, interview, jadwal/meeting, training/OJT, onboarding, kontrak, laporan, dan integrasi. Seluruhnya masih rancangan; fitur di luar screening bukan syarat eksperimen inti.
Seluruh backend bisnis, validator, scoring, orkestrasi, dan worker baru dirancang dalam Go. Runtime inference dan alat OCR dapat berupa layanan/proses khusus yang dipanggil adapter Go. Memakai model yang sudah tersedia tidak berarti backend bisnis dibuat dengan bahasa atau aplikasi lama.
Server penuh memberi keleluasaan mengatur antrean, proses, storage, dan inference. CPU, RAM, VRAM, disk, throughput model, serta biaya tetap terbatas dan perlu diukur.
3. Kebutuhan fungsional
| ID | Kebutuhan DW |
|---|---|
| F01 | Kandidat memiliki akun, profil, persetujuan, dokumen, dan lamaran DW sendiri |
| F02 | Recruiter mengelola posisi, persyaratan, rubric berversi, dan scope organisasi |
| F03 | Upload privat melalui validasi tipe/ukuran, checksum, karantina, dan pemeriksaan dokumen |
| F04 | PDF diproses per halaman: ekstraksi teks, deteksi scan/hibrida, OCR bila diperlukan, dan metadata kualitas |
| F05 | Screening per lowongan/batch berjalan asinkron; job/item idempotent dan progres tersedia |
| F06 | Ekstraksi fakta per chunk mempertahankan nomor halaman/span bukti; scoring memakai persyaratan posisi |
| F07 | Output terstruktur divalidasi Go; alasan, kekurangan bukti, dan pertanyaan interview bersumber pada hasil |
| F08 | Ranking SAW dihitung Go per batch lowongan beku; versi normalisasi dapat diaudit, dengan pencarian/filter/pagination server-side |
| F09 | Review recruiter menyimpan keputusan review, koreksi, catatan, reviewer, waktu, dan audit |
| F10 | Retry terkontrol, dead-letter, pemulihan worker, model/rubric versioning, serta metrik operasional |
Ukuran halaman UI merupakan keputusan DW, bukan aturan produk lain. Usulan awal 25/50/100 dengan virtualisasi bila diperlukan; batch tetap dapat memproses ribuan item bertahap. Jumlah tersebut bukan hasil benchmark.
4. Flow utama
Kandidat mendaftar dan mengunggah CV → validasi/karantina → lamaran terkait lowongan → recruiter memulai batch → API Go menyimpan job serta outbox → antrean mendistribusikan tugas → worker scan/ekstraksi/OCR/inference memproses → skor aspek AI dan bukti divalidasi/disimpan → setelah semua item terminal, Go membekukan himpunan hasil valid → normalisasi dan ranking SAW → recruiter mereview dan menentukan tindak lanjut. Progres tetap tersedia selama pemrosesan.
Setiap tahap dapat gagal secara terpisah. File tidak aman tidak diteruskan; OCR/AI tidak lengkap diberi status perlu pemeriksaan, bukan otomatis skor nol. Retry untuk gangguan sementara dibatasi; kegagalan permanen masuk dead-letter dengan audit replay.
Detail ada pada flow dan diagram dan arsitektur kapasitas.
5. Strategi AI DW
- Adapter/kontrak baru:
dw-cv-screening-v1; service identity khusus DW, tanpa identitas client milik produk lain. - Semua halaman dalam batas upload yang disepakati diinventarisasi. Halaman relevan diproses; halaman yang diabaikan, gagal, atau belum diproses harus tercatat dengan alasan.
- CV panjang dibagi menjadi page/chunk tasks, kemudian fakta digabung dengan referensi halaman/span. Bukan mengirim seluruh PDF panjang sekaligus ke context model.
- OCR scan/hibrida memiliki pool CPU tersendiri. Worker inference memiliki concurrency sesuai kemampuan runtime/VRAM, bukan jumlah goroutine semata.
- Scoring hanya memakai CV dan persyaratan posisi. Tanpa pencarian web otomatis; teks CV diperlakukan sebagai data, bukan instruksi.
- Nama, foto, gender, agama, atau atribut sensitif bukan fitur kesesuaian. Redaksi sebelum inference dan audit bias tetap diperlukan; larangan prompt saja tidak menjamin fairness.
- Model yang tersedia menjadi baseline. Model lebih besar, context lebih panjang, atau fallback vision diuji dahulu; tidak otomatis lebih akurat.
- JSON/schema tidak valid, angka non-finite, atau skor di luar rentang ditolak dan dicatat. Informasi tidak tersedia dibedakan dari bukti ketidaksesuaian.
Tidak ada batas tetap warisan 3.500 karakter/12 halaman sebagai spesifikasi DW. Tetap ada batas keamanan upload, page count, token per panggilan, timeout, dan kuota yang dikonfigurasi berdasarkan pengujian. Pemrosesan lengkap tidak sama dengan menghilangkan seluruh batas resource.
6. Rancangan AI + SAW yang dapat diaudit
6.1. Pembagian peran
AI membaca bukti dan memberi skor aspek; SAW menghitung peringkat; recruiter memutuskan. SAW adalah metode pengambilan keputusan multikriteria, bukan model AI. Menambahkan SAW tidak otomatis meningkatkan ketepatan penilaian AI.
6.2. Kriteria dan bobot
Usulan rubric awal DW terdiri dari empat aspek dengan skor 0–100:
| Aspek | Simbol | Bobot awal | Jenis |
|---|---|---|---|
| Pengalaman relevan | E | 35% | Benefit |
| Keterampilan yang dibutuhkan | K | 30% | Benefit |
| Relevansi peran/lingkup pekerjaan | R | 20% | Benefit |
| Pendidikan/sertifikasi relevan | P | 15% | Benefit |
Bobot ini usulan DW, bukan aturan proprieter yang otomatis diwarisi. Recruiter DW mengesahkan rubric per posisi; bobot harus nonnegatif, berjumlah 100%, dan versinya dibekukan. Semua kriteria benefit: semakin besar nilainya semakin baik menurut rubric. Gaji, identitas pribadi, dan atribut sensitif tidak ditambahkan sebagai kriteria cost.
6.3. Rumus yang dipilih untuk DW
DW mengusulkan SAW dengan normalisasi maksimum per kriteria dalam satu batch lowongan. Penjumlahan berbobot dan normalisasi maksimum benefit merujuk bagian 2 dan 3.1 Stanujkic, Magdalinovic, dan Jovanovic (2013). Pemilihan batch, penanganan kegagalan, dan audit di bawah adalah keputusan rancangan DW.
x_ij = skor aspek j kandidat i yang valid (0–100)
M_j = maksimum x_ij pada himpunan kandidat valid dalam batch
r_ij = x_ij / M_j (jika M_j > 0)
V_i = jumlah(w_j × r_ij) (bobot desimal, jumlah = 1)
Nilai tampilan SAW = round(100 × V_i; 2)
Baseline skor absolut, bukan nilai SAW relatif batch:
S_i = 0,35 × E_i + 0,30 × K_i + 0,20 × R_i + 0,15 × P_iGo memvalidasi skor dan menghitung normalisasi, kontribusi berbobot, serta ranking; total dari model tidak dipercaya begitu saja. Perhitungan dan pengurutan memakai presisi penuh yang ditetapkan (misalnya decimal); hanya tampilan akhir dibulatkan dua desimal dengan aturan rounding eksplisit. Jangan membulatkan rasio/kontribusi antara lalu memakainya untuk ranking.
6.4. Contoh singkat, dua kandidat pada lowongan yang sama
| Kandidat | E (35%) | K (30%) | R (20%) | P (15%) |
|---|---|---|---|---|
| A | 80 | 90 | 75 | 70 |
| B | 90 | 80 | 80 | 80 |
| Maksimum kolom | 90 | 90 | 80 | 80 |
A = 100 × [(80/90 × 0,35) + (90/90 × 0,30)
+ (75/80 × 0,20) + (70/80 × 0,15)] = 92,99
B = 100 × [(90/90 × 0,35) + (80/90 × 0,30)
+ (80/80 × 0,20) + (80/80 × 0,15)] = 96,67
Urutan SAW: B lalu A. Baseline absolut: B=83,50; A=80,50.Angka sintetis ini hanya contoh hitungan. Nilai SAW 96,67 bukan akurasi AI, probabilitas diterima, atau kecocokan absolut 96,67%. Nilainya relatif terhadap kandidat pembanding. Bahkan satu kandidat dengan skor aspek positif bisa memperoleh nilai SAW 100; karena itu skor aspek/bukti dan konteks batch tetap ditampilkan.
6.5. Aturan batch, kasus khusus, dan review
- Tunggu semua item batch berstatus terminal (
completed,partial, ataufailed), lalu bekukan daftar kandidat, source scoring-run, rubric/model, dan vektor maksimum. Hanya hasil lengkap, valid, berbukti memadai, dan memakai konfigurasi penilaian yang sama masuk ranking final. Partial/gagal tetap terlihat dengan alasan, bukan diberi skor nol. - Jika tidak ada hasil valid, tidak ada ranking. Jika satu kolom seluruhnya bernilai nol yang sah, tetapkan rasio kolom itu nol untuk semua kandidat, pertahankan bobot, dan tampilkan peringatan bahwa kriteria tidak membedakan kandidat. Ini kebijakan DW untuk menghindari pembagian nol, bukan mengisi data hilang.
- Simpan
saw_ranking_rundan itemnya: metode/versi, anggota serta pengecualian, source scoring-run, maksimum kolom, bobot, rasio, kontribusi, nilai, dan urutan. Perubahan anggota, skor, atau bobot membuat versi ranking baru; hasil lama tidak ditimpa. - Nilai/ranking antar-batch atau antar-lowongan tidak langsung sebanding. Kandidat baru dapat mengubah maksimum, nilai, bahkan urutan; UI harus menampilkan versi dan himpunan pembanding.
- Tie-break memakai nilai SAW sebelum pembulatan → E → K → R → P → durasi pengalaman relevan tervalidasi → ID stabil. Tanggal lamaran bukan ukuran kualitas.
- Ambang lama ≥75/50 hanya usulan kategori untuk baseline absolut
S, perlu validasi recruiter, dan tidak langsung diterapkan pada nilai SAW relatif. Tidak ada penolakan otomatis; bukti tidak memadai diarahkan ke review.
7. Data, cache, dan review
Database PostgreSQL khusus dw_recruitment dirancang baru; bucket dokumen DW privat. Tidak menunjuk database aplikasi lain. ERD merupakan rancangan, belum DDL/migration.
Cache skor aspek AI menyertakan scope organisasi DW, hash dokumen/input, versi persyaratan, rubric/bobot, prompt, checksum model, konfigurasi inference, serta versi ekstraktor/OCR/scoring. Cache ranking SAW terpisah dan juga mengikat lowongan/batch, daftar source scoring-run/anggota, vektor maksimum, bobot, dan versi metode. Mengubah kandidat pembanding tidak mengizinkan penggunaan nilai SAW lama, tetapi skor aspek AI yang masih valid dapat dipakai menghitung ranking baru tanpa inference ulang. Cache tidak menyamakan data dua pemilik atau menggantikan pemeriksaan authorization.
Hasil menyimpan skor per aspek, baseline absolut S, artifact SAW berversi, alasan, span/page bukti, metadata ekstraksi, versi pipeline, status, dan timing. Review mengacu scoring-run dan versi ranking yang dilihat. Keputusan seperti reviewed atau needs_followup tidak berarti kandidat diterima kerja. Koreksi recruiter menjadi record baru dengan audit; tidak menimpa hasil AI diam-diam.
8. Keamanan dan batas keputusan
RBAC/scope organisasi diterapkan pada seluruh API, query, event progres, bucket, dan replay job. Kandidat hanya mengakses profil/dokumen/statusnya; catatan screening internal bukan endpoint publik.
Kredensial, kunci signing/enkripsi, cookie portal, database role, queue, backup, dan service identity DW terpisah dari Biproo. Jangan memakai cookie domain lebar .devworks.co.id untuk autentikasi recruiter; gunakan session host-only dan pertukaran identitas terkontrol jika SSO diperlukan.
Dokumen tidak boleh dieksekusi; parser/OCR berjalan dengan pembatas resource, tanpa akses jaringan yang tidak perlu. Hindari CV/token pada log. Retensi, penghapusan, hak akses, dan pemulihan backup perlu prosedur sebelum data nyata digunakan.
Recruiter memutuskan shortlist dan proses seleksi. AI tidak melakukan penolakan otomatis atau menyatakan kandidat layak/tidak layak bekerja tanpa review.
9. Hasil yang belum tersedia
Belum ada backend DW Go, migration, portal baru, deployment, maupun hasil eksperimen screening dalam paket ini. Snapshot model yang sehat bukan bukti kualitas. Seluruh angka kapasitas, SLA, dan target evaluasi harus ditetapkan setelah pilot dan pengukuran.