ποΈ Day 5: Proyek Bisnis β Equity Portfolio Rebalancer β
Rangkuman 6 video: Rekap Webhook & Autentikasi, Tipe Node n8n, Membangun Portfolio Rebalancer, Otonomi Agen & Context Engineering, Integrasi Gmail + Pushover, dan If Node untuk Logika Kondisional
π― Tujuan Hari Ini β
Hari terakhir Week 1 adalah hari proyek nyata. Semua yang dipelajari selama empat hari sebelumnya β JSON, expressions, autentikasi, integrasi Google, Pushover β digabungkan untuk membangun Equity Portfolio Rebalancer: sebuah AI Agent yang membaca portofolio saham, mencari harga pasar terkini, membuat keputusan rebalancing, lalu mengirim email dan notifikasi. Ini adalah jenis proyek yang bisa kamu bangun untuk klien dalam sebuah AI automation agency.
π Bagian 1: Rekap Cepat β Webhook & Autentikasi β
Sebelum masuk ke proyek, instruktur merangkum konsep kunci dari hari sebelumnya:
Webhook dalam Satu Diagram β
Tanpa Webhook (Request-Response):
ββββββββ "Kirim pesan" βββββββββββ
β n8n β βββββββββββββββββΆβ Platformβ
β β ββββββββββββββββββ β
ββββββββ "Berhasil" βββββββββββ
Dengan Webhook (Event-Driven):
ββββββββ βββββββββββ
β n8n β ββββββββββββββββββ Platformβ
β β "Ada pesan baru β β
ββββββββ yang mention βββββββββββ
bot-mu!"Webhook = URL endpoint yang kamu sediakan β sistem luar memanggil URL itu untuk memberitahu n8n bahwa sebuah event telah terjadi. Ini adalah mekanisme trigger untuk platform seperti Slack.
Tiga Level Autentikasi (Rekap) β
| Level | Metode | Contoh |
|---|---|---|
| π’ | API Key β copy & paste | OpenAI, Pushover, Telegram |
| π‘ | Pre-configured OAuth2 β klik & allow | Google Sheets, Gmail |
| π΄ | Full OAuth2 β setup scopes, token, webhook | Slack |
π§© Bagian 2: Tipe-Tipe Node di n8n β
n8n memiliki taksonomi node yang penting untuk dipahami agar kamu tidak bingung saat membangun workflow yang lebih kompleks.
Hierarki Node β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLUSTER NODE β
β (Grup node = satu langkah) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β ROOT NODE β β
β β (Core Node utama) β β
β β Contoh: AI Agent β β
β β β β
β β ββββββββββββ ββββββββββ ββββββββββββ β β
β β β SUB-NODE β βSUB-NODEβ β SUB-NODE β β β
β β β Model β β Memory β β Tools β β β
β β ββββββββββββ ββββββββββ ββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| Tipe | Deskripsi | Contoh |
|---|---|---|
| Core Node | Blok bangunan utama di canvas | Telegram, Google Sheets, If |
| Node Operation | Dua jenis: Trigger (memulai workflow) atau Action (menjalankan tugas) | Trigger: "On Message", Action: "Send Text" |
| Sub-Node | Bagian di dalam core node, tidak bisa berdiri sendiri | Tool, Model, Memory |
| Cluster Node | Grup root node + sub-nodes = satu langkah | AI Agent + Model + Memory + Tools |
Items: Data yang Mengalir Antar Node β
INPUT (Array of Items) OUTPUT (Array of Items)
ββββββββββββββββββββββββ ββββββββββββββββββββββββ
β [ β β [ β
β {"fruit": "apple"},β βββΆ β {"fruit": "APPLE"},β
β {"fruit": "banana"}β β {"fruit": "BANANA"}β
β ] β β ] β
ββββββββββββββββββββββββ ββββββββββββββββββββββββ
Expression: {{ $json.fruit.toUpperCase() }}
Diterapkan ke SETIAP item dalam array!π‘ Penting:
$jsonsebenarnya adalah shortcut dari$input.item.jsonβ artinya "untuk setiap item, ambil JSON-nya." Expression kamu dijalankan pada setiap item secara otomatis.
π Bagian 3: Proyek β Equity Portfolio Rebalancer β
Gambaran Besar β
ββββββββββββββ βββββββββββββ ββββββββββββββββββββββββββββββββββββ
β Form βββββΆβ AI Agent βββββΆβ If Node β
β Submission β β (GPT-4.1) β β output == "ok" ? β
β β β β β ββ TRUE β π± Push: Sukses β
β "Rebalance β β 6 Tools: β β ββ FALSE β π¨ Push: Gagal β
β 60/40" β β π Sheetsβ ββββββββββββββββββββββββββββββββββββ
ββββββββββββββ β πΉ Marketβ
β βοΈ Updateβ
β βοΈ Rebal β
β π§ Gmail β
β π± Push β
βββββββββββββGoogle Sheet: Struktur Portfolio β
| Kolom | Isi | Diisi Oleh |
|---|---|---|
| A: Ticker | Kode saham (VTI, VXUS, BND, dll.) | Manual |
| B: Quantity | Jumlah kepemilikan saat ini | Manual |
| C: % Equity | Persentase saham | Manual |
| D: % Fixed Income | Persentase obligasi | Manual |
| E: Price | Harga pasar terkini | π€ Agent |
| F: Value | Quantity Γ Price | Formula |
| G: New Quantity | Jumlah setelah rebalancing | π€ Agent |
Form Trigger: Antarmuka Pengguna β
Alih-alih Chat Trigger, proyek ini menggunakan Form Submission sebagai trigger β menghasilkan web form yang bisa diakses siapa saja:
βββββββββββββββββββββββββββββββββββββββββββ
β π Portfolio Rebalancer β
β β
β How would you like to rebalance β
β your portfolio? β
β βββββββββββββββββββββββββββββββββββ β
β β Ensure the portfolio is 60% β β
β β equity and 40% fixed income β β
β βββββββββββββββββββββββββββββββββββ β
β β
β [ Submit ] β
ββββββββββββββββββββββββββββββββββββββββββββ‘ Lightning bolt (β‘) di samping node menandakan bahwa itu adalah trigger node.
6 Tools pada AI Agent β
| # | Tool | Fungsi | Konfigurasi |
|---|---|---|---|
| 1 | Google Sheets β Get Rows | Baca isi portfolio | Doc: Portfolio, Sheet: Sheet1 |
| 2 | MarketStack β End of Day | Cari harga saham terkini | Filter: latest, ticker: model decide |
| 3 | Google Sheets β Update Row (Price) | Update kolom harga | Match: ticker, Set: price |
| 4 | Google Sheets β Update Row (Rebal) | Update kolom rebalancing | Match: ticker, Set: new quantity |
| 5 | Gmail β Send Email | Kirim email trading decisions | To: fixed, Subject: fixed, Body: model decide |
| 6 | Pushover β Push Notification | Notifikasi ringkas | User key: fixed, Message: model decide |
π§ Bagian 4: Otonomi Agen & Context Engineering β
Prompt = Instruksi + Expression β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PROMPT KE AI AGENT: β
β β
β (Teks statis) β
β You have access to the user's equity portfolio β
β in a Google Sheet. You also have access to market β
β data. The user has asked you to rebalance their β
β portfolio with this instruction: β
β β
β (Expression dinamis) β
β {{ $json["How would you like to rebalance..."] }} β
β β
β (Instruksi langkah-langkah) β
β 1. Read the portfolio from the sheet β
β 2. Fetch latest prices β
β 3. Update table with prices β
β 4. Make rebalancing decisions β
β 5. Update table with decisions β
β 6. Read table again to verify β
β 7. Iterate if needed β
β 8. Send email + push notification β
β β
β Only respond "ok" when mission is complete. β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββSpektrum Otonomi β
Terlalu Ketat Sweet Spot Terlalu Longgar
(Bukan AI) (Agentic) (Unreliable)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΆ
Step 1: buka file X "Baca portfolio, "Rebalance
Step 2: baca baris 3 cari harga terkini, portfolio-ku"
Step 3: kalikan rebalance 60/40,
Step 4: tulis ke kolom G kirim email & notif"
β Bisa pakai code β
Cukup jelas, β LLM bingung,
tanpa AI masih fleksibel hasil acakπ‘ Insight: Instruksi "loosey goosey" β cukup jelas agar agen tahu arahnya, tapi cukup fleksibel agar ia bisa membuat keputusan cerdas sendiri. Ini adalah seni context engineering β dan cara terbaik menemukan sweet spot adalah dengan eksperimen berulang.
Tool Description yang Baik β
Jangan biarkan deskripsi tool default. Customize untuk membantu LLM:
Default: "Get rows in sheet in Google Sheets"
Custom: "This tool provides details of the user's portfolio
in a Google Sheet. It includes the positions, the
equity/fixed income breakdown. Use this tool to
retrieve the Google Sheet before updating prices
and making rebalancing decisions. IMPORTANT: You
must also use this tool AFTER rebalancing to check
the breakdown achieves your goal. If not, keep
iterating."Max Iterations β
Default: 10 iterasi. Untuk workflow kompleks seperti portfolio rebalancer, naikkan ke 30 agar agen punya cukup ruang untuk berpikir, mengeksekusi tools, dan memeriksa ulang.
π Bagian 5: If Node β Logika Kondisional β
If Node memungkinkan kamu membuat percabangan dalam workflow tanpa coding β ini adalah fitur workflow tradisional (seperti Zapier) yang tersedia di n8n.
Struktur If Node β
βββββββββββββββββββ
β AI Agent β
β Output: "ok" β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β IF NODE β
β β
β $json.output β
β == "ok" ? β
ββββ¬ββββββββββββ¬βββ
TRUE β β FALSE
βΌ βΌ
ββββββββββββ ββββββββββββ
β Pushover β β Pushover β
β "Sukses!" β β "GAGAL!" β
β Low prio β β Emergency β
ββββββββββββ ββββββββββββPerbedaan Kritis: Tool vs Core Node β
| Aspek | Tool (Sub-Node) | Core Node (Action) |
|---|---|---|
| Posisi | Di dalam AI Agent (lingkaran) | Di canvas workflow (kotak) |
| Siapa panggil? | LLM yang memutuskan | Workflow yang selalu menjalankan |
| Input | Bisa "Let model decide" | Fixed atau Expression |
| Kapan dipanggil? | Saat LLM merasa perlu | Setiap kali workflow sampai di node itu |
| Contoh | Pushover tool dalam Agent | Pushover setelah If Node |
π‘ Insight: Kamu bisa menggunakan node yang sama (Pushover, Gmail, dll.) sebagai tool (keputusan LLM) ATAU sebagai core node (keputusan workflow). Pilihan tergantung siapa yang harus memutuskan: AI atau logika tetap.
π Deploy ke Production β
Setelah workflow berhasil di mode test:
- Buka Form Trigger node β copy Production URL
- Tekan Publish β beri nama versi
- Buka Production URL di browser β form web muncul!
- Submit β workflow berjalan otomatis
- Cek Google Sheet β harga & rebalancing terisi π€
- Cek email β trading decisions masuk π§
- Cek HP β push notification berbunyi π±
Monitoring via Executions Tab β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXECUTIONS TAB β
β β
β Status: β
Success Duration: 87s β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β OpenAI Chat Model Γ10 calls β β
β β Google Sheets (Read) Γ4 calls β β
β β MarketStack Γ4 calls β β
β β Update Price Γ5 calls β β
β β Update Rebalance Γ7 calls β β
β β Pushover Γ1 call β β
β β Gmail Γ1 call β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Toggle: [Visual] [Logs] β
β Logs β Details tab β lihat input/output per call β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββπ― Tantangan Peningkatan β
Instruktur memberikan beberapa ide untuk meningkatkan proyek ini:
| # | Tantangan | Hint |
|---|---|---|
| 1 | Buat lebih stabil untuk portfolio besar | Tambahkan info lebih detail di spreadsheet |
| 2 | Tambahkan kalkulator sebagai tool | Agar agen bisa menghitung alokasi dengan tepat |
| 3 | Ubah trigger ke Schedule | Rebalancing otomatis setiap hari/minggu |
| 4 | Tingkatkan prompt engineering | Eksperimen dengan instruksi berbeda |
| 5 | Tukar Pushover dengan Telegram/Slack | Gunakan integrasi yang sudah dibangun kemarin |
π Glosarium Hari Ini β
| Istilah | Definisi |
|---|---|
| Core Node | Blok bangunan utama workflow, muncul di canvas |
| Sub-Node | Komponen di dalam core node (tool, model, memory) |
| Cluster Node | Grup root + sub-nodes yang membentuk satu langkah (AI Agent) |
| Items | Array data yang mengalir antar node β expression dijalankan per item |
| $input.item.json | Bentuk lengkap dari shortcut $json |
| Form Submission | Trigger berupa web form yang bisa diakses pengguna |
| If Node | Node logika kondisional β routing TRUE/FALSE |
| Context Engineering | Seni menyusun prompt & tool descriptions agar AI Agent optimal |
| Max Iterations | Batas berapa kali agent boleh menggunakan tools (default: 10) |
| Tool Description | Deskripsi kustom yang membantu LLM memutuskan kapan pakai tool |
β Progress Tracker β
Week 1: Automate with Workflows
=========================================
Day 1 ββββββββββββββββββββ β
AI Agent + Setup
Day 2 ββββββββββββββββββββ β
Teori Agentic AI
Day 3 ββββββββββββββββββββ β
Integrasi Google
Day 4 ββββββββββββββββββββ β
JSON + Auth + 3 Integrasi
Day 5 ββββββββββββββββββββ β
Proyek Bisnis βββ HARI INI
=========================================
π Progress: 33% kursus selesai β Week 1 COMPLETE! ππ Pencapaian Week 1 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π WEEK 1 COMPLETE β AUTOMATE WITH WORKFLOWS β
β β
β β
Membangun AI Agent pertama (OpenRouter + n8n) β
β β
Memahami 5 trik + 1 jebakan Agentic AI β
β β
Integrasi Google Sheets, Drive, Gmail β
β β
JSON, Expressions, 3 tingkat Autentikasi β
β β
3 integrasi platform (Pushover, Telegram, Slack) β
β β
Proyek bisnis nyata: Portfolio Rebalancer β
β β
If Node untuk logika kondisional β
β β
Deploy workflow ke production β
β β
Context engineering & tool descriptions β
β β
β π Siap untuk Week 2: Voice Agents & RAG! β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