8 menit

Cara Membuat Aplikasi Web untuk Alur Persetujuan Internal (Tanpa Kode)

Pelajari cara membangun aplikasi web persetujuan internal tanpa kode kustom: peta langkah, desain formulir, pengaturan peran, otomatisasi routing, tambahkan jejak audit, dan luncurkan dengan aman.

Cara Membuat Aplikasi Web untuk Alur Persetujuan Internal (Tanpa Kode)

Apa yang harus dilakukan aplikasi web persetujuan internal

Aplikasi web persetujuan internal adalah sistem untuk memindahkan sebuah permintaan dari “seseorang butuh sesuatu” menjadi “keputusan dibuat—dan kita bisa membuktikannya nanti.” Yang terbaik melakukan beberapa pekerjaan inti secara konsisten, meskipun proses spesifik berbeda antar tim.

Alur inti yang perlu didukung

Kebanyakan alur persetujuan internal mencakup:

  • Pengajuan permintaan: sebuah formulir yang menangkap detail yang tepat (dan lampiran) sejak awal
  • Tinjauan: satu atau lebih orang memvalidasi info, mengajukan pertanyaan, atau meminta perubahan
  • Setuju / tolak: keputusan yang jelas dengan alasan opsional dan langkah berikutnya
  • Pencatatan: menyimpan permintaan, keputusan, timestamp, dan komentar di satu tempat

Contoh nyata yang sering dijumpai

Pola yang sama muncul di banyak proses:

  • Permintaan pembelian (pemilik anggaran → keuangan → manajer)
  • Finalisasi konten (draf → legal → brand → publish)
  • Permintaan akses (karyawan → manajer → IT)
  • Pengecualian kebijakan (pemohon → compliance → pimpinan)

Kenapa no-code sering cukup

Alat tanpa kode sering cocok karena memungkinkan tim meluncurkan cepat, iterasi mingguan, dan menjaga kepemilikan di tangan orang yang menjalankan proses. Anda dapat membangun formulir, aturan routing, notifikasi, dan dasbor tanpa menunggu antrean pengembangan tradisional.

Kapan tetap perlu bantuan engineering

Libatkan engineer jika ada kasus pinggiran seperti routing kondisional yang sangat kompleks (banyak cabang), kebutuhan residensi data ketat, kendala SSO khusus, atau integrasi kompleks yang butuh middleware dan penanganan error yang kuat. Di banyak organisasi, no-code masih bisa menangani UI sementara engineering mengisi gap.

Jika Anda ingin sesuatu yang lebih mendekati “kustom” tanpa komitmen build penuh, platform vibe-coding seperti Koder.ai bisa menjadi solusi perantara: Anda mendeskripsikan alur lewat chat, dan platform menghasilkan app (umumnya React di frontend, Go + PostgreSQL di backend) dengan opsi ekspor source code, deployment/hosting, snapshot, dan rollback—berguna ketika proses persetujuan Anda mulai sederhana tapi perlu dikokohkan seiring waktu.

Pilih proses dan definisikan hasil

Sebelum membuka builder, pilih satu alur persetujuan internal untuk ditangani pertama. Tujuannya membuktikan nilai dengan cepat, lalu gunakan pola yang sama untuk alur persetujuan lain.

Mulai dengan alur “sakit tinggi, kompleksitas rendah”

Kandidat awal yang baik biasanya memiliki:

  • Banyak bolak-balik di email atau chat
  • Keputusan akhir jelas “ya/tidak”
  • Jumlah pemberi persetujuan sedikit (1–3) dan langkah yang bisa diulang

Contoh: permintaan pembelian di bawah ambang, persetujuan cuti, review konten/legal untuk template tertentu, atau onboarding vendor dasar.

Definisikan trigger (apa yang memulai proses)

Jelaskan dengan spesifik apa arti “pengajuan” dalam proses formulir-ke-persetujuan Anda:

  • Siapa yang mengajukan: pemohon, manajer, atau inbox tim bersama?
  • Data wajib: field apa yang harus diisi untuk membuat keputusan (jumlah, cost center, nama vendor, tanggal tenggat, justifikasi)?
  • Lampiran: file apa yang diharapkan (penawaran, draft kontrak, screenshot)?

Jika pemberi persetujuan rutin menanyakan detail yang sama, jadikan itu wajib di v1.

Daftar pemangku kepentingan dan titik keputusan

Tuliskan setiap orang (atau peran) yang terlibat dan di mana keputusan terjadi: reviewer, approver, keuangan, legal, dan setiap delegate untuk cuti. Catat juga keputusan “edge” seperti “kembalikan untuk edit” atau “minta info tambahan”, karena itu memicu sebagian besar tindak lanjut.

Tetapkan kriteria keberhasilan (bagaimana Anda tahu berhasil)

Pilih 2–3 hasil yang dapat diukur:

  • Waktu siklus lebih singkat (mis. dari 5 hari menjadi 2)
  • Lebih sedikit tindak lanjut (lebih sedikit pesan “Di mana ini?”)
  • Visibilitas status yang jelas (pemohon bisa melihat status terbaru sendiri)

Dengan start, finish, dan metrik keberhasilan yang didefinisikan, pilihan otomatisasi alur kerja menjadi lebih jelas.

Peta jalur persetujuan sebelum membangun

Sebelum menyentuh builder, petakan jalur persetujuan di satu halaman. Ini mencegah workflow yang “hampir bekerja”—di mana permintaan tersangkut, diarahkan ke orang yang salah, atau berputar tanpa akhir jelas.

Tuliskan sebagai langkah sederhana

Mulai dengan kerangka yang mudah dibaca keras:

Submit → Review → Approve/Reject → Close

Untuk tiap langkah, beri nama siapa yang melakukannya (peran atau tim), apa yang perlu mereka lihat, dan apa yang bisa mereka putuskan. Jika Anda tidak bisa mendeskripsikan satu langkah dalam satu kalimat, biasanya ada beberapa aksi yang harus dipisah.

Tentukan: review serial atau paralel

Jelas apakah review terjadi:

  • Serial: satu per satu (Pemohon → Manajer → Keuangan). Baik ketika urutan penting.
  • Paralel: beberapa reviewer sekaligus (Security + Legal). Baik ketika kecepatan penting.

Flow paralel perlu aturan untuk “selesai”: semua harus setuju, salah satu cukup, atau mayoritas. Pilih sekarang—mengubahnya nanti sering memaksa rebuild.

Definisikan perilaku penolakan

Penolakan bisa berarti:

  • Edit dan kirim ulang: permintaan kembali ke pemohon dengan komentar, sambil menyimpan histori.
  • Hentikan: permintaan ditutup sebagai ditolak, dan upaya baru dimulai dari awal.

Pilih yang benar untuk kepatuhan dan pelaporan. “Edit dan kirim ulang” umum, tetapi tetap rekam keputusan asli.

Tambahkan pengecualian yang terjadi di dunia nyata

Petakan jalur non-happy upfront:

  • Jalur mendesak: jalur cepat dengan visibilitas ekstra atau lebih sedikit langkah
  • Out-of-office: approver cadangan atau aturan delegasi
  • Timeout: pengingat, eskalasi, atau auto-reassign setelah X hari

Jika Anda menangkap ini di atas kertas dulu, pembangunan menjadi konfigurasi bukan tebak-tebakan.

Rancang data yang akan Anda tangkap dan simpan

Aplikasi persetujuan no-code bekerja terbaik ketika model data sederhana, konsisten, dan mudah dilaporkan nanti. Sebelum membangun layar, putuskan record apa yang Anda simpan dan bagaimana relasinya.

Mulai dengan model data inti kecil

Untuk sebagian besar alur persetujuan internal, Anda bisa menutupi 90% kebutuhan dengan beberapa tabel (atau koleksi):

  • Request: item utama yang disetujui (pembelian, pengecualian kebijakan, perjalanan, perekrutan, dll.)
  • Person: pemohon dan approver (sering diambil dari direktori)
  • Department: dipakai untuk routing, penganggaran, atau pelaporan
  • Approval decision: hasil tiap langkah (siapa yang memutuskan, apa keputusannya, kapan)
  • Comments: catatan diskusi terkait request (dan kadang terkait keputusan spesifik)

Jaga Request sebagai sumber kebenaran tunggal. Semua lain mengacu padanya.

Field wajib vs opsional (jaga v1 minimal)

Tentukan field yang harus ada untuk routing dan pengambilan keputusan. Field wajib tipikal:

  • Judul/summary permintaan
  • Pemohon (Person)
  • Departemen
  • Jumlah / dampak (jika relevan)
  • Tanggal dibutuhkan
  • Alasan / justifikasi

