Tentang
Sehari-hari saya membangun sistem ujian, portal pembelajaran, dan chatbot RAG yang dipakai lintas unit — bukan proyek percobaan. Kekuatan saya ada di menyambung potongan-potongan: API, basis data, tampilan, dan sekarang pipa AI seperti pencarian vektor dan caching, supaya hasilnya cepat sekaligus murah.
Saya senang mengubah hal yang rumit jadi rapi, terdokumentasi, dan bisa dipakai tim lain. Di luar kode, saya mengajar — dan hobi saya memberi kuis mendadak, karena cara paling jujur untuk mengetahui orang benar-benar paham atau cuma mengangguk.
- Jabatan
- Pranata Komputer Ahli Pertama, BATII
- Domisili
- Tangerang Selatan
- Mengajar
- Politeknik Keuangan Negara STAN
Proyek
SatuChat — Chatbot RAG multi-tenant untuk dokumen internal
Januari 2026 – September 2026
Peran: perancang dan pengembang utama — 626 commit, seluruh riwayat repositori.
Masalah: Jawaban atas pertanyaan kebijakan dan prosedur tersebar di banyak dokumen dan unit, sehingga pegawai menghabiskan waktu mencari, bukan bekerja. Chatbot internal harus melayani banyak unit sekaligus dengan data yang benar-benar terisolasi, tanpa melampaui batas kuota Azure OpenAI sejuta token per menit.
Data: dokumen internal berupa PDF, artikel, dan hasil transkripsi video/audio diindeks ke Qdrant; skema basis data 64 migrasi; target layanan 10.000 pengguna.
Metode: Django 5.2 + Ninja, Celery + Redis, Qdrant, dan Azure OpenAI. Alur hibrida sinkron/asinkron — permintaan otomatis dipindah ke latar belakang dengan HTTP 202 saat sistem kelebihan beban. Caching berlapis (exact-match di Redis dan semantik berbasis embedding), rate limit 50 permintaan per menit per tugas LLM, serta isolasi tenant lewat filter tenant_id dan group_id pada setiap kueri vektor.
- 1,3–1,5 s → 0,3–0,4 mspembuatan embedding, dari cache miss ke cache hit
- 1,6 s → ±0,1 sjawaban dari cache semantik, sekitar 17 kali lebih cepat
- 906fungsi uji dalam 91 berkas uji
- 45.241baris kode Python
- ±160butir fitur dalam 13 modul
Simpulan: Caching berlapis dan isolasi tenant memangkas latensi sekaligus biaya token tanpa mengorbankan kerahasiaan antar unit.
Berkas bukti: Panduan operasional SatuChat (PDF)
KLC — Antarmuka baru dan layanan RAG Kemenkeu Learning Center
Mei 2026 – September 2026
Peran: pengembang antarmuka utama — 120 dari 174 commit klc-ui — sekaligus perancang layanan klc-chat.
Masalah: Antarmuka KLC lama tumbuh tanpa aturan gaya yang seragam, sehingga setiap halaman terlihat dan berperilaku berbeda, dan pengguna harus mencari sendiri materi pelatihan yang relevan. Saya membangun ulang antarmukanya dengan token desain dan menambahkan layanan RAG yang wajib menyertakan sitasi ke sumber aslinya.
Data: inventaris 75 berkas halaman pada antarmuka lama, dengan domain terbesar rtc 17 halaman, oa 13, help-desk 9, dan course 8. Sumber materi dibaca langsung dari basis data KMS MySQL dalam mode hanya-baca, dengan metadata baru di Postgres 16.
Metode: Angular 21 dengan ruang kerja pnpm dan token desain SCSS, sehingga menulis nilai warna atau jarak secara langsung dilarang. Layanan klc-chat dibangun dengan FastAPI, pencarian vektor hibrida Milvus, failover otomatis antara dua penyedia LLM, dan observabilitas OpenTelemetry ke OpenObserve.
- 62.062baris TypeScript, HTML, dan SCSS
- 91komponen dalam 11 modul fitur
- 174commit dalam empat bulan
- 3.055baris Python di layanan klc-chat, dengan 4 berkas uji
Simpulan: Satu bahasa visual lewat token desain membuat 91 komponen tetap konsisten, dan sitasi wajib membuat jawaban chatbot dapat diperiksa.
Berkas bukti: tidak ada laporan terpisah; bukti berupa diagram rancangan di atas.
CAT BPPK — Modernisasi penerapan dan keamanan aplikasi ujian
Juni 2026 – September 2026
Peran: kontributor pada tiga repositori — memimpin modernisasi penerapan (OpenShift, Docker, CI/CD) dan perbaikan keamanan dependensi.
Masalah: Aplikasi ujian yang dipakai banyak peserta masih dijalankan dengan cara lama, sehingga setiap penerapan bergantung pada langkah manual dan rawan meleset. Selain itu, beberapa pustaka tampilan sudah usang, dan berkas rahasia masih ikut tersimpan di dalam repositori.
Data: tiga repositori — API, aplikasi peserta, dan aplikasi pengelola — berisi 82.369 baris kode dan 1.193 commit sejak Mei 2020. API memuat 149 rute, 28 pengendali, 14 model, dan 13 migrasi.
Metode: containerisasi bertingkat dengan Dockerfile khusus OpenShift pada port 8080, penyetelan nginx untuk menambah jumlah koneksi sekaligus mengecilkan berkas, peningkatan citra dasar Node ke versi 22, perbaikan keamanan dependensi TinyMCE dan Moment.js, sanitasi keluaran editor teks, pemisahan berkas rahasia dari repositori, dan pemeriksaan kesehatan basis data.
- 62commit pada 2026 — 24 di API, 25 di aplikasi peserta, 13 di pengelola
- 3aplikasi terpasang dan berjalan di OpenShift
- 15 + 2berkas uji unit dan spesifikasi Cypress pada aplikasi peserta
Simpulan: Penerapan yang tadinya manual menjadi satu perintah, dan permukaan serangan dari dependensi lama ditutup tanpa mengubah perilaku ujian bagi peserta.
Berkas bukti: tidak ada laporan terpisah; bukti berupa tangkapan layar aplikasi peserta di atas.