think
16px
820px

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 validasi NIK_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

flowchart LR A["Akta Pendirian
(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 salah2020-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

  1. Unit test: 1970 pass / 0 fail (src/services/__tests__ + src/review,
    dijalankan di worktree bersih berisi HANYA perubahan ini).
  2. 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:

  1. Kedudukan di akta = kota di surat domisili. Set sekarang bertabrakan
    (Jakarta Utara vs Kab. Tangerang) sehingga selalu memicu temuan AI.
  2. 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.
  3. Nama perseroan unik per set. Nama yang dipakai ulang memicu
    PENDIRIAN_NAMA_TERSEDIA FAIL yang harus di-override manual.
  4. Satu KTP dan satu NPWP per orang — jangan ada berkas ganda.
  5. Klausul tahun buku ditulis lengkap di akta ("dari tanggal 1 Januari
    sampai dengan tanggal 31 Desember") supaya normalisasi punya sandaran.