Semua lainnya bisa dimulai opsional. Anda selalu bisa menambahkan nanti setelah melihat apa yang benar-benar diminta approver.

Lampiran dan ekspektasi retensi

Putuskan sejak awal dokumen apa yang harus disimpan (penawaran, kontrak, screenshot) dan berapa lama.

  • Jika lampiran adalah bukti keputusan, simpan bersama Request.
  • Tetapkan aturan retensi (mis. simpan 12–24 bulan untuk permintaan operasional, lebih lama jika keuangan/legal memerlukan).
  • Klarifikasi apakah pengguna bisa menghapus/mengganti lampiran setelah submit.

Standarkan status

Gunakan set status kecil dan jelas agar semua menginterpretasikan progress sama:

Draft → Submitted → In Review → Approved / Rejected → Completed

Hindari membuat terlalu banyak status kustom awal. Field status konsisten membuat filter, pengingat, dan pelaporan jauh lebih mudah.

Bangun formulir dan halaman yang ramah pengguna

Aplikasi persetujuan yang baik menang atau kalah dari sisi usability. Jika orang enggan mengajukan permintaan atau tidak tahu apa yang terjadi selanjutnya, mereka akan kembali ke email.

Layar inti yang benar-benar Anda butuhkan

Sebagian besar alur dapat dicakup dengan sedikit halaman:

  • Formulir permintaan: tempat membuat request baru
  • Detail permintaan: satu tempat membaca request, melihat status, dan mengambil tindakan
  • Inbox approver: antrian item yang menunggu saya
  • Admin settings: kelola kategori, ambang, template, dan input routing

Jaga navigasi sederhana: “New request”, “My requests”, “Needs my approval”, dan “Settings” (untuk admin).

Formulir yang menanyakan lebih sedikit, tapi menangkap data lebih baik

Mulai dengan field wajib minimum, lalu gunakan field kondisional untuk menjaga formulir tetap pendek. Misalnya: hanya tampilkan “Detail vendor” jika “Tipe pembelian = Vendor baru”, atau tampilkan “Alasan pengecualian” hanya jika sebuah kotak kebijakan tidak dicentang.

Inilah kelebihan alat no-code: Anda bisa show/hide bagian berdasarkan dropdown, jumlah, atau departemen—tanpa membuat formulir terpisah.

Buat status dan langkah selanjutnya jelas

Pada setiap record permintaan, tampilkan:

  • Status saat ini (mis. Draft → Submitted → Manager review → Finance review → Approved/Rejected)
  • Siapa yang memegangnya sekarang
  • Apa langkah berikutnya (termasuk ambang yang bisa memicu persetujuan ekstra)

Indikator progres sederhana plus baris “Menunggu: <nama/peran>” menghilangkan sebagian besar pesan “Ada kabar?”

Kurangi bolak-balik dengan panduan dan validasi

Tambahkan teks bantu singkat dan contoh di bawah field yang rumit (“Lampirkan penawaran yang ditandatangani (PDF)”, “Gunakan cost center seperti 4102-Operations”). Gunakan validasi untuk mencegah pengerjaan ulang yang bisa dihindari: lampiran wajib untuk tipe request tertentu, rentang jumlah yang diperbolehkan, dan pesan error yang jelas.

Tujuannya lebih sedikit pertanyaan klarifikasi, keputusan lebih cepat, dan record yang lebih rapi untuk pelaporan.

Atur peran, izin, dan aturan routing

Ubah alur kerja Anda jadi aplikasi
Jelaskan alur persetujuan Anda di chat, lalu biarkan Koder.ai menghasilkan aplikasi kerja pertama.

Jika aplikasi persetujuan adalah sebuah gedung, peran dan izin adalah kunci dan gembok. Aturan routing adalah tanda lorong yang memastikan setiap request mendarat di meja yang tepat—tanpa dikejar manual.

Definisikan peran inti (dan gunakan konsisten)

Mulai dengan set kecil peran yang akan Anda gunakan ulang di banyak workflow:

  • Requester: membuat dan mengirim permintaan (mis. pembelian, pengecualian kebijakan, cuti)
  • Reviewer: memeriksa kelengkapan dan konteks; bisa mengembalikan untuk perubahan
  • Approver: membuat keputusan untuk sebuah langkah (manajer, kepala departemen, pemilik anggaran)
  • Finance / HR: approver spesialis untuk biaya, kepatuhan, atau aturan orang
  • Admin: memelihara workflow, field, dan akses; biasanya bukan approver

