Type something to search...

Warung Assistant

Ringkasan

Pemilik warung menjawab lima pertanyaan yang sama sepanjang hari sementara pembeli mengantre. Warung Assistant adalah asisten chat yang mengambil alih pertanyaan-pertanyaan itu, supaya pemilik tinggal mengurus pembayaran dan penyerahan barang.

Asisten ini menjawab pertanyaan umum seperti harga barang, stok masih ada atau tidak, barangnya ada di rak mana, dan perkiraan total belanjaan. Jadi pemilik warung bisa fokus melayani pembayaran, sekaligus mengurangi salah hitung dan mempercepat layanan.


Lima pertanyaan yang sama, sepanjang hari

Operasional toko kecil sering bermasalah karena:

  1. Pertanyaan pelanggan yang berulang Contohnya:

    • “Indomie Ayam Bawang berapa?”
    • “Telurnya masih ada?”
    • “Kecapnya di rak mana?”
  2. Konsentrasi buyar saat melayani pembayaran

    • Pemilik warung sering kepotong konsentrasinya waktu menghitung belanjaan
    • Risiko salah hitung meningkat.
  3. Input pelanggan yang tidak terstruktur Pelanggan memakai bahasa sehari-hari seperti:

    • “Telur setengah kilo, Indomie 3, sama bayam 2 ikat”

    Nama produk, satuan, dan jumlahnya macam-macam.

  4. Sistem POS tradisional yang kaku

    • Tidak paham bahasa sehari-hari
    • Tidak bisa membantu pelanggan sebelum pesanannya difinalkan

Front desk yang paham bahasa sehari-hari

Warung Assistant jadi front desk AI untuk pelanggan, sementara pemilik warung fokus ke pembayaran dan penyerahan barang.

Alur satu pesanan

  1. Pelanggan berinteraksi dengan Warung Assistant

    • Tanya harga
    • Cek stok
    • Tanya lokasi barang
    • Minta perkiraan total
  2. Memahami “telur setengah kilo”

    • Mengekstrak nama produk, jumlah, dan satuannya
    • Mendukung:
      • Kilogram, setengah, seperempat
      • Gram / ons
      • Jumlah berbasis satuan
      • Permintaan berbasis budget (misalnya “gula seharga Rp10.000”)
      • Sinonim nama produk
  3. Reasoning & Validation

    • Fuzzy product matching pakai RapidFuzz
    • Validasi stok (jumlah yang diminta ≤ stok tersedia)
    • Perhitungan subtotal dan grand total
  4. Structured Output

    • Daftar produk
    • Harga satuan
    • Jumlah
    • Subtotal per item
    • Grand total
    • Lokasi rak (kalau diminta)
  5. Checkout yang fokus ke pemilik

    • Cognitive load berkurang
    • Checkout lebih cepat
    • Salah hitung berkurang

Arsitektur

graph TB
    User[Chat pelanggan] --> UI[Gradio ChatInterface]
    UI --> EX[LangChain AgentExecutor]
    EX --> ZS[ZeroShotAgent di Ollama gemma3 12b]
    ZS --> T1[check stock]
    ZS --> T2[get price from csv]
    ZS --> T3[calculate total price]
    ZS --> T4[find product location]
    T1 & T2 & T4 -. lookup .-> CSV[(Inventaris CSV)]
    T1 & T2 & T4 -. fuzzy match .-> RF[RapidFuzz + parser satuan]
    T1 & T2 & T3 & T4 --> ANS[jawaban berisi total + rak]
    ANS --> User

Yang seharusnya berubah

Saya tidak pernah mengukurnya di warung beneran, jadi anggap daftar di bawah ini sebagai target, bukan hasil:

  • Layanan lebih cepat
  • Salah hitung berkurang
  • Beban pemilik lebih ringan
  • Pembeli lebih puas
  • Jadi fondasi sistem POS dan inventory

Dari sisi portfolio, project ini menunjukkan:

  • Mendesain sistem LLM yang praktis
  • Reasoning berbasis tool
  • Handling real-world constraints
  • Membangun aplikasi AI end-to-end

Kenapa tools ini

LLM & AI

  • Ollama (Local LLM: Gemma / LLaMA / Mistral)
  • LangChain (Agents, Tools, Memory)
  • Prompt Engineering (ReAct, Few-shot prompting)

Model berjalan lokal karena warung tidak punya budget GPU dan koneksi internetnya sering tidak bisa diandalkan. LangChain waktu itu cara tercepat menghubungkan tools ke model.

Retrieval & Data

  • Inventory berbasis CSV (retrieval gaya RAG)
  • RapidFuzz untuk fuzzy product matching
  • Logika parsing jumlah dan satuan yang saya tulis sendiri

Sengaja tanpa vector database. Inventory warung hanya beberapa ratus baris dengan harga pasti, dan lookup CSV mengembalikan angka yang tepat setiap saat. Embeddings hanya menambah cara-cara kreatif untuk salah soal harga.

Backend

  • Python
  • Pandas
  • Arsitektur modular berbasis tool:
    • check_stock
    • get_price_from_csv
    • calculate_total_price
    • find_product_location

Interface

  • Gradio ChatInterface
  • Real-time chat UI

Gradio karena yang dibutuhkan cuma kotak chat, dan itu belasan baris kode, bukan satu project frontend.


Yang belum dibangun

Yang mungkin dikerjakan nanti:

  • Role-based access (mode Pelanggan / mode Pemilik)
  • Export transaksi (struk, CSV, PDF)
  • Update stok otomatis setelah pembayaran
  • Integrasi vector database (FAISS / Chroma)
  • Input suara (Speech-to-Text)
  • Multi-turn memory (misalnya “tadi saya beli apa ya?”)

Kenapa project ini berkesan

Yang saya pelajari dari project ini:

  • Menerapkan LLM reasoning
  • Orkestrasi agent di LangChain
  • Tool calling dan validasi state
  • Membangun AI yang praktis untuk usaha kecil beneran

Saya lebih mengkhawatirkan data stok yang berantakan daripada kualitas jawaban model, karena itu yang paling sering bikin jawabannya salah.

Intinya: asisten buat operasional toko sehari-hari, dengan validasi stok dan perhitungan harga di setiap jawaban.

Chat Warung Assistant mengubah bahasa sehari-hari jadi rincian belanja

Demo tanya harga, cek stok, dan minta total belanja


Source code

Kodenya publik: https://github.com/rasyidev/warung_assistant