Investigasi Mismatch "Ringkasan AI" — Alur Pendirian PT
Tanggal: 21 Agustus 2026 · Prioritas: P1 · Due: Rabu 27 Agustus 2026
Tracking: https://app.clickup.com/t/z92046m13x
Konteks: sync Ditjen AHU 21 Ags (MoM-AHU-2026-007) — demo 28 Ags, AHU retest mulai Senin 24 Ags.
Ringkasan eksekutif
Dari 3 submission PENDIRIAN_PT terakhir di staging (yang dipakai AHU saat tes:
20 Ags 10:55, 21 Ags 13:11, 21 Ags 16:01), temuan "Ringkasan AI" yang salah
didominasi oleh SATU bug, bukan oleh banyak bug terpisah:
Ringkasan AI selalu melaporkan "Data identitas belum lengkap — NIK dan NPWP
pengurus serta pemegang saham masih bertanda-", padahal semua NIK/NPWP
ada, sudah tercocokkan, dan panel di bawah kartu itu menampilkannya dengan
benar. Aturan validasiNIK_KTP_AKTA("4 dari 4 NIK cocok") dan
NPWP_COMPLETENESS("Semua NPWP lengkap") lulus di layar yang sama.
Muncul di 3 dari 3 submission yang diperiksa, dan secara struktur pasti
muncul di 100% submission Pendirian PT. Ini yang membuat kesannya "banyak
field tidak sesuai": satu bug, tersebar ke 8 baris roster sekaligus (3 direksi +
1 komisaris + 4 pemegang saham).
Bug kedua yang berdiri sendiri: tahun_buku selalu berisi tanggal karangan
— 26 dari 26 akta Pendirian PT di staging.
Sisanya bukan bug: data dukung yang dipakai tester memang tidak konsisten atau
tidak lengkap.
Cara membacanya
(OCR + LLM)"] --> B["AktaDireksi / AktaKomisaris
AktaPemegangSaham
nama + jabatan saja"] C["KTP + NPWP
(dokumen terpisah)"] --> D["KTPExtraction
NpwpExtraction"] D --> E["IdentityMatch
cocokkan nama"] B --> F["Panel review di bawah kartu
✅ NIK/NPWP tampil benar"] E --> F B --> G["Ringkasan AI
❌ NIK: - , NPWP: -"] E -. "TIDAK dibaca (bug)" .-> G style G fill:#fee2e2,stroke:#dc2626 style F fill:#dcfce7,stroke:#16a34a
Akta Pendirian memang tidak memuat NIK/NPWP pengurus — itu normal secara
hukum. Karena itu skema ekstraksi akta tidak punya field nik/npwp untuk
direksi/komisaris/pemegang saham sama sekali, dan sumber sebenarnya adalah
dokumen KTP/NPWP yang diunggah terpisah. Panel review sudah tahu ini; pembuat
teks Ringkasan AI belum.
Laporan per field
Legenda: (b) = bug ekstraksi/kode kita · (a) = data dukung tester
kurang/tidak konsisten · (c) = perilaku LLM peringkas.
| # | Field | Yang dikatakan Ringkasan AI | Kenyataan | Kategori | Status |
|---|---|---|---|---|---|
| 1 | NIK direksi & komisaris | "masih bertanda -", "wajib dilengkapi" |
Semua ada di KTP & sudah dicocokkan (NIK_KTP_AKTA PASS: "4 dari 4 NIK cocok") |
(b) | ✅ Diperbaiki |
| 2 | NPWP direksi & komisaris | "masih bertanda -" |
Semua ada di dokumen NPWP (NPWP_COMPLETENESS PASS) |
(b) | ✅ Diperbaiki |
| 3 | NPWP pemegang saham | "NPWP seluruh pemegang saham bertanda -" |
Ada untuk 3 pemegang saham perseorangan. Pemegang saham badan hukum (PT MGM) memang tidak punya KTP/NPWP perorangan | (b) | ✅ Diperbaiki |
| 4 | Tahun Buku | (tidak disorot LLM, tapi salah di data) | Akta: "berjalan dari tanggal 1 Januari sampai dengan tanggal 31 Desember". Tersimpan: 2026-01-01 (conf 0,90) |
(b) | ✅ Diperbaiki |
| 5 | Singkatan | dibaca sebagai data kosong bila tidak ada | Singkatan itu opsional di akta; 15 dari 26 akta memang tidak menyebutkannya | (b) ringan | ✅ Diperbaiki |
| 6 | Kedudukan vs Alamat | "Kedudukan Jakarta Utara, tapi alamat Kabupaten Tangerang" |
AI benar. Akta AD Pasal 1 benar-benar tertulis "berkedudukan di Jakarta Utara" (conf 1,00); surat domisili benar-benar Pagedangan, Kab. Tangerang (conf 0,975) | (a) | 🔧 Perbaiki datanya (lihat §Rekomendasi) |
| 7 | Telepon & Email Perseroan | "belum tercantum" (submission 21 Ags 13:11) | AI benar. Submission itu tidak mengunggah dokumen DATA_KONTAK sama sekali |
(a) | — |
| 8 | Nama Perseroan sudah dipakai | "wajib pilih nama baru" | AI benar. PENDIRIAN_NAMA_TERSEDIA FAIL — nama dipakai ulang di beberapa submission uji |
(a) | 🔧 Perbaiki datanya |
| 9 | Typo "ANUGERRRAH" | "mengandung tiga huruf R, cek ejaan" | AI benar. Akta dummy memang ditulis begitu | (a) | — (boleh dibiarkan) |
| 10 | "Ketidaksesuaian Alamat Administratif — BSD ada di Tangsel" | klaim LLM (submission 21 Ags 16:01) | AI salah. Lengkong Kulon, Kec. Pagedangan memang wilayah Kabupaten Tangerang. Alamatnya konsisten | (c) | ⚠️ Lihat §Risiko |
| 11 | "Tanggal akta telah melewati tanggal referensi, maka valid" | kalimatnya terbalik/rancu | Logikanya benar (13 Jul 2026 < 21 Ags 2026), hanya diksinya kacau | (c) | ⚠️ Kosmetik |
| 12 | KTP/NPWP ganda | — | Submission 21 Ags 13:11 mengunggah ktp1.png dan npwp1.png dua kali |
(a) | 🔧 Perbaiki datanya |
Bukti pengukuran
Diambil langsung dari database staging (ahu_ocr_staging, 21 Ags 2026):
| Yang diukur | Hasil |
|---|---|
Baris AktaDireksi di seluruh Pendirian PT |
78 baris — 0 punya NIK, 0 punya NPWP |
Baris AktaPemegangSaham di seluruh Pendirian PT |
104 baris — 0 punya NPWP |
Nilai tahun_buku di seluruh akta Pendirian PT |
26 dari 26 salah — 2020-01-01 (15×), 2026-01-01 (11×) |
singkatan_nama kosong |
15 dari 26 (rata-rata confidence 0,36) |
Submission yang punya IdentityMatch lengkap tapi Ringkasan AI bilang identitas kosong |
3 dari 3 yang diperiksa |
Kolom lain pada roster akta juga selalu kosong (tempatLahir, tanggalLahir,
kewarganegaraan, alamat: 0 dari 78) — konsisten dengan skema ekstraksi yang
memang tidak memintanya. Tidak berdampak pada Ringkasan AI karena tidak dicetak.
Akar masalah (kategori b)
B1 — Ringkasan AI membaca kolom yang tidak pernah diisi
backend/src/routes/submissions-summarize.ts mencetak roster langsung dari
kolom akta:
`- ${d.namaLengkap} (${d.jabatan}), NIK: ${d.nik ?? "-"}, NPWP: ${d.npwp ?? "-"}`
AktaDireksi.nik / AktaKomisaris.nik / AktaPemegangSaham.npwp tidak pernah
ditulis — backend/src/schema/akta-notaris.ts tidak punya field itu untuk blok
direksi/dewan_komisaris/pemegang_saham, karena akta memang tidak memuatnya.
Diperparah oleh prompt peringkas (gpu-server/prompts/summarize_pendirian.txt)
yang memerintahkan: "Hal-hal yang perlu diperhatikan: … Data yang kosong atau
tidak lengkap". Jadi tanda - bukan diabaikan — justru diangkat sebagai
temuan utama.
Sementara itu projector review (pt-pendirian-review.ts:344-377) sudah
menyelesaikan hal yang sama sejak lama, lewat IdentityMatch → dokumen KTP.
Komentarnya bahkan sudah menuliskan sebabnya. Ringkasan AI tidak ikut memakainya.
Perbaikan: pakai resolver yang sama persis, supaya kartu di atas dan panel di
bawah tidak mungkin berbeda lagi.
B2 — tahun_buku diisi tanggal karangan
Prompt ekstraksi hanya berbunyi "tahun_buku": "string | null - Fiscal year".
LLM menjawabnya dengan tanggal ISO. Tahunnya (2020, 2026) bahkan tidak ada di
klausul aslinya. Confidence 0,85–0,90, jadi tidak ada satu pun mekanisme hilir
yang menandainya.
Perbaikan: prompt dipertegas (minta PERIODE, larang tanggal/tahun), plus
pass deterministik yang menulis ulang jawaban tanggal memakai klausul akta
sendiri. Bila klausulnya tidak ketemu → dikosongkan (conf 0), bukan disimpan
sebagai tanggal palsu: field kosong bisa diisi notaris, field yang salah tapi
percaya diri tidak akan pernah dikoreksi siapa pun.
Yang sudah landed
| Berkas | Perubahan |
|---|---|
backend/src/services/submission-summary-builders.ts |
buildIdentityResolver() + identityTail() — cermin dari resolver projector review |
backend/src/routes/submissions-summarize.ts |
roster Direksi/Komisaris/Pemegang Saham memakai resolver; Singkatan hanya dicetak bila ada; ditambah catatan asal-usul NIK/NPWP untuk LLM |
backend/src/services/field-transformer.ts |
normalizeTahunBuku() + penerapannya di transformAktaResult |
backend/src/schema/akta-notaris.ts |
prompt tahun_buku dipertegas |
backend/src/services/__tests__/submission-summary-identity.test.ts |
9 test baru |
backend/src/services/__tests__/field-transformer.test.ts |
6 test baru untuk tahun_buku |
Tombol debug/bypass ekstraksi tidak disentuh.
Verifikasi
- Unit test: 1970 pass / 0 fail (
src/services/__tests__+src/review,
dijalankan di worktree bersih berisi HANYA perubahan ini). - Data sungguhan: teks masukan Ringkasan AI diputar ulang terhadap dua
submission staging yang dipakai AHU:
SEBELUM SESUDAH
- HERMAN ISKANDAR (Direktur Utama), NIK: -, - HERMAN ISKANDAR (Direktur Utama),
NPWP: - NIK: 3173021706800005,
NPWP: 24.328.933.7-036.000
- PT MGM INTEGRA TEKNOLOGI: 2750 saham - PT MGM INTEGRA TEKNOLOGI: 2750 saham
(55%), Jenis: Badan Hukum, NPWP: - (55%), Jenis: Badan Hukum
Pemegang saham badan hukum kini tidak lagi memunculkan NPWP: - — bukan
disembunyikan, melainkan memang tidak punya NPWP perorangan, dan LLM diberi
catatan eksplisit tentang itu.
Risiko yang tersisa (butuh keputusan)
R1 — LLM masih bisa berhalusinasi soal geografi
Temuan nomor 10: LLM mengarang bahwa "Delrey Biztown BSD" berada di Tangerang
Selatan, lalu menuduh kolom Kota/Kab salah. Padahal alamatnya konsisten. Data
masukan sudah benar; yang salah pengetahuan geografi model.
Pilihan:
- (i) Biarkan. Ringkasan AI berlabel "saran", petugas tetap memutuskan.
- (ii) Tambah satu baris di prompt: larang menilai kesesuaian wilayah
administratif dari nama kompleks/gedung.
- (iii) Pindahkan pengecekan wilayah ke aturan validasi deterministik
(kelurahan/kecamatan → kabupaten sudah ada ID-nya di DomisiliExtraction).
Rekomendasi: (ii) sebelum 24 Ags (murah), (iii) setelah demo.
Catatan: (ii) mengubah gpu-server/prompts/, dan build image gpu-server saat ini
masih bermasalah di host ai-ahu — perlu dipastikan dulu bisa di-deploy.
R2 — Tidak ada aturan yang membandingkan kedudukan akta vs kota domisili
Temuan nomor 6 nyata dan penting, tapi hanya AI yang menangkapnya.
DOMISILI_NAMA hanya membandingkan nama entitas, bukan kotanya. Kalau AI
sedang tidak menyorotnya, ketidakcocokan ini lolos diam-diam.
Usul: aturan baru DOMISILI_KEDUDUKAN (WARNING, bukan FAIL). Butuh
persetujuan — aturan baru berarti banner baru di layar demo.
R3 — Satu prompt peringkas untuk semua jenis transaksi
/summarize selalu memakai summarize_pendirian.txt, termasuk untuk Perubahan,
Pembubaran, Berakhirnya, dan Laporan RUPS. Sistem prompt-nya berbicara sebagai
reviewer pendirian PT. Di luar cakupan tugas ini, tapi sebaiknya dicatat sebelum
alur-alur itu ikut didemokan.
R4 — tahun_buku yang sudah terlanjur salah tidak ikut terbaiki
Perbaikan B2 berlaku untuk ekstraksi baru. 26 baris yang sudah tersimpan di
staging tetap berisi tanggal karangan sampai dokumennya diekstrak ulang.
Pilihan: biarkan (submission lama tidak dipakai demo), atau jalankan
backfill kecil. Butuh keputusan.
Rekomendasi untuk data uji AHU (masuk ke Task 2)
Berdasarkan temuan kategori (a), set data uji Pendirian PT yang benar harus:
- Kedudukan di akta = kota di surat domisili. Set sekarang bertabrakan
(Jakarta Utara vs Kab. Tangerang) sehingga selalu memicu temuan AI. - Sertakan dokumen
DATA_KONTAK. Opsional secara sistem, tapi tanpa itu
telepon/email perseroan kosong dan (sebelum perbaikan yang sedang dikerjakan
paralel) tidak bisa dikonfirmasi tanpa bypass debug. - Nama perseroan unik per set. Nama yang dipakai ulang memicu
PENDIRIAN_NAMA_TERSEDIAFAIL yang harus di-override manual. - Satu KTP dan satu NPWP per orang — jangan ada berkas ganda.
- Klausul tahun buku ditulis lengkap di akta ("dari tanggal 1 Januari
sampai dengan tanggal 31 Desember") supaya normalisasi punya sandaran.