Sistem backend ini mengotomatiskan proses screening kandidat dengan mengevaluasi CV dan laporan proyek menggunakan pipeline AI yang didukung oleh RAG (Retrieval-Augmented Generation).
- api-gateway: Menerima request HTTP untuk unggah file dan memulai evaluasi.
- evaluation-service: Mengelola status dan hasil pekerjaan evaluasi menggunakan PostgreSQL.
- worker-service: Menjalankan pipeline evaluasi AI secara asinkron. Berinteraksi dengan ChromaDB untuk konteks RAG dan Gemini untuk pemrosesan bahasa.
- PostgreSQL: Database utama untuk menyimpan metadata file dan pekerjaan evaluasi.
- ChromaDB: Vector database untuk menyimpan embeddings dari dokumen internal (Job Description, dll.) untuk RAG.
- RabbitMQ: Message broker untuk menangani tugas evaluasi asinkron.
- Docker & Docker Compose
- Go 1.21+
protoccompiler- API Key Google Gemini
SANGAT PENTING: Ikuti urutan ini dengan tepat.
- Buat folder
datadi root proyek. - Masukkan file PDF
job_description.pdfdancase_study_brief.pdfke dalam folderdata. - Buat file
.envdi root proyek dan isi dengan API Key Anda:
GEMINI_API_KEY=AIzaSy...Unduh semua dependensi Go:
go mod tidyGenerate kode gRPC dari file, jalankan di tempat .proto berada:
protoc evaluation.proto --go_out=. --go-grpc_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relativeSebelum menjalankan aplikasi utama, isi ChromaDB dengan konteks. Jalankan skrip ingesti:
go run scripts/ingest/main.goAnda akan melihat output bahwa dokumen telah berhasil di-ingest. Proses ini hanya perlu dijalankan sekali, atau setiap kali dokumen di folder data berubah.
Setelah proses ingesti selesai, jalankan semua layanan dengan Docker Compose:
docker-compose up --buildEndpoint: POST http://localhost:8080/upload
Tipe: multipart/form-data
Body:
cv→ (file CV.pdf)project_report→ (file LaporanProyek.pdf)
Response:
{
"cv_document_id": "...",
"project_document_id": "..."
}Endpoint: POST http://localhost:8080/evaluate
Tipe: application/json
Body:
{
"cv_doc_id": "...",
"project_doc_id": "..."
}Response:
{
"id": "...",
"status": "queued"
}Endpoint: GET http://localhost:8080/result/{id}
Response (setelah selesai):
{
"id": "...",
"status": "completed",
"result": {
"cv_feedback": "...",
"cv_match_rate": 0.85,
"overall_summary": "...",
"project_feedback": "...",
"project_score": 4.5
}
}