← Back to list

Beyond the Shortest Path: Why Field-Force Route Optimization in Lending Needs a Score, Not Just a…

Bagaimana menggabungkan propensity modeling, collection scoring, dan optimasi rute untuk membuat petugas lapangan “bekerja cerdas, bukan…

Tio Anta Wibawa · 2026-06-27 17:04 · 2 claps · 9.0 min read
#travelling-salesman #data-science #route-optimization #banking
Open on Medium ↗
Wiki topics: ML · Machine Learning FIN · Fintech & Banking ECO · Economy · General 🔬 · Science · General ✈️ · Travel

Beyond the Shortest Path: Why Field-Force Route Optimization in Lending Needs a Score, Not Just a Map

Bagaimana menggabungkan propensity modeling, collection scoring, dan optimasi rute untuk membuat petugas lapangan “bekerja cerdas, bukan sekadar bekerja keras.”

Ada satu kalimat dari seorang petugas lapangan yang, menurut saya, merangkum seluruh persoalan ini lebih baik daripada slide deck mana pun:

“Aktivitas yang saya terima belum diurutkan berdasarkan prioritas, dan rutenya juga belum diatur jadi kadang bolak-balik. Saya mengujungi delapan orang, jujur agak pusing menentukan debitur mana yang harus didahulukan berdasarkan jarak.”

Kalimat itu mengandung dua masalah optimasi yang sering kita perlakukan sebagai satu, padahal berbeda secara fundamental: masalah urutan prioritas (siapa yang paling bernilai dikunjungi) dan masalah rute (bagaimana mengunjungi mereka dengan jarak/waktu paling efisien). Tulisan ini tentang mengapa keduanya harus diselesaikan bersama-sama, dan apa yang terjadi ketika sebuah institusi keuangan mencoba melakukannya dengan data yang sudah mereka miliki.

Tulisan ini dilihatdari sudut pandang praktisi analitik dan bukan sebagai studi kasus satu institusi, melainkan sebagai pola yang berlaku umum di setiap bisnis yang mengandalkan tenaga lapangan: penagihan kredit, akuisisi nasabah, distribusi FMCG, layanan teknisi, hingga agen asuransi.

1. Masalah yang tersembunyi di balik angka produktivitas

Dimulai dari metrik yang biasanya terlihat sehat di laporan manajemen.

Di sebuah portofolio pinjaman mikro yang saya analisis, petugas lapangan merencanakan sekitar 15 aktivitas kunjungan per hari — campuran pemasaran dan penagihan. Secara agregat, ini terlihat seperti tenaga kerja yang produktif. Tapi ketika datanya dibedah:

  • Dari 15 yang direncanakan, rata-rata hanya 12 yang benar-benar terkunjungi.
  • Dari ~6 kunjungan pemasaran yang berhasil, hanya 1 yang berujung realisasi.
  • Dari ~6 kunjungan penagihan, realisasi pembayaran hanya 34% dari potensi tagihan.

Di level yang lebih makro, pipeline pemasaran yang diinjeksi ke sistem mencapai jutaan prospek dengan potensi plafon ratusan triliun — tapi success rate-nya hanya ~10,7%.

Pertanyaannya bukan “mengapa petugas tidak bekerja keras.” Mereka jelas bekerja keras. Pertanyaannya adalah: mengapa effort yang besar tidak terkonversi menjadi outcome?

Jawaban yang paling sering muncul dan paling mudah dibuktikan dengan data adalah bahwa urutan kerja tidak mencerminkan nilai pekerjaan. Kunjungan disusun berdasarkan urutan kemunculan prospek atau janji bayar, bukan berdasarkan siapa yang paling mungkin menghasilkan dan di mana mereka berada secara geografis.

2. Diagnosis rute: ketika “dekat di peta” tidak berarti “efisien di lapangan”

Sebelum bicara solusi, akan coba diukur dulu seberapa parah masalahnya. Untuk itu perlu merekonstruksi rute aktual setiap petugas, setiap hari, dari jejak GPS kunjungan — mengurutkan titik berdasarkan timestamp kunjungan, lalu menghitung jarak tempuh antar titik dengan formula haversine (jarak great-circle yang memperhitungkan kelengkungan bumi, bukan jarak garis lurus Euclidean yang keliru untuk koordinat lintang–bujur).