Tulis apa yang tiap peran bisa lakukan dalam bahasa sederhana sebelum menyentuh builder.

Tambahkan izin per langkah (lihat, komentar, edit, approve)

Persetujuan rusak ketika semua orang bisa melihat atau mengedit semuanya. Definisikan izin di tiap tahap:

  • Siapa yang bisa melihat request dan lampiran?
  • Siapa yang bisa komentar (dan apakah komentar terlihat oleh pemohon)?
  • Siapa yang bisa edit field (biasanya pemohon sebelum submit; edit terbatas saat review)?
  • Siapa yang bisa approve/reject, dan apakah mereka bisa meminta perubahan?

Default praktis: setelah submit, kunci field kunci (jumlah, vendor, tanggal), dan izinkan edit hanya lewat aksi “send back”.

Gunakan routing berbasis tim agar mengikuti struktur org

Mengunci nama tidak skalabel. Lebih baik aturan routing seperti:

  • Manager pemohon memberikan persetujuan pertama
  • Lalu route ke pemilik anggaran departemen jika jumlah melebihi ambang
  • Tambahkan Finance jika kode GL dipilih atau tipe belanja memerlukan oversight
  • Tambah HR untuk permintaan terkait orang (akses kontraktor, perubahan kompensasi)

Ini menjaga workflow akurat meski orang bergabung, keluar, atau pindah tim.

Rencanakan delegasi dan backup untuk mencegah macet

Persetujuan sering macet karena cuti dan beban inbox. Tambahkan:

  • Delegasi (approver bisa menunjuk delegate untuk rentang tanggal)
  • Approver cadangan (jika tidak ada aksi dalam X hari, route ke alternatif)
  • Aturan eskalasi (notifikasi ke manager-of-approver setelah timeout)

Aturan ini melindungi throughput tanpa mengorbankan kontrol.

Otomatisasi tugas, notifikasi, dan pengingat

Otomatisasi mengubah formulir sederhana menjadi alur persetujuan internal yang dapat diandalkan. Tujuannya sederhana: ketika request berubah status, orang berikutnya harus segera menerima tugas yang tepat—tanpa pengejaran manual atau copy-paste link.

Otomatiskan routing saat status berubah

Atur aturan seperti: Draft → Submitted → Manager Review → Finance Review → Approved/Rejected. Setiap perubahan status harus otomatis:

  • Menugaskan request ke approver berikutnya (atau antrian tim)
  • Memperbarui kepemilikan (siapa yang “pegang bola”)
  • Mengunci atau membuka field (mis. pemohon tidak bisa edit jumlah setelah submit)

Jaga aturan routing mudah dibaca. Jika perlu pengecualian (mis. “Jika jumlah > $5,000, tambahkan persetujuan CFO”), definisikan sebagai kondisi jelas terkait field data.

Tambahkan notifikasi yang benar-benar diperhatikan orang

Minimal, kirim dua jenis pesan:

  • “Needs your review”: mencakup judul request, jumlah/tipe, tanggal jatuh tempo, dan link langsung ke halaman persetujuan
  • “Decision made”: memberi tahu pemohon dan watcher, dengan keputusan, nama approver, dan komentar

Gunakan kanal yang sudah dicek perusahaan—email plus Slack/Teams jika tersedia. Jaga pesan singkat dan konsisten agar tidak terasa spam.

Pengingat dan eskalasi setelah tenggat

Persetujuan macet ketika tidak ada yang bertanggung jawab terhadap waktu. Tambahkan:

  • Pengingat X jam/hari sebelum tanggal jatuh tempo
  • Pengingat kedua setelah tanggal jatuh tempo
  • Eskalasi ke approver cadangan atau manager jika tidak ada aksi setelah N hari

Buat eskalasi dapat diprediksi (dan terlihat) agar approver percaya sistem.

Pengaman untuk mencegah duplikat dan persetujuan yang terlewat

Otomatisasi juga harus menghentikan mode kegagalan umum:

  • Blokir request duplikat dengan memeriksa field kunci (mis. vendor + nomor invoice)
  • Wajibkan field tertentu sebelum submit
  • Cegah “melewati langkah” dengan hanya mengizinkan perubahan status lewat tombol seperti Approve/Reject (bukan edit bebas)

