Sebuah platform asisten pencari kerja cerdas terintegrasi (Job Aggregator dan AI Orchestrator) yang dibangun menggunakan C++ sebagai Core Engine dan API Server, Python untuk Otomasi Web Scraping dan AI Agents (Qwen-2.5-72B), serta React.js untuk frontend yang modern dan dinamis.
Sistem ini mengotomatiskan scraping dari 3 situs lowongan kerja terpopuler (Jobstreet, KitaLulus, dan Loker.id). Asisten AI pintar bertugas mencocokkan kualifikasi profil/CV pengguna dengan lowongan kerja. Admin memiliki kontrol penuh untuk melakukan CRUD lowongan kerja serta memblokir user yang melanggar ketentuan. User dapat mencari dan melamar pekerjaan baik dari lowongan khusus Admin maupun data scraping realtime, lengkap dengan fitur Auto-Bookmark otomatis berbasis AI jika profil pengguna dinilai sangat cocok dengan hasil scraping terbaru.
Mata Kuliah: Algoritma dan Pemrograman Lanjut
| Nama Anggota | NIM |
|---|---|
| Rendy | 2509106069 |
| Muhammad Ihsan Rosadi | 2509106081 |
| Rega Wahyu Firenza | 2509106085 |
β’ Fitur β’ Technologies β’ Requirements dan Setup
- π Otomasi Web Scraping (3 Platform) - Pengambilan data lowongan secara otomatis dan berkala dari Jobstreet, KitaLulus, dan Loker.id menggunakan Python browser automation terpusat.
- π€ AI Agents Orchestrator (Qwen-2.5-72B) - Didukung oleh asisten AI pintar terintegrasi OpenRouter:
- Profile Matching: Menganalisis kecocokan kualifikasi profil/CV pengguna dengan kriteria pekerjaan.
- Auto-Bookmark: Secara otomatis menyaring lowongan hasil scraping terbaru dan menyimpannya jika tingkat kecocokan dinilai tinggi oleh AI.
- AI Career Consultant: Fitur interaktif untuk berdiskusi karir dan menganalisis detail lowongan kerja.
- π¨ Core Engine dan API Server C++ - Engine backend performa tinggi yang mengelola autentikasi pengguna, penyimpanan terstruktur berbasis JSON, serta pembagian peran:
- Fitur Admin: Mengelola data lowongan (CRUD lowongan admin) serta mengaudit dan memblokir/membuka blokir akses user.
- Fitur User: Menjelajah lowongan, melamar pekerjaan dari postingan admin maupun data realtime hasil scraping, serta mengelola bookmark.
- π¨ Dashboard Web Modern React.js - Antarmuka pengguna interaktif dan dinamis berbasis React dan Tailwind CSS untuk visualisasi hasil scraping, statistik pencarian, dan manajemen bookmark secara langsung.
Untuk memproses dan mengelola data lowongan secara mandiri dan cepat, proyek ini menerapkan algoritma pencarian (searching) dan pengurutan (sorting) di dalam berkas utils.hpp:
- Bubble Sort (Gaji): Mengurutkan lowongan berdasarkan ekspektasi gaji tertinggi secara menurun (descending) dengan optimasi bendera swapped untuk mempercepat proses.
- Bubble Sort Indeks (ID): Mengurutkan nomor indeks bantu secara menaik (ascending) berdasarkan ID lowongan sebagai persiapan untuk pencarian biner tanpa merusak urutan data asli.
- Linear Search (Judul): Mencari kata kunci judul lowongan kerja secara berurutan dengan optimasi Transpose (memindahkan lowongan yang ditemukan ke indeks pertama agar pencarian berikutnya untuk judul yang sama menjadi instan).
-
Binary Search (ID): Melakukan pencarian biner dengan kecepatan tinggi
$O(\log n)$ untuk menemukan detail lowongan kerja berdasarkan ID menggunakan pemetaan array indeks terurut.
| Teknologi | Deskripsi |
|---|---|
| C++ CMake |
Core engine backend dan build system |
| Conan | Package manager untuk manajemen dependensi C++ |
| Python uv |
Script scraping dan dependency manager Python |
| React.js | Library JavaScript untuk UI frontend |
| Tailwind CSS | Framework CSS untuk styling yang fleksibel |
| Vite | Build tool dan dev server frontend super cepat |
Klik untuk melihat struktur lengkap folder proyek
βββ data
β βββ lowongan.json
β βββ profile.json
β βββ users.json
βββ frontend
β βββ public
β β βββ diagram.svg
β β βββ favicon.svg
β β βββ icons.svg
β βββ src
β β βββ assets
β β β βββ hero.png
β β β βββ react.svg
β β β βββ vite.svg
β β βββ components
β β β βββ FilterBar.jsx
β β β βββ Header.jsx
β β β βββ JobDetail.jsx
β β β βββ JobRow.jsx
β β β βββ JobTable.jsx
β β β βββ Pagination.jsx
β β β βββ SearchBar.jsx
β β β βββ StatsBar.jsx
β β β βββ Toast.jsx
β β βββ hooks
β β β βββ useJobs.js
β β βββ App.jsx
β β βββ index.css
β β βββ main.jsx
β βββ .gitignore
β βββ bun.lock
β βββ eslint.config.js
β βββ index.html
β βββ package.json
β βββ postcss.config.js
β βββ tailwind.config.js
β βββ vite.config.js
βββ include
β βββ api
β β βββ api_server.hpp
β βββ bridge
β β βββ python_bridge.hpp
β βββ core
β β βββ json_storage.hpp
β βββ services
β β βββ auth_service.hpp
β β βββ job_service.hpp
β β βββ profile_service.hpp
β βββ constants.hpp
β βββ models.hpp
β βββ utils.hpp
β βββ validation.hpp
βββ scripts
β βββ agents
β β βββ __init__.py
β β βββ analyst.py
β β βββ auto_matcher.py
β β βββ client.py
β β βββ matcher.py
β βββ scrapers
β β βββ __init__.py
β β βββ jobstreet_scraper.py
β β βββ kitalulus_scraper.py
β β βββ lokerid_scraper.py
β β βββ scraper_manager.py
β β βββ utils.py
β βββ shared
β β βββ __init__.py
β β βββ bridge.py
β β βββ skema.py
β βββ .gitignore
β βββ main.py
β βββ pyproject.toml
β βββ uv.lock
βββ src
β βββ api
β β βββ api_server.cpp
β βββ bridge
β β βββ python_bridge.cpp
β βββ core
β β βββ json_storage.cpp
β βββ services
β β βββ auth_service.cpp
β β βββ job_service.cpp
β β βββ profile_service.cpp
β βββ main.cpp
βββ .gitignore
βββ CMakeLists.txt
βββ LICENSE
βββ README.md
βββ conanfile.txt
Berikut adalah panduan langkah demi langkah untuk melakukan setup proyek dari nol (Zero to Hero).
Pastikan Anda telah menginstal compiler C++ (seperti GCC, Clang, atau MSVC/Visual Studio Build Tools di Windows).
-
Download & Install CMake:
- Kunjungi cmake.org/download.
- Unduh installer sesuai OS Anda (misal:
Windows x64 Installer). - Saat instalasi, pastikan mencentang opsi "Add CMake to the system PATH for all users" agar bisa dijalankan dari terminal.
- Verifikasi instalasi di terminal dengan:
cmake --version
-
Download & Install Conan (C++ Package Manager):
- Conan diinstal menggunakan Python (pip). Pastikan Python sudah terinstal di sistem Anda.
- Buka terminal dan jalankan:
pip install conan
- Buat default profile (hanya perlu dijalankan sekali):
conan profile detect
-
Install VS Code Extension (Sangat Direkomendasikan):
- Cari dan instal ekstensi CMake Tools oleh Microsoft (
ms-vscode.cmake-tools) di VS Code Anda. - Ekstensi ini otomatis mendeteksi konfigurasi
CMakeLists.txt, melakukan syntax highlighting, dan mempermudah proses kompilasi. Anda cukup menekan tombol βοΈ Build di status bar bawah VS Code tanpa perlu mengetik perintah manual di terminal setiap kali mengubah kode.
- Cari dan instal ekstensi CMake Tools oleh Microsoft (
-
Build Proyek C++ (Manual via Terminal):
- Di terminal proyek utama Anda, jalankan perintah conan berikut untuk mendownload dependensi dalam mode Debug:
conan install . --output-folder=build --build=missing -s build_type=Debug
- Masuk ke folder build:
cd build
- Lakukan konfigurasi CMake menggunakan compiler MinGW dan toolchain yang dihasilkan oleh Conan:
cmake .. -G "MinGW Makefiles" ` -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" ` -DCMAKE_BUILD_TYPE=Debug ` -DCMAKE_MAKE_PROGRAM="C:/ProgramData/mingw64/mingw64/bin/mingw32-make.exe"
- Jalankan kompilasi proyek:
cmake --build .
- Di terminal proyek utama Anda, jalankan perintah conan berikut untuk mendownload dependensi dalam mode Debug:
Proyek ini menggunakan uv, package manager Python yang sangat cepat.
-
Download & Install uv:
- Windows: Buka PowerShell dan jalankan:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- macOS/Linux: Jalankan di terminal:
curl -LsSf https://astral.sh/uv/install.sh | sh - Verifikasi instalasi dengan:
uv --version
- Windows: Buka PowerShell dan jalankan:
-
Setup Environment and Dependencies:
- Di root folder proyek, buat virtual environment dan sinkronisasi dependensi:
uv venv uv sync
- Opsional: menggunakan Playwright, install browser pendukungnya:
uv run playwright install chromium
- Di root folder proyek, buat virtual environment dan sinkronisasi dependensi:
-
Menjalankan Script Scraper:
uv run scripts/main.py
-
Download & Install Node.js:
- Kunjungi situs resmi nodejs.org.
- Unduh versi LTS (Long Term Support) yang direkomendasikan.
- Jalankan installer dan ikuti petunjuk (Next terus).
npm(Node Package Manager) akan otomatis terinstal bersama Node.js. - Verifikasi instalasi di terminal:
node --version npm --version
-
Menjalankan Frontend React:
- Pindah ke folder frontend:
cd frontend - (Khusus pengguna Windows PowerShell) Jika mengalami error saat menjalankan npm, izinkan eksekusi script dengan perintah berikut:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
- Install seluruh dependensi (React, Vite, Tailwind, dll):
npm install
- Jalankan server development:
npm run dev
- Buka browser Anda di
http://localhost:5173(atau sesuai port yang tampil di terminal).
- Pindah ke folder frontend:
AI Agents di platform OpenWork menggunakan model Qwen-2.5-72b-instruct yang diakses melalui layanan API OpenRouter. Ikuti langkah-langkah di bawah ini untuk mengonfigurasinya:
- Dapatkan API Key OpenRouter:
- Kunjungi situs resmi OpenRouter.ai.
- Lakukan pendaftaran (Sign Up) atau masuk (Sign In).
- Setelah masuk, buka halaman Keys di openrouter.ai/keys.
- Klik tombol Create Key (Buat Kunci), beri nama kunci tersebut (misalnya:
OpenWork-Dev), lalu klik Create. - Salin kunci API yang dihasilkan (biasanya dimulai dengan
sk-or-v1-...). Simpan baik-baik karena kunci ini hanya ditampilkan sekali!
- Buat file
.envsecara langsung:- Di root folder proyek OpenWork, buat berkas baru bernama
.env. - Buka berkas
.envtersebut menggunakan VS Code atau teks editor pilihan Anda. - Masukkan baris konfigurasi berikut dan isi dengan API Key yang telah Anda salin sebelumnya:
# API Key dari OpenRouter (Qwen-2.5-72b-instruct) OPENROUTER_API_KEY=sk-or-v1-isi_api_key_anda_disini
- Simpan berkas tersebut.
- Di root folder proyek OpenWork, buat berkas baru bernama
Warning
File .env berisi kredensial sensitif Anda dan secara default sudah terdaftar di berkas .gitignore agar tidak terunggah ke repositori Git publik. Jangan pernah membagikan berkas .env atau menghapusnya dari daftar gitignore.
- Verifikasi AI Agent:
- Untuk memverifikasi apakah integrasi berjalan lancar, pastikan Anda telah melakukan langkah setup Python, kemudian jalankan:
uv run scripts/main.py
- Pilih opsi yang berinteraksi dengan AI Agent (misalnya Analyst Agent atau Match Profile). Jika berhasil mengirim dan menerima respons tanpa error, konfigurasi Anda sudah selesai!
- Untuk memverifikasi apakah integrasi berjalan lancar, pastikan Anda telah melakukan langkah setup Python, kemudian jalankan: