· sistem  · 7 min read

34 Pekerjaan Berulang yang Jalan Sendiri, dalam Tiga Lapisan

Inventaris otomasi di kantor saya, dibagi tiga lapisan, dan kenapa lapisan paling membosankan dibangun duluan.

Inventaris otomasi di kantor saya, dibagi tiga lapisan, dan kenapa lapisan paling membosankan dibangun duluan.

Saya membuat daftar semua pekerjaan berulang yang sekarang jalan tanpa ada yang menjalankannya. Jumlahnya 34.

Sembilan belas berupa Google Apps Script yang menempel di spreadsheet. Tiga berupa alur lead di n8n dan alur sejenisnya di satu VPS. Dua belas sisanya Routine terjadwal yang menjalankan Claude, membaca file di repo saya, lalu memutuskan sesuatu.

Ketiganya sering disebut dengan satu kata yang sama. Di kantor saya ketiganya tiga jenis pekerjaan yang berbeda, dengan urutan pembangunan yang tidak bisa dibalik.

Tiga lapisan, dan pembedanya siapa yang memutuskan

Saya memisahkan ketiganya dari siapa yang mengambil keputusan di dalamnya.

LapisanJumlahYang memutuskanFrekuensi terbanyak
Apps Script di spreadsheet19Aturan dan tanggal yang saya tulis di kodeHarian, 08:00 WIB
Alur n8n di VPS3Aturan, kecuali satu alur yang memanggil model untuk membaca isi dokumenHarian dan mingguan
Routine menjalankan Claude12Model, dengan instruksi yang dibaca dari file MarkdownHarian, mingguan, dan bulanan

Lapisan pertama tidak pernah menilai apa pun. Dia membandingkan tanggal, menulis stempel di kolom, mengirim email, lalu berhenti.

Lapisan ketiga justru sebaliknya. Routine edavos-review-bulanan membaca folder akuisisi lalu menyusun penilaian, dan audit repo bulanan mencari file yang sudah tidak dirujuk siapa pun. Keduanya menghasilkan kalimat.

Lapisan ketiga bisa menilai karena bahan yang dibacanya sudah rapi sejak pagi hari. Yang merapikannya lapisan pertama.

PENJADWAL08:00 · mingguan · tanggal 1ROUTINEALUR n8nAPPS SCRIPTmembaca lalu menilaimemindahkan dan menamaiaturan · tanggal · stempel12319yang dirapikan di bawah jadi bahan yang dibaca di atas

Sebelum ada reminder, yang lewat itu dianggap normal

Kelas otomasi terbesar di lapisan pertama adalah reminder. HC untuk PKWT dan probation, milestone proyek yang lewat tenggat, tiket IT Support yang masih terbuka di akhir minggu, dan kontrak warranty serta license yang mendekati jatuh tempo.

Semuanya punya bentuk yang sama. Ada tanggal di sebuah kolom, ada orang yang seharusnya melihatnya, dan tidak ada satu pun jam dalam sebulan yang ditugaskan untuk melihat.

Setelah reminder dipasang, terlewat mulai punya jejak.

Yang menahan reminder supaya tidak mengirim dua kali adalah kolom stempel. Setiap baris punya Reminder 1, Reminder 2, dan Reminder 3 untuk internal. Script menulis tanggal ke sel itu setelah mengirim, dan jadwal berikutnya melewatinya karena selnya sudah terisi.

Konsekuensinya langsung dan kadang berguna. Mengosongkan sel itu berarti mengirim ulang.

Tiga script menembus keluar, dan ketiganya menahan diri dengan cara berbeda

Dari 19 Apps Script, tiga mengirim email ke alamat customer. Sisanya berhenti di internal Edavos.

Ketiganya dibedakan oleh apa yang harus terjadi sebelum email itu boleh berangkat.

ScriptYang mengizinkan pengiriman
Reminder invoiceManusia mencentang barisnya dulu. Bagian kirim sengaja tidak diotomatiskan
Reminder warranty dan lisensiKolom stempel. Tidak ada yang mencentang apa pun
Reminder IT Support dan maintenanceKolom stempel, ditambah penahan akhir pekan

WL-Warranty-License-Reminder jalan tiap hari pukul 08:00 WIB dan mengerjakan empat hal sekali jalan: menutup baris yang tanggalnya sudah lewat, mengirim reminder internal, mengirim reminder ke customer per grup kontrak, dan melaporkan baris yang kontaknya kosong.

Jendelanya bertingkat, dan internal selalu lebih dulu dari customer.

Sisa hariInternalCustomer
Di atas 90Tidak adaTidak ada
90 sampai 61Reminder 1Tidak ada
60 sampai 31Reminder 2Cust.Reminder 1, mulai hari ke-59
30 sampai 1Reminder 3Cust.Reminder 2

Sebelum ini, seseorang di tim sales harus membuka file, membaca baris per baris, mencari mana yang mendekati jatuh tempo, lalu menghubungi customer satu per satu. Sekarang emailnya berangkat sendiri.

Reminder yang cuma punya satu hari untuk terbit, dan tidak ada yang tahu

Sampai versi 1.0, Reminder 1 dan Reminder 2 memakai pembanding tanggal persis. Sisa hari harus sama dengan 90, atau sama dengan 60.

Artinya masing-masing reminder cuma punya satu hari dalam setahun untuk terbit.

Baris yang baru dimasukkan ke sheet saat sisa 75 hari melewatkan Reminder 1 selamanya. Trigger yang gagal jalan di hari yang tepat menghasilkan hal yang sama. Dan tidak ada yang menandainya, karena kolom stempelnya memang tidak pernah terisi, dan kolom kosong terlihat persis seperti kolom yang belum waktunya.

Yang membuat cacat ini mahal adalah hasilnya salah tanpa memunculkan error apa pun.

Di versi 1.1 semua jendela diubah jadi rentang, dan yang menahan pengiriman berulang diserahkan sepenuhnya ke kolom stempel. Reminder yang tertinggal sekarang menyusul kapan saja di dalam rentangnya.

Cacat kedua di versi yang sama lebih halus. Pengisian nama organisasi memakai pencocokan sebagian dua arah, sehingga nomor SO26-001 mengisi organisasi milik SO26-0019. Berbahayanya justru karena pengisian itu berjalan saat nomor SO masih setengah diketik, jadi tebakan salah itu terjadi persis di detik orang mengetik.

Sekarang pencocokannya harus persis setelah normalisasi. Nomor yang tidak ketemu dibiarkan kosong dan dilaporkan, tidak ditebak.

Bendera debug yang hidup terlalu lama

Menulis artikel ini membuat saya membaca ulang kode yang saya anggap selesai. Satu hal langsung terlihat.

Bendera DEBUG masih bernilai benar di produksi, padahal komentar di kode saya sendiri menyuruh sebaliknya. Di salah satu script yang menembus ke alamat customer. Saya mematikannya hari itu juga.

Yang dimatikan cuma pencatatan ke Execution Log. Tidak ada email yang berubah, tidak ada keputusan script yang berubah, dan pencatatan error memang tidak pernah lewat bendera itu. Bendera itu sisa sesi debugging lama yang tidak pernah saya matikan.

Yang layak diperhatikan adalah berapa lama dia bertahan. Tidak ada yang rusak karenanya, tidak ada email yang gagal, dan tidak ada satu pun keluhan. Dia hidup lama persis karena tidak pernah mengganggu siapa pun.

Satu hal lagi saya temukan dan sengaja tidak saya ubah, karena bentuknya memang disengaja.

Kolom stempel mencatat bahwa script memutuskan untuk mengirim, bukan bahwa pengirimannya berhasil. Stempel ditulis di jalur yang sama dengan pengiriman, jadi keduanya tidak pernah bisa dibedakan dari sheet. Satu-satunya bukti sebuah email berangkat adalah salinan BCC yang masuk ke kotak masuk saya.

Memperbaikinya berarti memisahkan dua peran yang sekarang ditumpuk di satu kolom. Satu penanda niat kirim, satu kunci penahan kiriman ganda. Selama keduanya satu sel, tidak ada tempat untuk menaruh log pengiriman, dan itu sebabnya log itu tidak pernah ada.

Reminder IT Support dan maintenance sudah menulis stempelnya setelah pengiriman berhasil. Itu membuat saya berhenti sejenak. Perbaikannya sudah ada di rumah, di script sebelah, dan tidak pernah saya pindahkan.

Itu pola yang saya kenali di banyak tempat. Perbaikan tidak menyebar sendiri antar sistem yang tidak saling memanggil.

Inventarisnya sendiri sudah ketinggalan

Mencoret dua baris yang tercatat ganda di daftar otomasi

Sheet inventaris yang saya pakai menyusun tulisan ini berisi 24 baris. Dua di antaranya, maintenance VPS dan maintenance WordPress bulanan, adalah pekerjaan yang sekarang dikerjakan Claude Routine. Keduanya tercatat dua kali.

Itu cacat yang wajar dan tetap cacat. Inventaris dibuat saat lapisan ketiga belum ada, dan tidak ada apa pun yang memaksanya menyusul.

Pola yang sama muncul di tempat lain. Setiap keputusan yang saya catat di decision log yang saya pakai punya baris tinjau dan baris batal kalau, yaitu kondisi kegagalan yang dirumuskan pada hari keputusannya dibuat. Tidak ada satu pun yang membacanya kembali.

Ada 11 entry jatuh tempo Oktober, 21 entry November, dan 12 entry Desember. Perbaikannya sebuah skrip yang membaca semua decision log dan mencetak yang jatuh tempo bulan ini, dipanggil dari audit bulanan. Skrip itu melapor saja dan tidak menilai apa pun.

Di mana AI-nya, dan kenapa lapisan pertama tetap ada

Ketiga lapisan ini dibangun dengan bantuan AI. Apps Script-nya saya tulis bersama Claude, termasuk saat mencari tahu kenapa jendela 90 hari itu tidak pernah terbit. Rancangan kolom, urutan node n8n, dan sebagian besar keputusan strukturnya lahir dari sesi yang sama.

Yang berbeda antar lapisan adalah apakah AI ikut jalan setiap hari.

Di lapisan pertama tidak. Yang berangkat pukul delapan pagi adalah perbandingan tanggal dan kolom stempel, dan itu memang yang saya inginkan untuk pekerjaan yang menyentuh customer. Perilakunya bisa saya baca dari kode, dan hasil kemarin sama dengan hasil besok untuk masukan yang sama.

Di lapisan ketiga iya, dan di situ letak gunanya. Routine bulanan membaca folder akuisisi dan menyusun penilaian yang tidak bisa saya tulis jadi aturan if, karena saya sendiri tidak tahu bentuk temuannya sebelum datanya dibaca.

Lapisan ketiga tetap tidak bisa menggantikan lapisan pertama, dan alasannya ada di urutan pembangunannya. Routine yang menilai kontrak jatuh tempo akan membaca sheet yang sama, dan sheet itu rapi karena ada script membosankan yang mengisi stempel dan menutup baris kedaluwarsa tiap pagi.

Lapisan pertama yang membuat lapisan ketiga punya bahan yang layak dibaca.

Yang bisa Anda kerjakan dalam satu jam

Buka spreadsheet kosong, lalu daftarkan pekerjaan berulang di tim Anda dengan empat kolom: nama pekerjaan, siapa yang mengerjakan, berapa sering, dan berapa lama sekali jalan.

Urutkan daftarnya dengan frekuensi, lalu lihat yang paling atas.

Di daftar saya, yang paling layak diotomatiskan duluan adalah pekerjaan lima menit yang harus terjadi tiap hari dan tidak pernah punya pemiliknya sendiri.

- Daud (@daudwihardi)

Daud Wihardi

Catatan Terkait

Lihat semua catatan »
Tujuh dari 12 Claude Skill yang Saya Hapus Ternyata Cuma Data

Tujuh dari 12 Claude Skill yang Saya Hapus Ternyata Cuma Data

Cara memisahkan instruksi dari data di folder kerja Anda, dan berapa yang saya bayar karena melewatkannya selama dua bulan.

Otomatisasi Lead dengan n8n: 80 Leads Sebulan Tanpa Ada yang Jaga Inbox

Otomatisasi Lead dengan n8n: 80 Leads Sebulan Tanpa Ada yang Jaga Inbox

Delapan node n8n mengganti dua orang yang bergantian membuka inbox, dengan ongkos di bawah Rp 90,000 sebulan.

Dari 8 Sales ke 1: Edavos Dapat 50+ Leads/Bulan dari Google

Dari 8 Sales ke 1: Edavos Dapat 50+ Leads/Bulan dari Google

Butuh empat tahun, dua agency gagal, dan satu pandemi untuk membuktikan bahwa sistem bisa menggantikan ketergantungan pada tim sales.

Skill Claude saya mengulang rekomendasi yang sudah dikerjakan

Skill Claude saya mengulang rekomendasi yang sudah dikerjakan

Perbaikannya satu file teks yang menyimpan tiap keputusan beserta kondisi yang membatalkannya.

Website Company Profile: WordPress atau Astro?

Website Company Profile: WordPress atau Astro?

Banyak website company profile kena hack bukan karena diserang, tapi karena ditinggal.