Saya Membangun Agen AI yang Berhenti dan Bertanya Sebelum Menyentuh Data Pribadi

11 Sep 2026, 06.06

Thumbnail Saya Membangun Agen AI yang Berhenti dan Bertanya Sebelum Menyentuh Data Pribadi

Ada satu kebiasaan yang saya lihat hampir setiap hari di tempat fotokopi saya di Desa Pendem, Batu. Orang datang membawa flashdisk. Kadang flashdisknya hilang. Kadang filenya kena virus. Kadang yang datang cuma bilang, "Mas, file saya yang kemarin masih ada?" — dan saya harus mengaduk-aduk folder yang isinya IMG_9282.jpg, scan001.pdf, WhatsApp Image 2026-09-08.jpg.

Nama-nama file itu tidak memberi tahu apa pun. Untuk tahu isinya, saya harus membuka satu per satu.

Dari situlah SIMPA lahir.

Masalah yang lebih besar dari sekadar berkas berantakan

Kartu identitas di atas meja dengan perisai pelindung dan timbangan hukum
Berkas titipan pelanggan bukan file biasa — di dalamnya ada data pribadi yang dilindungi UU 27/2022

Ketika saya mulai membangun, saya sadar ada masalah kedua yang lebih serius. Berkas yang dititipkan pelanggan itu bukan file biasa. Di dalamnya ada KTP, Kartu Keluarga, NPWP. Ada NIK. Ada alamat rumah.

Indonesia sudah punya UU Nomor 27 Tahun 2022 tentang Pelindungan Data Pribadi. Undang-undang itu tidak peduli apakah kita usaha kecil di kampung atau perusahaan besar. Kalau kita menyimpan data pribadi orang lain tanpa dasar yang sah, kita bertanggung jawab.

Jadi pertanyaannya berubah. Bukan lagi "bagaimana merapikan berkas", tapi "bagaimana merapikan berkas tanpa diam-diam menjadi penadah data pribadi orang".

Kebanyakan AI dirancang untuk mengerjakan lebih banyak

Ini yang menurut saya keliru dari cara kita membangun agen AI sekarang.

Hampir semua demo yang saya lihat memamerkan hal yang sama: AI yang bisa mengerjakan lebih banyak, lebih cepat, lebih otomatis. Unggah folder, AI merapikan semuanya, selesai.

Tapi coba pikirkan sebentar. Kalau di dalam folder itu ada KTP orang lain, dan AI langsung menyimpannya ke arsip tanpa bertanya — apakah itu kecanggihan, atau kelalaian?

SIMPA saya rancang dengan prinsip sebaliknya: agen yang tahu kapan harus berhenti.

Bagaimana cara kerjanya

Agen AI mengangkat telapak tangan, berhenti di antara tumpukan dokumen dan rak arsip
Agen berhenti dan bertanya — ia tidak boleh menekan tombol izin sendiri

Ketika berkas diunggah, agen membacanya dan mengelompokkan isinya. Sampai di sini biasa saja.

Yang berbeda terjadi saat agen menemukan sesuatu yang mengandung NIK, nomor KK, atau NPWP. Alih-alih menyimpan, agen berhenti dan menampilkan pesan:

"Saya menemukan 3 dokumen yang memuat NIK dan data pribadi. Menurut UU 27/2022 ini termasuk data pribadi. Simpan di Brankas Privat?"

Ada dua tombol: "Saya izinkan" dan "Jangan simpan".

Dan ini bagian yang saya anggap paling penting: agen tidak boleh menekan tombol itu sendiri. Bahkan saya sebagai pembuatnya tidak boleh menekannya atas nama pengguna. Kalau AI bisa menyetujui permintaannya sendiri, seluruh mekanisme izin itu cuma teater.

Bukti bahwa ini bukan sekadar klaim

Basis data dengan baris yang disamarkan, kaca pembesar tidak menemukan apa pun
NIK di basis data tersimpan tersamar — CV tidak bisa disusun dari sana, dan itu buktinya

Setiap orang bisa mengklaim aplikasinya "aman" dan "menghormati privasi". Yang membedakan adalah apakah klaim itu bisa dibuktikan.

SIMPA punya fitur menyusun CV dari dokumen pengguna. Waktu membangunnya, saya menemukan kendala: NIK yang tersimpan di basis data sudah disamarkan menjadi 3573**0012. Artinya CV tidak bisa disusun dari basis data — dokumen aslinya harus dibaca ulang di memori, saat itu juga.

Awalnya saya anggap ini keterbatasan. Lalu saya sadar ini justru buktinya.

Kalau CV bisa dibuat hanya dari basis data, berarti data pribadi itu memang tersimpan di sana. Karena tidak bisa, artinya memang tidak tersimpan.

Itu bukan janji. Itu bisa diperiksa siapa saja dengan membuka basis datanya.

Peran VPS dalam arsitektur ini

Server dengan dokumen dipindai di dalamnya, awan di luar batas ditandai silang
OCR berjalan lokal di VPS — gambar KTP tidak pernah keluar ke pihak ketiga

Di sinilah keputusan teknis bertemu dengan keputusan etis.

OCR — proses membaca teks dari gambar — bisa saja saya kirim ke layanan awan pihak ketiga. Lebih gampang, tidak perlu memikirkan server. Tapi artinya setiap KTP yang dititipkan pelanggan saya akan terbang ke server entah di negara mana.

Saya memilih menjalankannya sendiri di VPS. Tesseract OCR berjalan lokal di dalam mesin itu, memproses gambar, lalu mengembalikan teksnya — tanpa satu pun berkas meninggalkan server. Prinsip yang sama saya pakai di seluruh layanan SantriOnline, dan saya tuliskan terbuka di kebijakan privasi.

Tetapi saya harus jujur soal satu hal, karena inilah keputusan tersulit dalam proyek ini.

Tesseract gratis dan tidak pernah mengirim apa pun ke luar — tapi ia kesulitan pada foto dari kamera ponsel. Saat menguji, saya menemukan kegagalan yang membuat saya berhenti sejenak: pada foto KTP yang sedikit miring dan buram, Tesseract membaca tanda titik dua sebagai angka satu. NIK 3579031604920003 terbaca menjadi 1357903160492000. Semua digit bergeser, dan validasi NIK menolaknya.

Akibatnya fatal: karena tidak ada NIK yang terdeteksi, agen menganggap dokumen itu bukan data pribadi — lalu menyimpannya tanpa bertanya. Persis kebalikan dari yang saya janjikan di awal tulisan ini.

Saya memperbaikinya dengan dua cara, dan keduanya layak diceritakan.

Pertama, perlindungan tidak boleh bergantung pada keberhasilan OCR. Sekarang, begitu agen mengenali sebuah dokumen sebagai identitas — dari kata seperti "PROVINSI", "Jenis Kelamin", atau "Golongan Darah" — ia langsung meminta izin, bahkan bila NIK-nya sama sekali tidak terbaca. OCR boleh gagal; perlindungan tidak boleh.

Kedua, saya menerima bahwa Tesseract punya batas — dan memilih tidak melampauinya dengan mengorbankan prinsip. Ada layanan OCR awan yang jauh lebih akurat; saya sempat mengujinya, dan hasilnya memang lebih rapi. Tetapi memakainya berarti mengirim KTP pelanggan ke server di luar negeri — persis hal yang saya tolak di awal tulisan ini. Maka mesin itu tidak saya pakai. Seluruh pembacaan dokumen tetap berjalan lokal di VPS.

Akibatnya nama berkas otomatis kadang kurang rapi pada foto yang buram. Saya menerima itu. Sebab yang dijaga produk ini bukan kerapian nama berkas, melainkan bahwa data pribadi tidak pernah keluar dari mesin yang pengguna kendalikan — dan itu tidak boleh ditukar dengan apa pun.

SIMPA saya jalankan di sebuah VPS sederhana: 4 core, 4 GB RAM, Ubuntu 24.04, dengan Node.js dan framework Hermes di dalamnya. Spesifikasi sebesar itu sudah lebih dari cukup — yang menentukan bukan mesinnya, melainkan keputusan bahwa data tidak boleh keluar darinya.

Pemasangannya sendiri sederhana. Tesseract dengan paket bahasa Indonesia, dua skrip pekerja untuk OCR dan thumbnail, lalu didaftarkan sebagai layanan systemd supaya hidup otomatis. Kuncinya disimpan terpisah di /etc/simpa.env dengan izin 600, tidak ikut tertulis di berkas layanan yang bisa dibaca siapa saja.

Server dan laptop sama-sama menjemput kartu tugas dari antrean di awan
VPS menjemput tugas, bukan menerima — boleh mati kapan saja tanpa merusak aplikasi

Satu detail arsitektur yang saya sengaja: VPS menjemput tugas, bukan menerima. VPS tidak membuka port apa pun untuk SIMPA, tidak butuh domain, dan boleh mati kapan saja tanpa membuat aplikasinya rusak. Kalau VPS mati, pekerja di komputer lain mengambil alih antrean yang sama.

Ini penting karena aplikasi yang mati bersama demonya bukan aplikasi yang benar-benar jalan.

Yang saya pelajari

Membangun ini mengajari saya sesuatu yang tidak saya duga.

Selama bertahun-tahun saya mengira menambah kemampuan adalah kemajuan. Ternyata untuk sistem yang menyentuh data orang lain, menahan diri juga kemampuan. Agen yang berhenti dan bertanya lebih sulit dibuat daripada agen yang mengerjakan semuanya — karena kita harus memutuskan di mana batasnya, dan menerima bahwa sistemnya jadi terasa lebih lambat.

Tapi kelambatan itu ada harganya, dan harganya adalah kepercayaan.

Pelanggan saya di kampung tidak tahu apa itu UU PDP. Mereka cuma ingin filenya tidak hilang dan tidak dipakai macam-macam. Kalau sistem saya bisa memberi itu, saya sudah cukup senang.

Penutup

Pemilik toko menyerahkan map rapi kepada pelanggan di konter
Yang dijaga pada akhirnya bukan berkas, tapi kepercayaan

SIMPA sekarang bisa diakses di simpandata.my.id. Ia bisa membuka dan menyunting Word dan Excel langsung di peramban, menampilkan berkas desain PSD dan AI, mencari isi dokumen, dan menyusun CV — semuanya sambil menjaga agar data pribadi tidak diam-diam mengendap di basis data.

Cara berpikir yang sama — menahan diri sebelum menyentuh yang bukan hak kita — juga menjadi dasar layanan lain yang saya kerjakan. Selengkapnya bisa dibaca di halaman tentang SantriOnline.

Tapi kalau harus memilih satu hal yang paling saya banggakan, itu bukan daftar fiturnya.

Melainkan bahwa ketika agen menemukan KTP, ia berhenti — dan bertanya.

Bacaan ini bagian dari ikhtiar SantriOnline dalam membina generasi muslim Indonesia: aqidah yang kukuh, adab yang hidup, ilmu yang terus tumbuh, dan keterampilan yang siap dipakai.