Hasilnya, dari puluhan ribu “kunjungan”:

Temuan Angka Rata-rata jarak rute per petugas per hari ~26 km Median 14 km Hari dengan rute > 20 km 37,8% Porsi satu perjalanan terpanjang terhadap total rute 31,7% Hari dengan ≥1 perjalanan yang menyita >50% rute (backtracking) 13,4%

Distribusinya sangat right-skewed: 25% hari terpanjang menyumbang 69,3% dari seluruh jarak tempuh. Artinya, perbaikan tidak perlu menyasar semua hari — cukup ekor distribusi yang panjang itu untuk mendapatkan dampak terbesar.

Diagnosisnya jelas: rute bersifat reaktif, bukan terencana. Petugas sering bolak-balik melewati area yang sama karena urutan kunjungan mengikuti urutan administratif, bukan kedekatan geografis.

Ketika dijalankan rute yang sama melalui optimizer sederhana, jarak tempuh untuk titik kunjungan yang persis sama turun rata-rata ~55%. Tidak ada kunjungan yang dihilangkan — hanya urutannya yang disusun ulang.

Contoh konkret dari satu petugas dalam satu hari: 12 titik kunjungan yang identik, rute aktual 10,2 km, rute optimal 4,5 km. Penghematan 56%, nol titik dikorbankan.

3. Engine optimasi: cukup sederhana untuk berjalan di perangkat lapangan

Penyusunan ulang rute ini adalah varian klasik Travelling Salesman Problem (TSP): untuk sekumpulan titik kunjungan, cari urutan dengan total jarak terpendek. Karena ini open-path (petugas tidak harus kembali ke titik awal) dan jumlah titik harian relatif kecil (≤40), tidak butuh solver berat. Heuristik dua tahap sudah lebih dari cukup:

Tahap 1 — Nearest-Neighbor (konstruksi). Mulai dari titik awal; pada tiap langkah, pindah ke kunjungan terdekat yang belum dikunjungi. Cepat (kompleksitas O(n²)), tapi rentan menghasilkan rute melingkar yang belum optimal.

Tahap 2–2-opt (perbaikan lokal). Untuk setiap pasang posisi dalam rute, balik segmen di antaranya; jika total jarak berkurang, simpan. Ulangi hingga tidak ada perbaikan. Efeknya elegan: 2-opt secara matematis menghapus persilangan rute — dan jalur yang menyilang hampir selalu lebih panjang daripada yang tidak.

def two_opt(coords, order):
    best, best_len = order, route_length(coords, order)
    improved = True
    while improved:
        improved = False
        for i in range(1, len(best) - 1):
            for k in range(i + 1, len(best)):
                new = best[:i] + best[i:k+1][::-1] + best[k+1:]   # balik segmen
                if route_length(coords, new) < best_len:
                    best, best_len, improved = new, route_length(coords, new), True
    return best

Untuk akurasi jarak jalan sebenarnya yang memperhitungkan jaringan jalan dan arah lalu lintas matriks haversine dapat ditukar dengan layanan routing seperti OSRM atau Distance Matrix API. Tapi penting untuk dicatat: bahkan dengan aproksimasi garis lurus, sinyal penghematannya sudah cukup kuat untuk dijadikan dasar keputusan.

4. Inti argumen: jarak terpendek bukan tujuan akhir

Di sinilah banyak proyek route optimization tersesat. Mereka memperlakukan ini sebagai masalah logistik untuk meinimalkan jarak dan waktu tempuh.

Tapi di konteks lending, mengunjungi 12 debitur dengan jarak yang minimal tidak ada gunanya jika 12 debitur itu adalah prospek bernilai rendah. Petugas lapangan bukan kurir yang mengantar paket dengan nilai setara; setiap titik kunjungan punya nilai harapan (expected value) yang berbeda jauh . Sebagian akan realisasi puluhan juta, sebagian besar tidak akan menghasilkan apa pun.

