Tipe: AI Chatbot · Integrasi WhatsApp
Status: Prototipe (live, dalam pengujian)
Stack: Claude API · Supabase · Twilio · Python · Railway
Waktu Pengerjaan: Mei 2026


Masalah

Sebuah toko retail di Bandung yang menjual produk plastik rumah tangga — kursi, jerigen, dan berbagai produk sejenis — dengan lebih dari 3.000 item di inventaris.

Setiap hari, pelanggan mengirim pesan WhatsApp ke toko dengan dua pertanyaan yang selalu sama:

  • “Berapa harga kursi merk ○○?”
  • “Ada stok jerigen 20 liter?”

Karyawan menghabiskan banyak waktu untuk menjawab pertanyaan berulang ini secara manual. Di sisi lain, harga barang sering berubah — dengan ribuan item, mudah sekali bagi staf untuk memberikan harga yang sudah tidak berlaku.

Dampaknya: waktu karyawan terbuang untuk tugas bernilai rendah, dan kadang pelanggan mendapat informasi harga yang salah.


Solusi

Asisten WhatsApp bertenaga AI yang menjawab pertanyaan harga dan stok secara otomatis, dengan mengambil data langsung dari database inventaris toko secara real-time.

Pelanggan tetap mengirim pesan ke nomor WhatsApp toko seperti biasa. Asisten menjawab secara instan, 24/7, dengan data yang selalu akurat.


Cara Kerja

Pelanggan mengirim pesan WhatsApp
        ↓
Twilio menerima pesan, meneruskan ke aplikasi Python (hosting di Railway)
        ↓
Aplikasi Python memanggil Claude API dengan pesan pelanggan
        ↓
Claude memutuskan tool mana yang dipanggil:
  → get_item_info(item_name)   — untuk pertanyaan harga
  → get_stock(item_name)       — untuk pertanyaan stok
        ↓
Tool mengambil data dari database Supabase secara live
        ↓
Claude menerima hasil, menyusun balasan yang natural
        ↓
Balasan dikirim ke pelanggan via Twilio → WhatsApp

Detail Teknis

Model AI: Claude API (Anthropic) dengan tool use / function calling
Database: Supabase (PostgreSQL) — data inventaris real-time
Pesan: Twilio WhatsApp API
Backend: Python, hosting di Railway
Pencarian: Fuzzy search case-insensitive (ilike) — menangani nama produk yang tidak lengkap

Claude menggunakan tool use (function calling) — Claude sendiri yang memutuskan kapan dan apa yang perlu dicari di database, bukan menerima semua data sekaligus. Ini membuat sistem lebih akurat, hemat biaya, dan skalabel seiring bertambahnya inventaris.

System prompt menggunakan XML tags terstruktur untuk membatasi perilaku Claude: hanya menjawab pertanyaan terkait toko, membalas dalam bahasa pelanggan (Indonesia atau Inggris), dan memberikan respons fallback yang sopan ketika item tidak ditemukan.


Hasil

  • Karyawan tidak lagi menghabiskan waktu menjawab pertanyaan harga/stok yang berulang via WhatsApp
  • Akurasi harga meningkat — jawaban diambil langsung dari database, bukan dari ingatan staf
  • Tersedia 24/7 — pelanggan mendapat balasan instan di luar jam toko
  • Saat ini dalam tahap prototipe — sedang diuji dengan traffic pelanggan nyata

Yang Saya Pelajari

  • Tool use adalah pola yang tepat untuk chatbot berbasis database — bukan prompt stuffing. Claude yang memutuskan kapan query dijalankan, lebih bersih dan lebih andal.
  • Struktur system prompt sangat penting. Menggunakan XML tags (<role><scope><fallback>) membuat perilaku bot jauh lebih konsisten dan mudah di-debug.
  • Data nyata itu berantakan. 3.000 SKU dengan kode singkatan adalah keterbatasan yang diketahui — kolom keywords/alias direncanakan untuk meningkatkan pencocokan bahasa natural.

Keterbatasan Saat Ini

  • Pencocokan nama produk mengandalkan pencarian teks parsial — SKU yang disingkat bisa membingungkan pertanyaan dalam bahasa natural (perbaikan sudah dalam backlog)
  • Tahap prototipe — belum menangani edge case seperti pemesanan massal atau harga khusus
  • Belum ada memori percakapan antar sesi

Dibuat oleh developer AI independen berbasis di Bandung, Indonesia. Tersedia untuk proyek serupa — [hubungi Inti Sakura Solutions untuk detil lebih lanjut].

Categories: