Cara memakai tiap fitur dashboard — dan jebakan yang sudah pernah menjebak orang. Untuk pemilik, admin, supervisor, leader team, dan sales.
Semua fitur yang ditambahkan di atas fondasi Fase 1–4 — yaitu semua yang lahir sejak 20 Agustus 2026. Tiap slide memuat tangkapan layar dari sistem yang benar-benar berjalan.
Isinya bukan hiasan: hal yang sudah pernah salah dipahami orang, atau yang kalau salah dipakai merugikan. Kalau waktumu sedikit, baca bagian itu lebih dulu.
Empat menu terakhir (Nomor, Kelola User, Sembunyikan Chat, Panel Admin) hanya muncul untuk admin dan Tamu. Di luar menu ada tiga tombol mengambang: Tips di kanan atas, maskot di kanan bawah, dan Pulihkan yang hanya muncul kalau nomormu sendiri sedang putus.
Sejak Sep–Okt 2026 bertambah: Instagram, Shopee, Horus AI, Outreach, Iklan, dan Iklan Brand Lain — masing-masing dibahas di bagian tersendiri lebih lanjut di buku ini.
Lima peran, tiga sumbu izin yang terpisah, dan tiga sakelar berbeda untuk menyembunyikan chat.
Halaman, data, dan tulis adalah tiga sumbu yang berdiri sendiri.
| Admin | Supervisor | Leader Team | User | Tamu | |
|---|---|---|---|---|---|
| Buka halaman admin | ✓ | – | – | – | baca saja |
| Lihat nomor & chat tersembunyi | ✓ | – | – | – | – |
| Lihat chat grup WhatsApp | ✓ | – | – | – | – |
| Balas pesan | ✓ | ✓ | ✓ | ✓ | – |
| Lihat nomor telepon pelanggan | ✓ | ✓ | ✓ | – | – |
| Leads yang terlihat | semua | semua | semua | nomor sendiri | nomor sendiri |
| Grow Your Pet | ✓ | ✓ | ✓ | ✓ | – |
Arti tiap peran ditulis sekali di
packages/shared/src/types.ts sebagai predikat — bukan sebagai perbandingan
role === '...' yang tersebar di puluhan halaman. Kalau suatu hari perlu diubah,
di situlah satu-satunya tempatnya.
Tangkapan layar ini diambil DARI akun Tamu — perhatikan tiap nomor tertulis “disamarkan”.
Nomor dan percakapan yang disembunyikan admin tetap tersembunyi dari tamu. Kalau tidak, cukup masuk sebagai tamu untuk membaca yang sengaja disembunyikan — dan seluruh fitur “hide” kehilangan artinya.
Memilih team utama di filter otomatis ikut menyertakan seluruh nomor sub-teamnya. Jadi “NOAH” berarti NOAH beserta semua sub-groupnya — kalau angkanya terasa terlalu besar, di situlah sebabnya.
Ini filter tampilan, bukan penghapusan. Chat di WhatsApp asli sales tidak disentuh, dan pesannya tetap tersimpan. Tamu boleh membuka halaman ini tetapi nomor dan catatannya ditahan — catatan justru tempat identitas yang disembunyikan sering ditulis.
Delapan layar yang dibuka sales dan supervisor setiap hari, dari papan sampai membalas.
Angka di kartu dan badge mengikuti cakupan si pembaca. Admin dan User yang membuka halaman sama pada detik yang sama memang melihat angka berbeda — chat grup dan nomor tersembunyi hanya masuk hitungan admin.
Kolom “Baru” tidak ada di daftar itu dan tidak bisa dihapus atau diganti nama — ia keranjang bawaan untuk percakapan yang belum dipilah. Mengganti label kategori aman: kunci internalnya tidak ikut berubah, jadi kartu lama tidak jadi yatim.
Sakelar per orang kosong ≠ mati. Kosong berarti “ikut aturan timnya”. Kalau kamu sengaja mematikan seseorang, setel ke Mati — jangan dikosongkan.
Reaksi dari kita (🙏 pada pertanyaan pelanggan) menghapus status menunggu — sales yang membalas dengan reaksi memang sudah menanggapi.
Reaksi dari pelanggan (👍 pada pesan kita) tidak menciptakan status menunggu, dan juga tidak menghapusnya. Aturan naif “pesan terakhir masuk” menandai 1.440 percakapan; aturan ini 1.344. Selisih 96 itu label palsu yang dihindari.
Yang boleh memindahkan kartu hanya pemiliknya atau admin. Bukan soal kerapian: “8 dari 10 selesai” hanya berarti sesuatu kalau yang menandai selesai adalah orang yang benar-benar mengerjakannya.
Evolution tidak pernah menyinkronkan nama kontak dari buku telepon HP — terukur 0 dari 26.515. Karena itu nama lead harus diketik di dashboard; menunggu HP menyinkronkannya adalah menunggu sesuatu yang tidak akan terjadi.
<Nama Customer> - <Mobil Tahun>[/<Mobil Tahun>] [- <Wilayah>] [- <Produk>]| Yang diketik | Yang terbaca |
|---|---|
Aman - J5 2025 - Jakarta | Aman · J5 2025 · Jakarta |
Andi - Fortuner 2021/Alphard 2024 - Bekasi - XCS | 2 mobil · Bekasi · XCS |
Budi - Avanza 2015 - XCS/SB | wilayah kosong · produk XCS + SB |
Supaya model ber-strip seperti
BR-V dan CR-V tidak ikut terpecah.
Dibaca sebagai produk kalau cocok daftar yang dikenal (XCS, SB); selain itu dibaca sebagai wilayah.
Tidak ditolak — hanya tidak terklasifikasi.
Tidak ada yang rusak, cuma tidak bisa disaring. Slot kosong di tengah diisi -.
Membuka chat di dashboard tidak menandainya terbaca di WhatsApp. Tapi mengirim balasan lain soal: WhatsApp menandai chat terbaca di semua perangkat, jadi notifikasi di HP sales ikut hilang. Itu melekat pada perbuatan mengirim dan tidak bisa dimatikan.
| Rem | Balas manual | Auto Follow-up |
|---|---|---|
| Jeda minimum antar kirim | 5 detik | 5 detik |
| Batas per jam per nomor | MAX_SEND_PER_HOUR | ..._AUTO = 20 |
| Ditegakkan di | Redis, atomik, fail-closed — Redis mati = kirim ditolak | |
Pencacahnya satu dan dinaikkan kedua jalur, jadi kuota otomatis ikut terpakai oleh kiriman manual. Makin sibuk manusianya, makin sempit ruang untuk mesin — dan itu memang arah yang diinginkan.
Membaca nilai bawaan di kode tidak membuktikan apa pun tentang produksi. Periksa dengan
grep MAX_SEND /opt/wacrm/.env, dan container harus dibuat ulang setelah diubah.
Jangan cari buktinya di tabel messages — kiriman yang ditolak tidak pernah menjadi baris
di sana. Yang terukur hanya yang lolos, dan yang lolos selalu di bawah batasnya. Jejak penolakan ada di Redis
(send:acct:<id>:hour) dan di layar orangnya.
Untuk peran yang nomornya disamarkan, mengetik nomor telepon di kotak cari tidak akan mengonfirmasi keberadaan nomor itu — pencarian nama sengaja tidak menyentuh kolom nomor. Tanpa itu, kotak cari jadi alat menebak database nomor.
Daftar yang belum difilter tanggal tetap dibatasi 100 percakapan terbaru — itu bukan data hilang, itu batas tampilan yang disengaja.
Tiga layar untuk menjawab “bagaimana keadaannya” tanpa membaca satu per satu.
Angkanya mengikuti cakupan si pembaca. Admin dan User yang membuka halaman ini pada detik yang sama akan melihat angka berbeda. Itu benar, bukan bug — tapi jangan membandingkan tangkapan layar dari dua peran lalu menyimpulkan angkanya salah.
Tidak ada pustaka PDF di server — yang dipakai dialog cetak peramban, sengaja, supaya satu komponen lebih sedikit dirawat. Ukurannya A4 potret dan sudah diatur di CSS; kalau kamu mengubahnya ke Letter atau lanskap, kop dan tabelnya bergeser.
Angkanya harus persis sama dengan halaman Leads biasa — sempat ada bug yang membuat subquery salah menunjuk ke users.id padahal maksudnya accounts.id.
Model AI tetap bisa mengarang angka dengan yakin kalau dibiarkan menjawab langsung (terbukti di produksi: ditanya total leads bulan ini, dijawab “100” karangan). Karena itu pertanyaan yang meminta angka dicegat kode sebelum sampai ke model dan dijawab dari database — instruksi di dalam prompt saja tidak dianggap cukup.
Empat cara menyampaikan sesuatu ke seluruh tim — dan kapan masing-masing pantas dipakai.
Satu orang satu suara per kontribusi, ditegakkan di database. Lomba yang pemenangnya ditentukan jumlah vote tidak boleh bisa digandakan lewat klik dua kali atau dua tab.
Ambient. Pita yang selalu berjalan di atas semua halaman. Tidak ada sakelar untuk menghentikan geraknya — itu memang gunanya. Mata orang berhenti melihatnya dalam sehari, jadi pakai untuk kabar yang tidak wajib terbaca.
Interupsi. Muncul di atas dasbor, dibaca sekali, lalu hilang. Peramban menyimpan versi berita terakhir yang ditutup; begitu admin menulis berita baru, ia muncul lagi — sekali.
Bantuan di tempat. Tombol 💡 di kanan atas, berisi petunjuk khusus halaman yang sedang dibuka. Hilang di halaman yang belum punya tips.
Untuk pengumuman yang harus dilihat berulang sampai kejadiannya lewat. Pakai seperlunya — pop-up yang selalu muncul akan ditutup secara refleks dalam dua hari, dan setelah itu ia berhenti menyampaikan apa pun. Menyalakannya tidak menaikkan versi.
Tombol bantuan yang membuka panel kosong lebih buruk daripada tidak ada tombol: orang yang menekannya sedang tersangkut, dan panel kosong mengajarinya bahwa tombol itu tidak berguna — pelajaran yang tidak akan ia lupakan di halaman lain.
Satu-satunya tempat di sistem ini yang mengirim pesan tanpa manusia menekan kirim.
Jangan menaikkan batas-batasnya “supaya lebih cepat”. Inilah pola yang dianggap paling berisiko memicu ban. Batas 20/jam untuk jalur otomatis berbagi pencacah dengan balas manual — di hari sibuk, jatah mesin memang mengecil sendiri.
Riwayat kirimannya terlihat di halaman yang sama: ke siapa, dari nomor mana, kapan, berhenti karena apa.
Urut dari yang paling murah ke paling mahal. Tidak ada satu pun yang bisa dilewati — kalau salah satu gagal, pesannya ditunda ke pemindaian berikutnya, tidak pernah dipaksakan.
| Setelan | Bawaan | Artinya |
|---|---|---|
| Ulangi tiap berapa hari | 2 | Jarak antar putaran |
| Berhenti setelah (kali) | 5 | Maksimum putaran per lead |
| Rem: maks kirim/nomor/hari | 30 | Batas atas, bukan jadwal |
| Sebar waktu (menit) | 45 | Agar tak terkirim di jam yang sama |
| Jam kirim (WIB) | 9–17 | Di luar jam ini tidak ada yang dikirim |
| Berhenti kalau dibalas | ya | Lead yang menjawab tidak dikejar lagi |
Nomor yang mati berarti chat pelanggan berhenti masuk — dan yang paling dirugikan sedang bekerja di halaman lain.
Batas reconnect 10 kali per jam per nomor. Melebihi itu, nomornya ditandai needs_manual_rescan dan alert dikirim.
Kode QR berganti sendiri tiap ±45 detik; hitung mundurnya ditampilkan. Kalau gagal pindai, tunggu kode berikutnya — menutup lalu membuka lagi dialognya justru jalan yang lebih lambat. Pesan “Tidak dapat menautkan perangkat” biasanya berarti QR-nya sudah mati dari sisi kita, bukan HP-nya bermasalah.
Pairing lewat nomor telepon tetap milik admin. Jalur itu me-logout soket lama lebih dulu, jadi salah pakai sedikit saja bisa memutus sesi yang sebenarnya masih hidup.
Dua platform chat di luar WhatsApp, dan satu bot AI yang resmi dikecualikan dari larangan auto-reply.
Jendela balas resmi hanya 24 jam sejak pesan terakhir masuk — lewat dari itu tidak bisa dibalas dari sini. Token akses tersimpan terenkripsi dan kedaluwarsa, sewaktu-waktu perlu disambung ulang.
LIVE secara kode, belum bisa dipakai sungguhan. Kredensial SHOPEE_PARTNER_ID/SHOPEE_PARTNER_KEY di .env masih kosong, jadi tombol Hubungkan nonaktif. Modul Seller Chat Shopee juga digerbang whitelist resmi yang pendaftarannya tertutup sejak akhir 2024.
Larangan menyebut harga sempat dicabut pemilik 19 September 2026 — itu keputusan eksplisit yang pernah dibalik, bukan bawaan pabrik. Kolom “Belum dipilah” sengaja tidak dijawab bot.
Lead baru dibagi rata ke beberapa sales, dan hak jawabnya berpindah sendiri kalau didiamkan terlalu lama.
Yang dibagi hanya hak menjawab (assigned_to) — bukan mengirim pesan apa pun ke pelanggan, jadi tidak melanggar larangan blast CLAUDE.md §1. Peserta room juga bisa melihat nomor WA & isi lead di nomor room-nya sendiri.
Notifikasi WA ini sengaja tanpa batas harian dan tanpa jam kerja (keputusan sadar pemilik) — kalau nanti ingin direm, remnya belum ada di kode.
Di iPhone, push HANYA jalan kalau halamannya sudah ditambahkan ke Layar Utama — iOS mewajibkan ini, Safari biasa tidak bisa menerima push.
Dari outreach yang tetap dikirim manusia, sampai menyandingkan belanja iklan dengan chat yang benar-benar masuk.
“Outreach Health” di halaman analitik bukan ukuran risiko banned — sengaja tidak ada metrik seperti itu karena bisa menyesatkan. Uji nyata dengan kontak internal belum selesai dilakukan pemilik per catatan terakhir.
canViewAdSpend) — Tamu dikecualikan secara eksplisit, walau biasanya Tamu boleh buka halaman admin, karena halaman ini berisi angka belanja & omzet per orang.Nomor pelanggan berbentuk @lid (bentuk baru WhatsApp) sempat salah dituduh “iklan menunjuk nomor di luar CRM” — perlu tiga syarat sekaligus baru dianggap benar-benar bocor.
Hanya mengantre percakapan yang terbukti berasal dari iklan — sakelar mati tidak menimbun data untuk dikirim massal nanti. Scope Instagram sengaja dicabut dulu karena belum bisa dilacak akurat.
Snapshot lama (sebelum 3 Oktober) videonya sudah tidak bisa diputar karena tautan Meta kedaluwarsa. Hanya brand yang ditambahkan setelah 3 Oktober videonya diunduh & disimpan permanen.
Penjagaan “admin terakhir” bersifat atomik di database — dua admin yang saling menghapus pada detik yang sama tidak bisa mengunci semua orang di luar sistem.
Dua lapis, bukan satu: tombol yang disembunyikan tidak menghentikan siapa pun yang memanggil endpoint langsung dari HP-nya. Karena itu setiap route mutasi memeriksa ulang perannya sendiri.
Sebelum Kelola Tim ada (21 Sep 2026), 63 dari 72 user aktif tidak bertim sama sekali tanpa pesan error apa pun — tidak ada tombol untuk membuat tim utama atau memasukkan user biasa ke sebuah tim, walau tabelnya sudah lama ada.
Maskot bawaan kini XENO (robot raptor, sejak 19 Sep) — koin punya buku kas: tiap pergerakan tercatat satu baris dan tidak pernah diubah, dijaga trigger database.
| Koin dari balas cepat | 5 koin, maksimal 50 per hari |
| Syarat “balas cepat” | dijawab < 15 menit, balasan ≥ 20 karakter |
| Plafon XP harian | 120, dipakai bersama rawat & Arena |
| Wujud terbuka di level | Tunas 1 · Tumbuh 3 · Bersinar 6 |
| Koin bisa ditukar | kosmetik saja — bukan hadiah nyata |
| Siapa yang boleh main | semua peran kecuali Tamu |
| Tambahan terbaru | Kartu Koleksi (11 Sep, undian 8 karakter) & lapisan Tamagotchi (15 Sep: kotor/sakit/mengantuk, perlu diberi perhatian) |
Plafon terpisah berarti keran totalnya jumlah keduanya. Dengan satu plafon, Arena tidak pernah bisa menggantikan kerja: di hari yang produktif, jatah yang tersisa untuk bermain justru mengecil.
Kartu Koleksi tidak membuka karakter baru — murni kosmetik tambahan, supaya tidak jadi jalan pintas mengelabui harga toko.
RUNBOOK §1.7 menjalankan for f in infra/migrations/*.sql. Folder itu berisi
8 berkas, sedangkan migrations/ berisi 29. 21 migrasi hanya ada di
migrations/ — termasuk Auto Follow-up, Group Chat, Tugas, Grow Your Pet, Berita, dan Tips.
Artinya siapa pun yang memulihkan sistem sambil mengikuti RUNBOOK apa adanya akan
melewatkan seluruh fitur itu, dan pnpm db:verify tidak akan berteriak —
ia memeriksa daftar peran, bukan tabel fitur.
Salin migrations/*.sql ke
infra/migrations/, atau ubah perintah di RUNBOOK supaya membaca migrations/.
Semua berkasnya idempotent — aman diulang.
Migrasi database dulu, kode belakangan. Kalau dibalik, kode baru memakai kolom yang belum ada dan halamannya membalas galat 500.
Rem itulah yang melindungi 40+ nomor bisnis dari banned.
Auto Follow-up adalah pengecualian tunggal yang sudah disetujui pemilik.
Sistem ini soft delete saja — deleted_at, bukan DELETE FROM.
Kalau permintaannya “supaya semua orang bisa lihat semua”, konfirmasi dulu.
Ia satu-satunya jawaban untuk “siapa membuka percakapan siapa”.
Batas mingguan sudah dibuka 21 Sep 2026 (bawaan kini tanpa batas, direm per-room lewat MAX_ONBOARD_PER_WEEK di .env) — tapi menautkan belasan nomor dalam sehari tetap memicu deteksi WhatsApp. Sistem berhenti menahan; yang menahan sekarang manusianya.
Kalau sebuah permintaan bertabrakan dengan salah satu poin di atas, hentikan dan tanyakan ke pemilik proyek sebelum mengerjakannya. Metode QR linked device melanggar Terms of Service WhatsApp; risiko banned nyata dan menimpa nomor bisnis perusahaan.
Rincian tiap fitur ada di docs/PLAYBOOK.md — 23 bagian, dengan langkah dan jebakan yang tidak muat di slide. Kalau masih tersangkut, hubungi salah satu nama di bawah.
Buka dashboardnya
crm.sentaris.cloud
Masuk dengan akun dashboard masing-masing. Belum punya? Minta dibuatkan lewat kontak di samping — sebutkan perannya sekalian.
Dibangun & dioperasikan oleh
Jefferson Noah
0812-3133-3316
Safir A. Haq
0858-5525-2553
Richard
0877-1188-8881
WA Monitor CRM™ — Copyright © 2026 Jefferson Noah & Safir A. Haq. All Rights Reserved.
Dokumen internal. Berisi data pelanggan sungguhan — jangan disebarkan ke luar perusahaan tanpa izin pemegang hak.