Rute terpendek yang menghubungkan titik-titik salah adalah optimasi lokal terhadap metrik yang salah.

Maka kerangka yang benar bukan “shortest path”, melainkan value-weighted routing: maksimalkan expected value yang bisa direalisasikan dalam batasan waktu dan jarak satu hari kerja. Ini menggeser persoalan dari TSP menjadi sesuatu yang lebih dekat ke orienteering problem dengan memilih titik terbaik dan urutkan secara efisien.

Untuk itu, dibutuh dua hal tambahan yang perlu dIsediakan yaitu: skor seberapa bernilai setiap titik, dan itu datang dari modeling, bukan dari geometri.

5. Sisi pemasaran: propensity model sebagai filter nilai

Untuk aktivitas pemasaran (akuisisi/realisasi pinjaman), pertanyaan kuncinya adalah: dari sekian banyak prospek, siapa yang paling mungkin merealisasi pinjaman jika dikunjungi?

Ini problem klasifikasi biner yang sangat cocok untuk propensity modeling. Kerangka pengembangannya:

  • Populasi: nasabah yang sudah pernah dikunjungi petugas (agar kita punya label outcome).
  • Target: nasabah yang merealisasi pinjaman setelah kunjungan.
  • Funnel-nya tajam: dari total basis nasabah, hanya sebagian dikunjungi, sebagian kecil dari yang dikunjungi berminat, dan hanya ~4,7% yang akhirnya realisasi.

Imbalance seperti ini (positive rate <5%) adalah hal normal di propensity modeling perbankan, dan punya implikasi teknis nyata: metrik akurasi mentah menyesatkan (model yang selalu memprediksi “tidak realisasi” sudah 95% akurat), sehingga evaluasi harus berbasis ranking — AUC, lift per desil, dan terutama distribusi skor per ranking band. Yang kita kejar bukan prediksi sempurna, melainkan kemampuan mengurutkan prospek dari yang paling mungkin ke paling tidak mungkin.

Output praktisnya bukan probabilitas mentah, melainkan propensity ranking (misalnya 1–10) yang langsung bisa dipakai petugas. Dan di sini ada insight operasional yang sering terlewat: ketika propensity ranking di-cross-tab dengan sumber pipeline, polanya tidak merata. Dalam data yang saya lihat, prospek dari sumber “top-up / suplesi” (nasabah eksisting yang menambah pinjaman) tidak hanya mendominasi volume, tapi juga terkonsentrasi di ranking propensity yang lebih tinggi dibanding prospek dari sumber “cold” yang jauh secara relasi.

Implikasinya untuk strategi: bukan semua pipeline layak diberi effort yang sama. Sumber dengan base rate realisasi tinggi layak diprioritaskan — dan ini keputusan yang seharusnya diambil oleh model, bukan oleh urutan kemunculan di antrian.

6. Sisi penagihan: collection score yang modular

Untuk aktivitas penagihan, pertanyaannya berbeda: debitur mana yang butuh effort lebih besar / berisiko lebih tinggi sehingga harus diprioritaskan?

Di sini, behaviour scoring / collection score bekerja lebih baik daripada propensity model. Pendekatan yang saya nilai paling robust adalah arsitektur modular — memecah skor menjadi modul-modul yang dapat dievaluasi dan diperbarui terpisah:

Modul Apa yang ditangkap Bobot (Rural) Bobot (Urban) Transaction & Saving Perilaku keuangan & aktivitas rekening 27% 32% Loan Performance Kualitas pinjaman: kolektibilitas, tunggakan, DPD 55% 53% Macroeconomic (MEV) / Geografi Risiko level unit & faktor ekonomi makro 18% 15%

