Korpus chatbot batch 2 — domain AHU tambahan + product knowledge ahu-ocr
Tanggal: 2026-08-22 · Lanjutan dari: batch 1
Lingkup: data-only. Tidak ada perubahan kode aplikasi, tidak ada deploy.
1. Ringkasan
| Awal hari ini | Setelah batch 1 | Setelah batch 2 | |
|---|---|---|---|
guide (crawl panduan.ahu.go.id) |
757 | 757 | 757 |
generated-help (artikel buatan sendiri) |
43 | 297 | 378 |
| Total chunk | 800 | 1.054 | 1.135 |
Total artikel generated-help |
43 | 77 | 96 |
Batch 2 menambah 19 artikel / 81 chunk: 11 artikel domain AHU (gen5_*) dan
8 artikel product knowledge ahu-ocr (gen6_*).
Keputusan Anda soal ambang rupiah non-tarif — dibiarkan tanpa angka — sudah
dijalankan; builder batch 2 bahkan punya assertion yang menolak build kalau ada
nominal rupiah yang lolos.
2. Artikel baru per domain
2a. gen5_* — domain AHU (11 artikel / 43 chunk)
| Artikel | Isi pokok |
|---|---|
| CV/Firma/Persekutuan Perdata — jenis transaksi | 5 jenis: Pendaftaran · Pencatatan Pendaftaran · Perubahan · Pencatatan Perubahan · Pembubaran. Jalur "Pencatatan" untuk badan usaha yang berdiri sebelum sistem daring, dan wajib melampirkan Bukti Pengesahan lama |
| Aturan nama CV/Firma/PD | Nama tidak boleh berawalan "CV", cek kata terlarang, cek nama terdaftar & nama yang sedang diajukan, pengajuan nama punya tanggal kedaluwarsa |
| Pembubaran CV/Firma/PD | 6 dasar pembubaran + dokumen pendukung (Akta Pembubaran / Putusan Pengadilan / Dokumen Lain) |
| Pelaporan wasiat bulanan (notaris) | UUJN Pasal 16 ayat (1) huruf j: 5 hari pada minggu pertama tiap bulan berikutnya; jendela tanggal 1–5; laporan NIHIL tetap wajib; terlambat → teguran email & risiko freeze; form unfreeze hanya tanggal 5–12 |
| Surat Keterangan Wasiat (SKW) | Data pemohon, dokumen kematian, identitas almarhum (termasuk alias & "lahir sekitar tahun"); unggahan maks 5 MB; email Yahoo/Hotmail/Live/Outlook tidak diproses |
| Pemilik Manfaat (BO) | Data wajib tiap pemilik manfaat termasuk alamat sesuai negara asal untuk WNA dan "hubungan korporasi dengan pemilik manfaat"; kriteria berbeda per bentuk korporasi |
| Pemblokiran badan hukum | Jenis blokir (Password / Permohonan), cakupan Seluruhnya/Sebagian, 12 jenis dokumen pendukung, dan rantai Konseptor → Verifikator → Direktur BU → Jenderal → Selesai |
| Pembubaran PT vs Berakhirnya Status | Pembubaran (Ps.142–147) MEMBUKA likuidasi & mengangkat likuidator; Berakhirnya Status MENUTUPnya dengan menerima laporan akhir likuidator. Prasyarat: pembubaran harus sudah disetujui |
| Penggabungan vs Peleburan vs Pengambilalihan | Penggabungan → satu PT bertahan; Peleburan → semua bubar, lahir PT baru; Pengambilalihan → tidak ada yang bubar, pengendalian yang pindah |
| Dokumen pendirian Yayasan & Perkumpulan | Akta saja untuk pendirian lokal (+ Surat Pertimbangan Kemenlu untuk yayasan asing); identitas organ diketik sebagai data formulir, bukan diunggah; pendirian nirlaba tanpa tahap verifikator |
| Advokat asing | Diajukan oleh kantor advokat; ijazah dilegalisir KBRI; rekomendasi organisasi advokat Indonesia; kuota per kantor; tahap wawancara |
2b. gen6_* — product knowledge ahu-ocr (8 artikel / 38 chunk)
| Artikel | Isi pokok |
|---|---|
| Apa itu Sistem OCR/AI AHU | Membaca dokumen → mengisi formulir otomatis. "Yang tadinya mengetik, sekarang tinggal memeriksa." Sepenuhnya on-premise |
| Langkah penggunaannya | Unggah → Ekstraksi → Tinjauan → Selesai, plus varian: tahap Menunggu Verifikasi, alur form-first Perubahan PP, Pembubaran PP, Perbaikan Data PT |
| Halaman Tinjauan | Ringkasan AI, Hasil Validasi (yang lulus disembunyikan), panel isian, bounding box; arti warna hijau/kuning/merah dan override wajib beralasan |
| Cakupan | 5 keluarga alur (PT, PP, Yayasan, Perkumpulan, Apostille), 20 jenis dokumen PT / 53 lintas alur, 13 kategori apostille, 149 kode aturan validasi |
| Sisi verifikator | Antrean, filter cepat, Rekomendasi AI: Aman / Perlu Perhatian / Waspada, keputusan Setujui/Tolak/Minta Revisi dengan catatan wajib |
| Pencocokan tanda tangan | Dokumen vs spesimen registri, peta kemiripan; skor advisori, dibatasi pada tingkat PERINGATAN, tidak pernah bisa menolak sendiri |
| Batasan sistem | Tidak menerbitkan SK · AI mengusulkan manusia memutuskan · sumber kebenaran tetap sistem asal · tidak ada klaim akurasi · skor keyakinan bukan ukuran kebenaran |
| Beda chatbot vs sistem OCR | Batas tegas antara keduanya |
3. Product knowledge ahu-ocr — apa yang sengaja TIDAK dimasukkan
Deck demo produk (ahu-ocr-tidyup/docs/2026-08-22-materi-slide-demo-28-agustus.md)
punya daftar "JANGAN dikutip" sendiri. Saya mengikutinya, dan untuk beberapa hal
saya bahkan lebih ketat — karena jawaban chatbot tidak bisa dijamin membawa
caveat-nya ikut serta.
| Tidak dimasukkan | Alasan |
|---|---|
| Correction rate 2,34% | Ini batas bawah tingkat kesalahan, bukan akurasi — berkas ukurannya sendiri menyatakan "This is not accuracy." Dalam satu kali penceritaan ulang, angka ini berubah jadi "97,7% akurat". Sebuah artikel bisa menuliskan caveatnya; sebuah jawaban chatbot yang diringkas belum tentu. Jadi angkanya tidak ada sama sekali di korpus |
| Confidence gating / "keyakinan tinggi = lebih akurat" | Kalibrasinya tidak monoton (pita <0,50 justru 1,5% koreksi, pita ≥0,95 2,4%) |
| Latensi ujung-ke-ujung | Belum pernah diukur |
| Perbandingan kecepatan vs SABH | Sisi SABH tidak pernah diukur |
| URL/port staging internal, kolom Secret, peran login | Ini permukaan publik — alamat internal tidak boleh bocor ke sana |
Flag demo/debug (SK_MOCK_DEMO, ALLOW_DEBUG_BYPASS, votingDemoMode) |
Detail operasional, bukan pengetahuan produk |
| Nama data contoh & ID submission | Sebagian menyangkut pindaian dokumen orang sungguhan |
Sebagai gantinya, artikel gen6_ocr_batasan menyatakan batasan itu secara
positif — sehingga ketika ditanya "berapa akurasinya?", model menjawab bahwa
sistem ini tidak menyatakan angka akurasi, bukan mengarang satu.
Batas terhadap scope chatbot tetap dijaga
Setiap artikel gen6_* diakhiri kalimat tetap: "chatbot Tanya AHU ini TIDAK
memproses, membaca, atau menerima unggahan dokumen." Jadi menambah product
knowledge tidak membuat chatbot terkesan bisa menerima dokumen — justru
sebaliknya, sekarang ia bisa menjelaskan perbedaannya dengan tegas. Diuji
langsung, lihat §5.
4. Temuan orchestrator ketiga (diperbaiki, tanpa deploy)
Batch 1 menemukan dua cacat (passage 600 karakter, input guard). Batch 2
menemukan satu lagi:
Planner mengembalikan rencana KOSONG untuk pertanyaan meta.
"Apakah chatbot ini bisa membaca dokumen saya?" → "Maaf, saya tidak dapat
memproses pertanyaan ini." dalam 0,5 detik. Penyebabnya plan.ts:136-141:
bila daftar tool call kosong, permohonan ditolak dengan kode PLAN_UNPARSEABLE.
Planner menganggap pertanyaan tentang dirinya sendiri tidak butuh tool.
Ini pertanyaan yang sangat mungkin muncul di demo — dan jawabannya justru
ada di korpus (gen6_ocr_vs_chatbot).
Perbaikan: aturan L2 diperluas agar pertanyaan META tentang layanan ini
sendiri juga dirutekan ke tool rag, dengan penutup "Jangan pernah
mengembalikan rencana kosong: bila ragu, panggil tool rag."
Sekalian diperbaiki: blok aturan L2 sekarang dibatasi penanda
(<!-- demo28:begin -->), sehingga menjalankan ulang skrip policy
mengganti aturannya, bukan menempelkan salinan basi kedua. Diverifikasi:
hanya ada 1 blok, 922 karakter.
Policy sekarang di v5 (v0 → v5). Rollback satu perintah, ada di header
policy_allow_topics_demo28.js.
Keamanan — tidak ada regresi
Guard L4 tetap tidak disentuh. Kelima probe diuji ulang setelah setiap
perubahan policy dan semuanya tetap ditolak dalam 0,1 detik:
direktur PT tertentu · daftar notaris beserta alamat · kekayaan PT tertentu ·
NIK telanjang · pemegang saham PT tertentu.
5. Hasil uji langsung (staging)
5a. Empat belas pertanyaan baru
| # | Pertanyaan | Hasil | Waktu |
|---|---|---|---|
| 1 | Apa bedanya pendaftaran dan pencatatan CV? | ✅ lengkap, bahkan menarik detail Pengadilan Negeri dari korpus crawl | 6,2s |
| 2 | Apakah nama CV boleh diawali kata CV? | ✅ tidak boleh, beserta pesan sistemnya | 3,5s |
| 3 | Apa saja dasar pembubaran CV? | ✅ keenam dasar | 5,6s |
| 4 | Kapan notaris harus melaporkan daftar akta wasiat? | ✅ UUJN 16(1)j, jendela 1–5, teguran, freeze, unfreeze 5–12 | 4,5s |
| 5 | Bagaimana cara mengurus SKW untuk ahli waris? | ✅ termasuk jebakan email Yahoo/Hotmail | 9,5s |
| 6 | Data apa saja yang harus dilaporkan untuk pemilik manfaat? | ✅ lengkap | 7,4s |
| 7 | Bagaimana alur permohonan pemblokiran badan hukum? | ✅ rantai 4 tahap + dokumen | 8,0s |
| 8 | Apa bedanya pembubaran PT dan berakhirnya status badan hukum? | ✅ "membuka vs menutup likuidasi" | 7,8s |
| 9 | Apa bedanya penggabungan, peleburan, dan pengambilalihan PT? | ✅ ketiganya, dengan nasib badan hukum masing-masing | 7,2s |
| 10 | Berapa banyak dokumen yang harus diunggah saat mendirikan Yayasan? | ✅ akta saja (+ Kemenlu untuk asing) | 3,7s |
| 11 | Bagaimana cara kantor advokat mempekerjakan advokat asing? | ✅ termasuk kuota & wawancara | 6,6s |
| 12 | Apa itu sistem OCR AHU dan apa fungsinya? | ✅ + menyebut sendiri bedanya dengan chatbot | 6,7s |
| 13 | Apakah sistem OCR AHU menerbitkan SK? | ✅ tidak — contoh SK berlabel CONTOH | 3,7s |
| 14 | Bagaimana cara membaca warna pada halaman tinjauan? | ✅ hijau/kuning/merah + override beralasan | 6,6s |
5b. Tiga pertanyaan meta (semula gagal, kini lolos)
| Pertanyaan | Sebelum | Sesudah | Waktu |
|---|---|---|---|
| Apakah chatbot ini bisa membaca dokumen saya? | ditolak PLAN_UNPARSEABLE 0,5s |
✅ "Tidak" + mengarahkan ke sistem OCR | 4,1s |
| Apa bedanya chatbot ini dengan sistem OCR AHU? | — | ✅ perbandingan tiga sumbu | 9,6s |
| Apakah AI-nya yang memutuskan permohonan disetujui? | — | ✅ tidak, advisori, keputusan pada verifikator | 4,2s |
5c. Regresi enam pertanyaan demo — aman
| Pertanyaan | Waktu | Panjang jawaban |
|---|---|---|
| Cara mendirikan PT Perorangan | 7,7s | 1.698 char |
| Apostille vs legalisasi | 6,0s | 1.439 char |
| Syarat nama PT | 6,9s | 1.315 char |
| Masa berlaku pesan nama | 4,2s | 738 char |
| Syarat pengesahan Yayasan | 6,7s | 1.435 char |
| Cara mengubah anggaran dasar PT | 9,1s | 1.884 char |
6. Provenance batch 2
Domain AHU (read-only, ~/remote-development/ahu-codebase)
| Fakta | Sumber |
|---|---|
| 5 jenis transaksi CV | ahu-cv-firma/protected/modules/cv/models/Cv.php:10-16 |
| Pencatatan wajib Bukti Pengesahan | Cv.php:1663-1675 (validateAkta) |
| Nama tidak boleh berawalan CV | Cv.php:1651-1662 (validate_nama) |
| 6 dasar pembubaran + dokumen | Cv.php:75-100 ($list_dasar_pembubaran) |
| Modul cv/firma/pd; tipe badan usaha | ahu-cv-firma/protected/models/BadanUsahaBlokir.php:26-28; protected/modules/ |
| UUJN Ps.16(1)j teks lengkap | ahu-wasiat/views/transaksi/create.php:15 |
| Batas tanggal 5, teguran email | ahu-wasiat/controllers/TransaksiController.php:16,274-290 |
| Form unfreeze hanya tanggal 5–12 | ahu-wasiat/views/transaksi/_formFreezeNotaris.php:11 |
| Voucher "Pelaporan Bulanan Daftar Akta berkenaan dengan Wasiat" | ahu-wasiat/models/Wasiat.php:298-299; models/PNBPWasiat.php:8 |
| Isian SKW | ahu-wasiat/models/FormPemohonWasiat.php:184-228 |
| Unggahan maks 5 MB, PDF-only sebagian | FormPemohonWasiat.php:240-249 |
| Email Yahoo/Hotmail/Live/Outlook ditolak | FormPemohonWasiat.php:273 |
| Data pemilik manfaat | ahu-cv-firma/protected/models/QuestionPemilikManfaat.php:27-50 |
| Kriteria BO per bentuk korporasi (DB-driven) | beneficial-owner/models/master/KriteriaBO.php, RuleKriteria.php:40-55 |
| Jenis blokir & kategori | ahu-pemblokiran/.../internal/enum/jenis_blokir_sabh.go, kategori_permohonan.go |
| 12 dokumen pemblokiran PT | internal/enum/dokumen_pemblokiran_pt.go:11-23 |
| Rantai Konseptor→Verifikator→Direktur BU→Jenderal | internal/enum/status_permohonan_blokir_pt.go:42-58 |
| Pembubaran = id_aksi 12; Berakhirnya = id_aksi 36 (kode 70) | SABH models/VerifikasiPerseroan.php:175-176; models/TransaksiPerseroan.php:56,2232-2307; models/FormDataPerseroanPembubaran.php:356 |
| Merger = id_aksi 11 | SABH models/TransaksiPerseroan.php:2861 |
| Ijazah legalisir KBRI, rekomendasi organisasi advokat, kuota, wawancara | ahu-advokat/modules/permohonan_baru/views/permohonan-baru/create.php:75,398,465-512; modules/permohonan/models/Wawancara.php:52 |
Produk ahu-ocr (read-only, ~/remote-development/poc-ahu-ai/ahu-ocr-tidyup)
| Fakta | Sumber |
|---|---|
| Label langkah & sub-label tiap alur | frontend/src/lib/flow-steps.ts:13-60 |
| Daftar jenis transaksi yang didukung | backend/prisma/schema.prisma:119-235 |
| Pembubaran vs Berakhirnya, Penggabungan vs Peleburan, Akuisisi — beserta rujukan UUPT dan id_aksi SABH | komentar doc pada schema.prisma:137-200 |
| Pendirian Yayasan/Perkumpulan akta-only + Kemenlu untuk asing, tanpa verifikator | schema.prisma:184-200 |
| Peralihan PP ke PT (menumpang pipeline pendirian PT) | schema.prisma:126-128 |
| Apostille satu tipe untuk dua layanan, read-only integration | schema.prisma:129-134 |
| Warna validasi, ringkasan AI, bounding box, "Centang semua", cakupan angka, label verifikator, modal tanda tangan, caveat wajib | docs/2026-08-22-materi-slide-demo-28-agustus.md §2, §5–§8, §11 |
| Stack on-premise, tanpa panggilan API awan | CLAUDE.md ("Full on-premise: no cloud API calls") |
7. Yang masih sengaja dilewati
| Dilewati | Alasan |
|---|---|
| Ambang rupiah non-tarif (modal wajib-audit, kekayaan minimum yayasan asing) | Sesuai keputusan Anda: dibiarkan tanpa angka. Builder batch 2 punya assertion yang gagal kalau ada nominal rupiah lolos |
| Ambang persentase kriteria pemilik manfaat | Kriterianya disimpan di tabel database (kriteria_bo), bukan di kode, dan berbeda per bentuk korporasi. Artikel menjelaskan mekanismenya tanpa mengarang angka ambang |
| Koperasi, Partai Politik, Kurator, PPNS, e-PASTI | Ada codebase-nya, tapi tidak masuk prioritas yang Anda sebutkan dan tidak semuanya relevan untuk audiens demo. Siap dikerjakan kalau diminta |
| Angka correction rate produk OCR | Lihat §3 — risiko salah baca lebih besar daripada manfaatnya |
Menaikkan 600 di compose.ts |
Tetap perbaikan kode yang butuh deploy; ditangani dari sisi korpus. Rekomendasi pasca-28 Agustus tidak berubah |
8. Keadaan akhir
- Tidak ada deploy, tidak ada file aplikasi diubah. Yang berubah: Milvus, knowledge API agent, dan
policy.sqlite. - Reload schema dijalankan di kedua agent. Internal 51.250 / 69.934 karakter; public 51.250 / 65.187.
- Backup batch 1 (800 chunk) tetap di
~/backups/ahu-ai-chatbot/2026-08-22/. - Mode demo masih ON di staging — tidak saya ubah.
- Commit
bd7f32b(batch 2), menyusul782992f(batch 1).
9. Berkas baru batch 2
| Berkas | Isi |
|---|---|
docs/knowledge-sources/build_demo28_batch2.py |
builder 19 artikel (gen5_ + gen6_), dengan assertion anti-rupiah |
docs/knowledge-sources/gen_demo28_batch2.json |
43 chunk domain AHU |
docs/knowledge-sources/gen_demo28_ocr.json |
38 chunk product knowledge ahu-ocr |