Pengaman ini mengurangi pengerjaan ulang dan memastikan setiap request mengikuti jalur yang sama.

Tambahkan dasbor dan tracking untuk visibilitas

Miliki kode saat diperlukan
Pertahankan momentum sekarang dan tetap kendalikan nanti dengan ekspor kode sumber lengkap.

Aplikasi persetujuan hanya bekerja jika semua orang bisa melihat apa yang menunggu, apa yang macet, dan apa yang sudah selesai—tanpa bertanya. Dasbor mengubah “Di mana request ini?” menjadi jawaban swalayan.

Mulai dengan inbox persetujuan

Buat satu tempat yang bisa dipercaya reviewer setiap hari. Tampilan inbox Anda harus mencakup:

  • Item yang ditugaskan kepada saya (dengan prioritas dan langkah saat ini)
  • Akan jatuh tempo (berdasarkan SLA atau tanggal yang diminta)
  • Terlambat (diberi highlight, eskalasi ditangani di tempat lain)

Jaga setiap baris bisa diambil tindakan: pemohon, departemen, jumlah/tipe, tanggal diajukan, tanggal jatuh tempo, dan satu-klik approve/reject.

Tambahkan pencarian dan filter yang cocok dengan pertanyaan nyata

Sebagian besar tindak lanjut dapat diprediksi: “Tunjukkan semua request tertunda dari Sales bulan ini,” atau “Cari PO yang saya ajukan Selasa lalu.” Buat filter untuk:

  • Pemohon (dan/atau tim pemohon)
  • Departemen atau cost center
  • Status (draft, submitted, in review, approved, rejected, cancelled)
  • Rentang tanggal (submitted, updated, due)

Jika alat Anda mendukung, tambahkan saved views seperti “Pending tim saya” atau “Antrian finance.”

Lacak waktu siklus dan bottleneck—tanpa mengekspos detail sensitif

Dasbor tidak perlu menunjukkan setiap field untuk berguna. Fokus pada metrik operasional:

  • Rata-rata waktu untuk respon pertama
  • Rata-rata total waktu siklus
  • Request tersangkut per langkah (mis. “Persetujuan manajer”)
  • Tren volume (mingguan/bulanan)

Gunakan hitungan dan durasi teragregasi agar pemimpin bisa melihat langkah yang lambat tanpa melihat konten sensitif.

Rencanakan ekspor dan pelaporan sejak awal

Walaupun belum pakai tool BI, permudah pelaporan:

  • Ekspor CSV untuk daftar terfilter (mis. “Disetujui kuartal lalu”)
  • Tampilan/tabel “reporting” sederhana untuk keuangan atau kepatuhan
  • Jika tersedia, jadwalkan laporan yang dikirim ke mailbox bersama

Ini mengurangi permintaan ad-hoc dan membantu membuktikan workflow membaik dari waktu ke waktu.

Sertakan jejak audit dan tata kelola sejak hari pertama

Jika persetujuan berdampak pada pengeluaran, risiko, atau komitmen pelanggan, Anda butuh bukti—bukan hanya “Approved” sebagai status akhir. Tata kelola paling mudah (dan murah) ditambahkan saat merancang workflow, bukan setelah orang mulai mengandalkannya.

Bangun jejak audit yang menjawab pertanyaan nyata

Aplikasi Anda harus merekam riwayat yang jelas dari siapa melakukan apa, dan kapan. Minimal, log:

  • Perubahan status (Submitted → Approved/Rejected → Cancelled)
  • Komentar yang ditambahkan oleh approver
  • Edit field (apa yang berubah, nilai lama/nilai baru)
  • Reassign atau delegasi (siapa yang menyetujui atas nama siapa)

Buat view log audit bisa dilihat oleh admin dan reviewer, tapi jangan buka untuk semua orang secara default.

Wajibkan catatan persetujuan dan penolakan yang bermakna

Persetujuan tanpa konteks membingungkan di kemudian hari. Tambahkan komentar opsional saat approval, dan field alasan penolakan yang wajib. Ini mencegah outcome “Rejected” yang samar dan mempercepat pengiriman ulang karena pemohon tahu apa yang perlu diperbaiki.