Tiga hal yang membuat arsitektur ini kuat dari sudut pandang model risk management:

  1. Modularitas = maintainability. Ketika perilaku makro berubah (inflasi, kondisi ekonomi regional), Anda mengkalibrasi ulang satu modul tanpa membongkar seluruh model. Ini krusial untuk model yang harus bertahan melewati siklus ekonomi.
  2. Bobot yang berbeda untuk segmen berbeda. Perhatikan bahwa bobot Transaction & Saving lebih tinggi di urban (32% vs 27%) — karena di area urban, jejak transaksi digital lebih kaya dan lebih prediktif. Memaksakan satu set bobot global untuk semua geografi adalah kesalahan umum yang menurunkan performa di kedua segmen.
  3. Modul Loan Performance mendominasi, dan itu wajar. Variabel seperti days-past-due (DPD) dan frekuensi pembayaran punya daya prediksi paling kuat terhadap perilaku bayar ke depan. Tapi modul ini juga yang paling rentan terhadap concept drift — sehingga justru perlu monitoring paling ketat.

Output-nya adalah C-Score dan risk grade per debitur. Debitur dengan skor menunjukkan risiko gagal-bayar tinggi dan outstanding besar adalah kandidat prioritas penagihan — bukan karena dia “muncul duluan di daftar”, tapi karena expected loss-nya paling besar.

7. Menyatukan semuanya: scoring yang memberi makna pada rute

Inilah arsitektur yang menurut saya benar. Optimasi rute bukan langkah pertama — ia langkah terakhir, yang berjalan di atas lapisan scoring.

   ┌─────────────────────────────────────────────────────────┐
   │  LAPIS 1 — Pipeline scoring (siapa yang masuk antrian)  │
   │  Propensity model (pemasaran) · Collection score (tagih)│
   └────────────────────────┬────────────────────────────────┘
                            │  prospek "top-of-the-top"
                            ▼
   ┌─────────────────────────────────────────────────────────┐
   │  LAPIS 2 — Activity prioritization (skor multi-kriteria)│
   │  Nilai outcome · Urgensi jatuh tempo · Segmentasi ·     │
   │  Riwayat perilaku · + Jarak & waktu sebagai komponen    │
   └────────────────────────┬────────────────────────────────┘
                            │  daftar prioritas harian
                            ▼
   ┌─────────────────────────────────────────────────────────┐
   │  LAPIS 3 — Route optimization (NN + 2-opt / OSRM)       │
   │  Urutkan titik terpilih → rute paling efisien           │
   └─────────────────────────────────────────────────────────┘

Kunci desainnya: jarak dan waktu adalah salah satu kriteria dalam fungsi scoring, bukan fungsi terpisah yang dijalankan belakangan. Dalam praktik, ini berarti setiap aktivitas mendapat skor prioritas tertimbang, di mana efisiensi rute menyumbang porsi tertentu — misalnya:

Skoring pemasaran (ilustratif): Propensity 30% · Sisa OS & plafon 15% · Feedback kunjungan sebelumnya 10% · Produk prioritas 10% · Guidance tematik 15% · Jarak & waktu 20%.

Skoring penagihan (ilustratif): Outstanding 10% · Flag intensitas tunggakan 15% · Segmentasi nilai 15% · Riwayat point-to-point 10% · Status SML/NPL 10% · Tanggal jatuh tempo 20% · Jarak & waktu 20%.

Perhatikan bahwa urgensi jatuh tempo mendapat bobot setara dengan jarak. Ini disengaja: seorang debitur yang jatuh tempo besok tapi berjarak sedikit lebih jauh tetap harus naik prioritas di atas debitur dekat yang jatuh tempo bulan depan. Optimizer jarak murni tidak akan pernah menangkap nuansa ini — hanya weighted scoring yang bisa.

Bobot-bobot ini sebaiknya tidak ditetapkan secara judgmental selamanya. Idealnya, ia menjadi learning loop: semakin banyak data outcome aktual (apakah kunjungan benar-benar menghasilkan), semakin akurat kalibrasi bobotnya. Ini mengubah sistem dari rule-based statis menjadi sistem yang membaik seiring waktu.

8. Implementasi dan iterasi untuk perbaikan

Beberapa hal yang saya pelajari — kadang dengan cara yang menyakitkan — saat membawa model seperti ini dari notebook ke lapangan:

1. Data geospasial selalu lebih kotor dari yang Anda kira. Sebelum optimasi apa pun, saya harus membuang koordinat GPS yang jatuh di luar bounding-box wilayah operasi (titik nol-nol, koordinat di tengah laut, geotag yang nyangkut di kantor cabang). Tanpa cleaning ini, satu titik outlier bisa membuat estimasi rute meledak ke ratusan kilometer dan merusak seluruh agregat.

2. “Dekat secara kilometer” ≠ “dekat secara waktu tempuh”. Seorang petugas mengatakan: “Wilayah saya medannya ekstrem. Secara kilometer terlihat dekat, tapi waktu tempuh 2–3 jam.” Ini pengingat keras bahwa minimisasi jarak Euclidean/haversine adalah proxy, bukan kebenaran. Di wilayah dengan medan sulit, travel time matrix dari layanan routing nyata bukan kemewahan — ia keharusan.

3. Estimasi biaya membuat penghematan menjadi nyata bagi manajemen. Angka “−55% jarak” itu abstrak. Mengubahnya menjadi liter BBM, jam kerja yang dibebaskan, dan rupiah yang dihemat per petugas per bulan — itu yang membuat stakeholder menyetujui rollout. Selalu terjemahkan metrik teknis ke bahasa P&L.

4. Otoritas manusia harus tetap ada. Sistem terbaik yang saya lihat tidak meng-automate keputusan — ia memberi rekomendasi yang bisa supervisor override. Ada alasan operasional nyata (arahan mendadak, info lapangan yang tidak ada di data) yang membuat full automation berbahaya. Desain untuk human-in-the-loop, dan rancang ulang rute secara dinamis ketika ada perubahan mendadak (dynamic reprioritization).

5. Mulai dari yang baru pindah. Fitur seperti ini memberi nilai terbesar bagi petugas yang baru pindah ke wilayah kerja baru dan belum hafal medan. Ini segment adopsi awal yang ideal — mereka paling butuh, paling cepat merasakan manfaat, dan paling vokal menjadi advocate.

9. Penutup: dari “kerja keras” ke “kerja terarah”

Optimasi rute, di permukaan, terlihat seperti masalah matematika yang rapi: minimalkan jarak, selesai. Tapi di bisnis berbasis tenaga lapangan, rute hanyalah lapisan eksekusi dari pertanyaan yang jauh lebih dalam: di mana sebaiknya energi terbatas tim lapangan dihabiskan hari ini?

Menjawab pertanyaan itu butuh tiga disiplin bekerja bersama:

  • Propensity modeling untuk memberi tahu di mana peluang berada,
  • Collection / behaviour scoring untuk memberi tahu di mana risiko berada,
  • Route optimization untuk memberi tahu bagaimana menjangkaunya tanpa membuang waktu dan biaya.

Sendiri-sendiri, masing-masing hanya menyelesaikan sebagian. Disatukan, ketiganya mengubah pertanyaan dari “bagaimana mengunjungi titik-titik ini lebih cepat?” menjadi “titik-titik mana yang seharusnya dikunjungi, dalam urutan apa, untuk memaksimalkan nilai yang bisa direalisasikan hari ini?”

Itulah perbedaan antara bekerja keras dan bekerja terarah. Dan dalam pengalaman saya, data sudah ada untuk menjawabnya — yang sering hilang hanyalah kemauan untuk berhenti memperlakukan rute sebagai masalah peta, dan mulai memperlakukannya sebagai masalah nilai.


메타데이터
post_id
440e87a383da
slug
beyond-the-shortest-path-why-field-force-route-optimization-in-lending-needs-a-score-not-just-a-440e87a383da
url
https://medium.com/@tioanta/beyond-the-shortest-path-why-field-force-route-optimization-in-lending-needs-a-score-not-just-a-440e87a383da
canonical_url
https://medium.com/@tioanta/beyond-the-shortest-path-why-field-force-route-optimization-in-lending-needs-a-score-not-just-a-440e87a383da
author_url
https://medium.com/@tioanta
status
ok
fetched_at
2026-07-10 13:32:34