Tunas Akara
Kembali ke Portofolio
Asisten Bisnis LLM

Asisten Bisnis LLM

Tahun: 2026Peran: IT Consultant / Software Architectweb

Asisten KBLI berbasis RAG yang mengutip sumber resmi, mewajibkan kutipan verbatim, dan menjawab jujur, bukan menebak, saat beban tinggi.

Tech Stack

Next.js 16TypeScriptBunSQLiteOpenRouter APITailwind CSS

Asisten Bisnis LLM

Asisten LLM ini menjawab pertanyaan klasifikasi usaha KBLI dengan sumber resmi, bukan tebakan. KBLI adalah sistem klasifikasi usaha standar Indonesia; setiap perusahaan wajib pakai kode yang benar saat mengurus izin usaha (OSS). Salah pilih kode bukan sekadar typo. Bisa berarti izin yang salah, perlakuan pajak yang salah, atau berkas yang dikembalikan dinas perizinan.

Tantangan

Chatbot generik yang menjawab dari data training LLM tetap menghasilkan kode KBLI yang terdengar meyakinkan. Itu berlaku entah kodenya benar-benar ada atau cocok dengan usahanya atau tidak. Corpus datanya sendiri tidak membantu.

Ribuan kode tersebar di dua versi KBLI yang masih berlaku, dirujuk-silang dengan level risiko OSS, regulasi sektor, dan pemetaan migrasi 2020-ke-2025. Itu jauh lebih banyak dari yang muat di satu prompt, dan terlalu mudah bagi model untuk meringkas dari ingatan, bukan dari teks sumber.

Solusi

Saya membangun pipeline RAG di atas corpus klasifikasi ini lebih dulu. Definisi kode resmi diurai menjadi evidence card yang siap diambil. Evidence card ini diindeks dengan pencarian hybrid: full-text search SQLite untuk istilah resmi, plus dense embedding untuk deskripsi usaha yang tidak formal. Semuanya di-rerank secara deterministik sebelum sampai ke model.

Di atasnya berjalan agentic tool-calling loop yang saya tulis dari nol. Model tidak menjawab dari ingatan; ia memanggil tool.

Tool-nya mencari kandidat kode, mengambil detail berikut sumbernya, dan membandingkan beberapa kode. Tool ini juga menyusun satu set kode lengkap untuk aktivitas usaha perusahaan baru, atau mengaudit daftar kode yang sudah dimiliki klien. Setiap hasil tool membawa halaman sumbernya sampai ke jawaban akhir.

Pengecekan grounding-nya lebih jauh dari sekadar "kelihatannya benar". Ada tahap relevance-judge terpisah yang mewajibkan model mengutip potongan teks verbatim dari teks kode resmi. Baru setelah itu model boleh menyatakan kode itu relevan dengan usahanya. Klaim yang tidak bisa dikutip dijatuhkan kembali ke skor retrieval deterministik, bukan dipercaya begitu saja.

Biaya dikontrol per task, bukan per percakapan. Tahap rekomendasi, relevance judge, dan enrichment masing-masing punya pilihan model sendiri. Batas budget harian dan deadline per giliran chat mengendalikan sesi yang berat. Hasilnya jawaban jujur "sedang penuh, coba lagi", bukan panggilan yang lambat atau jawaban terburu-buru yang tidak grounded.

Dampak

Asisten ini sekarang menjawab pertanyaan klasifikasi dengan sumber yang bisa dicek, bukan tebakan yang meyakinkan. Ia memisahkan aktivitas inti usaha dari yang sifatnya pendukung. Ia juga mengaudit daftar kode yang sudah dimiliki klien terhadap usahanya yang sebenarnya. Kode yang sudah usang atau tidak didukung teks resmi ditandai, bukan disahkan begitu saja.

Setiap giliran chat mencatat status verifikasinya. Kegagalan grounding jadi sesuatu yang bisa diukur sistem, bukan sesuatu yang baru ketahuan belakangan oleh pengguna.