Polanya praktis:

  • Penolakan mewajibkan alasan (dropdown + teks bebas)
  • Alasan disertakan di notifikasi dan disimpan di record
  • Pengiriman ulang membuat versi baru, tetap menyimpan histori

Kontrol akses data: least privilege sejak desain

Gunakan pendekatan least-privilege sehingga orang hanya melihat yang mereka perlukan:

  • Pemohon melihat request mereka sendiri
  • Approver melihat request yang ditugaskan ke mereka (dan opsional tim mereka)
  • Finance/Legal melihat kategori tertentu
  • Admin mengelola pengaturan dan melihat histori penuh

Jika alat Anda mendukung row-level permissions, gunakan itu. Jika tidak, pisahkan workflow sensitif ke app yang berbeda.

Kepatuhan dasar: retensi, penghapusan, dan review akses

Putuskan lebih awal berapa lama menyimpan record (mis. 1–7 tahun tergantung kebijakan), bagaimana penghapusan bekerja (soft-delete sering lebih aman), dan siapa yang meninjau akses tiap kuartal. Dokumentasikan aturan ini di halaman internal singkat dan tautkan dari app (mis. /policies/approvals).

Hubungkan ke alat yang sudah ada (tanpa engineering berat)

Alur persetujuan jarang hidup sendiri. Cara tercepat mendapat adopsi adalah menghubungkan app Anda ke sistem yang sudah dipakai: login, data HR, catatan keuangan, antrian ticketing, dan messaging.

Mulai dari identitas (SSO atau direktori pengguna)

Jika perusahaan Anda sudah memakai Google Workspace, Microsoft Entra ID (Azure AD), Okta, atau serupa, aktifkan SSO agar karyawan tidak perlu kata sandi baru.

Di luar kenyamanan, SSO membantu kontrol akses: Anda bisa memetakan grup (mis. “Finance”, “People Ops”, “IT”) ke peran di app persetujuan, mengurangi admin manual dan risiko orang salah melihat request sensitif.

Tarik konteks dari sistem sumber (HR, finance, ticketing, CRM)

Sebagian besar request butuh data referensi:

  • HR: nama karyawan, manager, departemen, cost center
  • Finance/ERP: detail vendor, kode anggaran, nomor PO
  • Ticketing: tipe request, prioritas, insiden/perubahan terkait
  • CRM: pemilik akun, ukuran deal, tahap kontrak

Gunakan konektor native jika tersedia supaya formulir bisa autofill dan aturan routing bisa membuat keputusan lebih tepat (mis. routing berdasarkan departemen atau ambang pengeluaran).

Gunakan webhooks/API saat tidak ada connector

Jika tool Anda tidak punya integrasi built-in, Anda tetap bisa menghubungkan tanpa membangun aplikasi kustom penuh. Banyak platform mengizinkan:

  • Mengirim webhook saat request diajukan/disetujui/ditolak
  • Memanggil API eksternal untuk membuat atau memperbarui record (mis. buat tiket, update field CRM)

Jaga payload sederhana: request ID, pemohon, keputusan, timestamp, dan field kunci yang dibutuhkan sistem target.

Rencanakan untuk error: retry, alert, dan fallback manual

Integrasi bisa gagal—token kadaluarsa, API rate-limit, field berubah. Bangun:

  • Retry otomatis dengan status “failed” yang jelas
  • Alert ke channel admin (email/Slack/Teams)
  • Fallback manual (tombol untuk men-run ulang sinkron, atau antrian yang bisa diproses admin)

Ini mencegah hasil “disetujui tapi tidak pernah dieksekusi” yang cepat merusak kepercayaan.

Uji, luncurkan, dan perbaiki workflow

Jalankan untuk tim Anda
Dari draf ke aplikasi internal yang dihosting, dengan deployment dan hosting bawaan.

Menguji workflow persetujuan internal bukan hanya “tombolnya jalan?” Tapi apakah orang nyata bisa memindahkan request nyata dari awal sampai akhir tanpa kebingungan atau solusi pengganti.

Uji dengan skenario nyata (bukan hanya happy path)

Buat beberapa request realistis dan jalankan seluruh proses:

  • Persetujuan dan penolakan (termasuk “tolak dengan perubahan” jika didukung)
  • Edit setelah submit (apa yang boleh diubah, dan siapa yang bisa mengubah)
  • Lampiran (batas ukuran file, penamaan, dokumen wajib)
  • Delegasi dan cakupan out-of-office (apa yang terjadi saat approver sedang cuti)

