---
title: Shopping Log Bot
url: https://rone.dev/id/projects/shopping-log-bot
description: Bot Telegram yang membaca foto struk dengan Gemini lalu mengarsipkannya ke spreadsheet.
language: id-ID
updated: 2026-09-27
translations:
  en: https://rone.dev/projects/shopping-log-bot
---

# Shopping Log Bot

Bot Telegram yang membaca foto struk dengan Gemini lalu mengarsipkannya ke spreadsheet.

[Proyek](https://rone.dev/id/projects) / [AI](https://rone.dev/id/projects/category/ai)

Aktif · Dimulai 2025 · 4 Bintang GitHub · 0 Fork

Alur kerja n8n berisi dua puluh node untuk mencatat pengeluaran pribadi. Foto sebuah struk dan model visi akan mengekstraksi tokonya, totalnya, itemnya, dan tanggalnya; ketik satu kalimat dan sebuah agen akan mengarsipkannya sebagai pengeluaran; kirim perintah laporan dan agen kedua akan menanyai lembarnya lalu menjawab dalam kalimat. Semuanya mendarat di Google Sheets — tidak ada server aplikasi dan tidak ada basis data.

## Fakta proyek

|           |                                                                      |
| --------- | -------------------------------------------------------------------- |
| Status    | Aktif                                                                |
| Kategori  | AI                                                                   |
| Dimulai   | 2025                                                                 |
| Peran     | Perancangan dan pembangunan                                          |
| Teknologi | n8n, Google Gemini, Google Sheets, Telegram                          |
| Lisensi   | MIT                                                                  |
| Tautan    | [Kode sumber](https://github.com/ridwaanhall/n8n-pendataan-shopping) |

## Sekilas

Hambatan dalam mencatat pengeluaran bukan pada aritmetikanya, melainkan pada mengetiknya. Yang ini menghapusnya: masukannya adalah foto yang diambil di kasir, dan antarmukanya adalah aplikasi obrolan yang memang sudah terbuka.

Sebuah switch di depan alur kerjanya membaca pesan yang masuk lalu memilih satu dari tiga jalur — foto, perintah laporan, atau teks bebas. Ketiganya berakhir di spreadsheet yang sama, jadi ada satu tempat data itu tinggal, dari mana pun ia datang.

## Membatasi modelnya alih-alih mengurai keluarannya

Gambar struk dikirim ke model visi dengan prompt yang menetapkan format keluaran empat baris secara persis, memberi satu contoh terisi, dan mendefinisikan satu baris galat untuk struk yang tidak terbaca. Responsnya kemudian dibaca menurut posisinya.

Itulah pertukaran yang diambil dengan sadar: prompt yang kaku dan pengurai yang bodoh, alih-alih prompt yang longgar dan pengurai yang harus menafsirkan kalimat. Ketika modelnya tidak bisa membaca sebuah struk, ia mengatakannya dalam satu bentuk yang memang diharapkan alur kerjanya, dan itu kegagalan yang jauh lebih baik daripada total yang salah tetapi meyakinkan muncul di spreadsheet.

Dua jalur percakapannya bekerja sebaliknya — keduanya mendapat agen dengan spreadsheet terpasang sebagai alat, karena "berapa yang saya belanjakan untuk bahan makanan minggu lalu" adalah pertanyaan, bukan formulir.

<CardGroup cols={2}>
  <Card title="Sebelumnya: Rone Arena Python SDK" href="https://rone.dev/id/projects/rone-arena-python">
    pip install rone-arena — seluruh permukaan API di balik empat sub-klien.
  </Card>

  <Card title="Berikutnya: Gold Price Forecasting" href="https://rone.dev/id/projects/gold-price-forecasting">
    Prakiraan LSTM PyTorch untuk emas Indonesia, dari satu bulan sampai lima tahun ke depan.
  </Card>
</CardGroup>
