AI Class

Automasi Pembersihan & Normalisasi Nama Pelanggan Indonesia dengan n8n + AI: Panduan Lengkap

· 4 menit baca

Automasi Pembersihan & Normalisasi Nama Pelanggan Indonesia dengan n8n + AI

Ringkasan: Panduan praktis untuk membangun workflow di n8n yang membersihkan, menormalisasi, dan menggabungkan nama pelanggan Indonesia menggunakan AI, fuzzy matching, dan human-in-the-loop.

Kenapa Normalisasi Nama itu Penting?

Data nama pelanggan sering kali tidak konsisten: ada gelar (Bpk./Ibu), singkatan (Hj., S.T.), variasi penulisan (Muhamad vs Muhammad), inisial, atau entri ganda. Ketidakrataan ini menyebabkan masalah seperti:

  • Duplikasi data dan multiple akun untuk satu pelanggan
  • Kesulitan personalisasi komunikasi
  • Kesalahan saat penggabungan data atau laporan

Dengan n8n + AI, proses pembersihan dan normalisasi bisa diotomasi: parsing nama, standardisasi format, pencocokan fuzzy, dan human verification untuk kasus ambigu.

Arsitektur High-Level

  1. Trigger: upload CSV / webhook / koneksi DB
  2. Preprocessing: remove whitespace, lowercase, transliteration
  3. AI Parse: gunakan LLM atau NER untuk memecah nama menjadi prefix, given_name, middle_name, family_name, suffix
  4. Rule-based Normalization: standar kapitalisasi, remove honorifics, expand abbreviations
  5. Duplicate Detection: fuzzy matching (Levenshtein, Cosine on embeddings) + phonetic comparison
  6. Human-in-the-loop: verifikasi untuk confidence rendah
  7. Upsert ke DB: simpan canonical_name, aliases, confidence, audit trail
  8. Monitoring & Metrics

Langkah Implementasi di n8n

1. Trigger & Preprocessing

Gunakan node HTTP Request / Cron / Google Drive / FTP untuk mendapatkan file. Jalankan node Function untuk trimming, removing duplicate whitespace, dan transliteration (contoh: replace 'é' → 'e').

// contoh pseudo-JS untuk node Function di n8n
const normalizeWhitespace = (s) => s.replace(/\s+/g, ' ').trim();
items[0].json.cleaned = normalizeWhitespace(items[0].json.name || '');
return items;

2. AI Parsing: Memecah Komponen Nama

Gunakan API LLM (OpenAI, Anthropic, atau model lokal) untuk mem-parsing nama menjadi komponen. AI berguna menangani variasi Indonesia (gelar agama, gelar akademik, nama ganda Madura/Jawa).

Contoh prompt:

Parse this Indonesian full name into JSON with fields: prefix, given_name, middle_name, family_name, suffix. Return only JSON.
Name: "Hj. Siti Nurhayati, S.T., M.Eng"

Contoh output yang diharapkan:

{
  "prefix": "Hj.",
  "given_name": "Siti",
  "middle_name": "Nurhayati",
  "family_name": null,
  "suffix": "S.T., M.Eng"
}

Tambahkan instruksi untuk menghapus gelar dari nama canonical, tapi simpan gelar ke field terpisah.

3. Rule-Based Normalization

Setelah parsing, terapkan aturan:

  • Kapitalisasi: Title Case untuk setiap token kecuali prepositions (jika ada)
  • Ekspansi singkatan umum: "Hj." → "Hajah" (opsional, tergantung kebijakan)
  • Standardisasi varian: "Muhamad" → "Muhammad" (gunakan kamus alias)
// contoh kamus alias sederhana
const alias = {"muhamad":"muhammad","mohamad":"muhammad","siti":"siti"};

4. Duplicate Detection & Matching

Gabungkan beberapa teknik:

  • Fuzzy string matching (Levenshtein / Jaro-Winkler)
  • Embeddings + cosine similarity: representasikan canonical_name sebagai embedding dan cari nearest neighbors di vector DB (Milvus, Pinecone, Weaviate)
  • Phonetic matching: gunakan algorithm seperti Metaphone/Double Metaphone yang lebih cocok untuk ejaan internasional; untuk Bahasa Indonesia, adaptasi sederhana soundex dapat membantu

Set threshold confidence, misal:

  • > 0.9 → otomatis merge
  • 0.7 - 0.9 → flag untuk review manusia
  • < 0.7 → treat as distinct

5. Human-in-the-loop (HITL)

Buat workflow review: kirim kasus ambigu ke Slack / Airtable / Google Sheets untuk diverifikasi. Setelah diverifikasi, catat keputusan (merge, keep separate) dan gunakan hasil tersebut untuk retraining rules/alias list.

6. Upsert & Audit Trail

Saat menyimpan ke database, simpan struktur data seperti:

  • canonical_name
  • parsed_fields
  • aliases (array)
  • confidence_score
  • source_id (file, row)
  • history (timestamped events untuk audit)

Contoh Prompt Lengkap untuk LLM

Gunakan prompt yang eksplisit dan minta output JSON. Berikut contoh prompt untuk bahasa Indonesia:

Anda adalah parser nama Bahasa Indonesia.
Input: "Drs. H. Agus Saputra, M.M."
Tugas: Kembalikan JSON {prefix, given_name, middle_name, family_name, suffix, canonical_name}
Rules:
- Hapus gelar dari canonical_name, tapi simpan di prefix/suffix.
- Jika tidak ada family_name yang jelas, gunakan null.
- Canonical name harus Title Case dan menggabungkan given_name + middle_name + family_name (jika ada).

Output only JSON.

Strategi Evaluasi & Metric

Ukur keberhasilan sistem dengan metrik:

  • Precision/Recall pada deteksi duplicate
  • Accuracy parsing fields (manual sample gold set)
  • Reduction in duplicate accounts (%)
  • Human review rate dan MTTR (mean time to resolve ambiguous cases)

Best Practices & Pertimbangan Khusus Indonesia

  • Gelar & Honorific: Banyak gelar agama/akademik, jangan hilangkan tanpa menyimpannya.
  • Suku & Nama Tunggal: Beberapa orang hanya memiliki satu nama — jangan paksa family_name null jadi sesuatu yang salah.
  • Partikel: Nama Jawa seperti "Ng" atau "Sri" dan nama patronimik di daerah lain butuh perlakuan khusus.
  • Privacy & PII: Terapkan enkripsi di transit & rest, dan pastikan retention policy sesuai peraturan (UU PDP jika relevan).
  • Audit & Reversibility: Simpan raw input dan perubahan agar bisa rollback jika merge salah.

Contoh Workflow n8n (Ringkas)

  1. Trigger: Google Drive node (new CSV)
  2. CSV File > SplitInBatches
  3. Function: basic cleanup
  4. HTTP Request: call LLM parsing API
  5. Function: apply alias dictionary + title case
  6. HTTP Request: check vector DB for duplicates
  7. IF node: confidence > 0.9 ? Upsert : Send to Airtable for review

Scaling, Performance & Biaya

Untuk dataset besar, gunakan batching, caching embeddings, dan model lokal untuk parsing offline. Simpan embeddings hot/cold tier dan gunakan approximate nearest neighbor (ANN) untuk efisiensi. Logic fallback: jika LLM rate-limit, gunakan rule-based parser sederhana sebagai cadangan.

Penutup

Normalisasi nama pelanggan Indonesia adalah kombinasi seni dan ilmu: memerlukan aturan linguistik lokal, teknik fuzzy matching, dan kecerdasan AI untuk menangani kasus edge. Dengan n8n, Anda dapat mengorkestrasi seluruh pipeline—dari ingestion hingga human verification—dengan cepat dan terukur.

Mulai sekarang: buat prototype dengan dataset kecil (1k-5k baris), ukur metric duplicate reduction, lalu skala sambil mempertahankan audit trail dan privasi data.

Butuh contoh workflow n8n atau template prompt untuk team Anda? Hubungi JIPRAKS Classroom untuk materi step-by-step dan template yang bisa langsung di-import ke instance n8n Anda.

Artikel terkait