Amati bottleneck: field yang tidak jelas, konteks yang hilang untuk approver, dan langkah yang memaksa orang kembali ke email/chat.

Jalankan pilot dan kumpulkan feedback mingguan

Mulai dengan grup kecil—satu tim atau satu tipe request—dan jalankan pilot cukup lama untuk menemui edge case (biasanya 2–4 minggu). Jadwalkan cek-in singkat mingguan dan kumpulkan feedback di satu tempat (form atau doc bersama). Prioritaskan perbaikan yang mengurangi bolak-balik: kejelasan field, aturan routing, dan timing notifikasi.

Tulis panduan singkat yang orang akan baca

Jaga dokumentasi pendek dan praktis:

  • Layar mana dipakai untuk submit vs review
  • Contoh “request yang baik” (deskripsi dan lampiran yang kuat)
  • Ekspektasi respons (kapan komentar vs tolak)

Publikasikan di tempat yang sudah dikunjungi pengguna (mis. halaman internal seperti /help/approvals).

Luncurkan bertahap dan perbaiki pakai data

Perluas satu grup pada satu waktu. Gunakan metrik awal—waktu siklus, alasan penolakan, waktu di tiap langkah—untuk menyempurnakan aturan dan field formulir. Iterasi kecil (mingguan atau dua mingguan) menjaga kepercayaan tinggi dan mencegah workflow menjadi solusi pengganti.

Kesalahan umum dan cara menghindarinya

Walau memakai alat no-code, alur persetujuan bisa berantakan tanpa beberapa guardrail. Ini mode kegagalan yang sering memperlambat tim—dan cara praktis mencegahnya.

1) Mulai terlalu besar (terlalu banyak langkah atau field)

Insting umum adalah menangkap semua detail “untuk berjaga-jaga.” Hasilnya formulir tidak ada yang mau isi dan jalur persetujuan sulit dipelihara.

Mulai sederhana: field minimum untuk membuat keputusan, dan jalur persetujuan sesingkat mungkin yang masih memenuhi kebijakan. Luncurkan, amati titik macet, lalu tambahkan hanya yang benar-benar diperlukan.

2) Kepemilikan aturan dan akses tidak jelas

Aturan routing, daftar approver, dan akses berbasis peran butuh pemilik yang jelas. Jika tidak ada yang mengurus workflow, pengecualian menumpuk, akses kadaluarsa, dan persetujuan terblokir saat seseorang mengubah peran.

Tunjuk pemilik proses bernama (dan backup). Taruh perubahan aturan di proses perubahan ringan (bahkan checklist singkat), dan jadwalkan review bulanan grup approver dan izin.

3) Kurangnya visibilitas untuk pemohon

Jika pemohon tidak bisa melihat status atau approver berikutnya, mereka akan mengejar orang secara manual—mengalahkan tujuan otomatisasi.

Sertakan halaman status dengan: tahap saat ini, waktu terakhir diperbarui, approver berikutnya (atau tim), dan SLA estimasi. Tambahkan dasbor sederhana agar manajer bisa melihat titik macet.

4) Tidak ada jalan keluar untuk pengecualian dan item mendesak

Workflow nyata punya edge case: permintaan mendesak, approver cuti, atau pengecualian kebijakan.

Bangun penanganan pengecualian yang aman: flag “urgent” yang memicu jalur cepat terdefinisi, aturan delegasi, dan override terkontrol yang memerlukan alasan dan direkam di jejak audit.

Jika Anda mengantisipasi perubahan sering pada logika workflow (ambang baru, approver tambahan, tipe request baru), pertimbangkan pendekatan build yang mudah diiterasi tanpa kehilangan tata kelola. Misalnya, tim menggunakan Koder.ai untuk menghasilkan dan mengembangkan app workflow internal dengan cepat dari spesifikasi berbasis chat, sambil tetap menjaga opsi ekspor source code dan penegakan kontrol lebih ketat saat proses matang.

Pertanyaan umum

What’s the best first internal approval process to build?

Mulailah dengan satu alur kerja yang high pain, low complexity:

  • Banyak bolak-balik saat ini (email/chat)
  • Keputusan jelas ya/tidak
  • Hanya 1–3 pemberi persetujuan

Contoh: permintaan pembelian di bawah ambang tertentu, persetujuan cuti, atau alur permintaan akses dasar. Buktikan nilai dulu, lalu ulangi pola yang sama untuk alur lain.

What fields should an approval request form include?

Tangkap data minimum yang diperlukan untuk mengarahkan dan memutuskan. Field wajib umum:

  • Judul/summary
  • Pemohon
  • Departemen atau cost center
  • Jumlah/dampak (jika relevan)
  • Tanggal dibutuhkan
  • Alasan/justifikasi

Jika pemberi persetujuan sering meminta detail tertentu (mis. nama vendor atau penawaran), jadikan itu wajib di versi pertama.

What pages are essential in a no-code approval web app?

Sebagian besar aplikasi hanya butuh beberapa layar inti:

  • Formulir permintaan baru
  • Halaman detail permintaan (status, komentar, lampiran, aksi)
  • Inbox pemberi persetujuan (antrian “butuh persetujuan saya”)
  • Admin/pengaturan (input routing, ambang, template)

Sederhanakan navigasi agar pengguna mudah menemukan “New request”, “My requests”, dan “Needs my approval”.

What statuses should I use for internal approvals?

Gunakan set status kecil dan standar agar filter, pengingat, dan laporan mudah:

  • Draft
  • Submitted
  • In Review
  • Approved / Rejected
  • Completed

Jika perlu detail lebih, tampilkan langkah saat ini (mis. “Manager review”) sebagai field terpisah daripada menambah banyak status kustom.

Should my approval flow be serial or parallel?

Pilih berdasarkan apakah urutan penting atau kecepatan lebih penting:

  • Serial (satu per satu): bagus ketika tiap langkah tergantung pada langkah sebelumnya.
  • Paralel (bersamaan): bagus untuk percepatan.

Untuk review paralel, tetapkan aturan penyelesaian: semua harus setuju, siapa saja, atau mayoritas—mengubah aturan ini nanti sering memaksa pengerjaan ulang.

How should I handle rejections and resubmissions?

Putuskan apa arti “ditolak” bagi proses Anda:

  • Edit dan kirim ulang: dikembalikan ke pemohon dengan komentar, sambil mempertahankan riwayat.
  • Berhenti: request ditutup sebagai ditolak; percobaan baru dimulai sebagai request baru.

Bahkan dengan edit/kirim ulang, simpan catatan audit keputusan asli dan alasan penolakan.

How do roles and permissions typically work in an approval app?

Definisikan peran dan izin per tahap:

  • Pemohon: membuat/mengirim; hanya bisa edit sebelum submit
  • Reviewer: memberi komentar; bisa minta perubahan
  • Approver: approve/reject (opsional komentar wajib)
  • Admin: mengelola routing, field, dan akses

Guardrail praktis: setelah dikirim, kunci field kunci (jumlah/vendor/tanggal) dan hanya izinkan perubahan lewat aksi “send back”.

How do I set up routing rules that scale as the org changes?

Gunakan aturan berbasis organisasi daripada mengunci nama orang:

  • Arahkan ke manager pemohon terlebih dahulu
  • Tambahkan budget owner jika jumlah melebihi ambang tertentu
  • Tambahkan Finance/HR/Legal berdasarkan kategori, tipe pengeluaran, atau kode yang dipilih

Ini membuat routing tetap akurat saat orang pindah peran atau tim.

How do I prevent approvals from getting stuck when someone is out of office?

Tambahkan aturan pencegah macet sejak awal:

  • Delegasi (delegate untuk rentang tanggal saat cuti)
  • Pengingat sebelum/sesudah tanggal jatuh tempo
  • Eskalasi setelah N hari (approver cadangan atau manager-of-approver)

Buat perilaku eskalasi terlihat dan konsisten agar sistem terasa dapat diprediksi.

What should an audit trail and governance include for internal approvals?

Catat cukup detail untuk menjawab “siapa melakukan apa, kapan, dan mengapa”:

  • Perubahan status dengan timestamp
  • Keputusan persetujuan (approver, hasil, komentar)
  • Edit field (nilai lama/nilai baru)
  • Reassign dan delegasi

Tetapkan ekspektasi retensi dini (mis. 12–24 bulan untuk permintaan operasional, lebih lama untuk keuangan/legal) dan gunakan prinsip least-privilege agar pengguna hanya melihat yang perlu mereka lihat.

Related posts