Files
2026-09-18 19:30:05 +07:00

12 KiB
Raw Permalink Blame History

agen.md — Web Rekrutmen Karyawan (VC-Final)

Dokumen acuan kerja agen (spec + konvensi + roadmap). Status: SELESAI (MVP) — versi web sederhana sudah dibangun.


1. Ringkasan Proyek

Web sederhana untuk membantu HR mengelola data pelamar, memantau status rekrutmen, menyimpan berkas pelamar (CV, hasil test, portofolio), serta menghubungi pelamar via WhatsApp memakai template formal dari HR — termasuk reminder jadwal interview.

Nama perusahaan/aplikasi: E-recruitment.

Inti nilai: satu klik dari data pelamar → WhatsApp terbuka dengan pesan formal yang sudah terisi data pelamar, tinggal tekan kirim.


2. Keputusan yang Sudah Ditetapkan

# Topik Keputusan
1 Bentuk aplikasi Web sederhana, tanpa backend, tanpa login
2 Penyimpanan localStorage + fitur Export (unduh JSON) dan Import
3 Pengiriman WA Manual — user klik tombol, wa.me terbuka, user menekan "Kirim"
4 Status Baru, Screening, Interview, Diterima, Ditolak, Gagal/Tidak Melanjutkan
5 Isi pesan Formal, template dari HR, bisa diedit HR
6 Pengguna HR saja (single user)
7 Struktur file Dipisah per halaman
8 Nama perusahaan E-recruitment
9 Fitur tambahan Reminder WA interview + berkas CV/hasil test/portofolio

3. Ruang Lingkup

3.1 Termasuk

  1. CRUD data pelamar.
  2. Status rekrutmen + riwayat perubahan status.
  3. Jadwal interview (tanggal, jam, metode, lokasi/link).
  4. Dua tombol reminder: Reminder Pelamar (ke nomor pelamar) dan Reminder Pewawancara (ke nomor pewawancara).
  5. Tombol Reminder Interview → pesan WA jadwal interview.
  6. Berkas pelamar: CV, hasil test, portofolio (upload file dan/atau link).
  7. Manajemen template pesan formal.
  8. Pencarian & filter (nama, posisi, status, sumber).
  9. Ringkasan angka per status.
  10. Export & Import Excel (.xlsx/.xls/.csv) untuk data pelamar.
  11. Export & Import JSON (cadangan lengkap termasuk berkas).

3.2 Tidak termasuk

  • Login / multi-user / hak akses.
  • Kirim WA otomatis dari server (butuh WA Business API berbayar).
  • Payroll, absensi, kontrak kerja.

4. Alur Utama (User Flow)

A. Kelola pelamar

  1. HR buka web → daftar pelamar + ringkasan.
  2. Tambah/edit/hapus data pelamar, atur status.
  3. Lampirkan CV, hasil test, portofolio.

B. Hubungi via WhatsApp

  1. HR klik tombol WhatsApp pada baris pelamar.
  2. Muncul dialog: pilih template (otomatis sesuai status) + preview pesan.
  3. Klik Buka WhatsApp → tab/app WA terbuka dengan pesan terisi.
  4. HR menekan Kirim.

C. Reminder interview

  1. Untuk pelamar berstatus Interview, HR mengisi jadwal interview.
  2. HR klik tombol Reminder Interview.
  3. Pesan otomatis berisi hari/tanggal, jam, dan metode interview (dari data pelamar).
  4. HR kirim lewat WhatsApp.

D. Export

  1. HR klik Export → browser mengunduh file e-recruitment-backup-YYYYMMDD.json.
  2. File bisa dipakai untuk pindah perangkat atau cadangan.

5. Penyimpanan Data

  • Data utama di localStorage (key berversi, mis. erecruitment.v1).
  • Export JSON berisi seluruh data: pelamar, riwayat status, template, pengaturan.
  • Import JSON untuk memulihkan/menggabungkan data.
  • Berkas (CV/hasil test/portofolio): lihat bagian 6.4.

6. Fitur Detail

6.1 Data Pelamar

Field Wajib Keterangan
Nama lengkap
Nomor WhatsApp dinormalisasi ke format 62...
Posisi yang dilamar
Status default: Baru
Email
Domisili
Sumber pelamar Iklan / Referral / Walk-in / Job Portal / Lainnya
Tanggal melamar default hari ini
Catatan HR internal, tidak dikirim ke pelamar

6.2 Jadwal Interview

Field Keterangan
Tanggal interview dipakai untuk {{tanggal}} & {{hari}}
Jam interview dipakai untuk {{jam}}
Metode Online / Offline
Lokasi / Link meeting alamat kantor atau link (Zoom/Meet)
Nama pewawancara opsional, untuk catatan
No. WA pewawancara dipakai untuk Reminder Pewawancara

6.3 Status Rekrutmen

  1. Baru — baru masuk (default)
  2. Screening — sedang ditinjau
  3. Interview — dijadwalkan/dalam wawancara
  4. Diterima — lolos / direkrut
  5. Ditolak — tidak lolos seleksi
  6. Gagal / Tidak Melanjutkan — tidak hadir / mengundurkan diri / berhenti di tengah proses
  • Daftar status bersifat data (HR bisa ubah).
  • Setiap perubahan status dicatat: status lama, status baru, waktu.

6.4 Berkas Pelamar

Tiga slot berkas: CV, Hasil Test, Portofolio.

Setiap slot bisa diisi salah satu (atau keduanya):

  • Link/URL — mis. Google Drive. Paling ringan, direkomendasikan.
  • Upload file — PDF/gambar, disimpan sebagai data di browser.

Catatan teknis: localStorage hanya ±5 MB, sehingga file besar tidak muat. Rencana: file upload disimpan di IndexedDB (kapasitas jauh lebih besar), sedangkan metadata & link tetap di localStorage. Saat Export, isi file disertakan sebagai base64 (dengan peringatan bila ukuran backup besar). Tombol Lihat/Unduh dan Hapus tersedia untuk tiap berkas.

6.5 WhatsApp Direct + Template

  • Format link: https://wa.me/<nomor>?text=<pesan ter-encode>
  • Normalisasi nomor:
    • 08xxxxxxxxxx628xxxxxxxxxx
    • +62...62...
    • 8xxxxxxxxx628xxxxxxxxx
    • Buang spasi, -, ., (, ).
  • Placeholder yang didukung: {{nama}}, {{posisi}}, {{perusahaan}}, {{status}}, {{tanggal}}, {{hari}}, {{jam}}, {{metode}}, {{lokasi}}, {{pewawancara}}, {{hr}}, {{jabatan_hr}}
  • Template otomatis terpilih sesuai status; HR bisa ganti template lain.
  • Selalu ada preview pesan sebelum dibuka di WhatsApp.
  • Buka di tab baru (target="_blank" + rel="noopener").

6.6 Manajemen Template

  • CRUD template formal: nama, isi pesan, status terkait (opsional), aktif/nonaktif.
  • Tombol sisip placeholder.
  • Data perusahaan & nama HR diatur di menu Pengaturan.

6.7 Pencarian, Filter, Ringkasan

  • Cari: nama / nomor HP / posisi.
  • Filter: status, posisi, sumber.
  • Urutkan: tanggal melamar terbaru / nama.
  • Kartu ringkasan: total pelamar & jumlah per status.

7. Template Pesan Formal (draft awal)

Bahasa formal, sopan, mewakili HR. Ditandatangani nama HR & E-recruitment.

T1 — Konfirmasi lamaran (Status: Baru)

Yth. {{nama}},

Terima kasih atas ketertarikan Anda melamar posisi {{posisi}} di {{perusahaan}}. Lamaran Anda telah kami terima dan akan kami proses sesuai tahapan yang berlaku. Kami akan menghubungi Anda kembali apabila terdapat pembaruan.

Hormat kami, {{hr}} {{perusahaan}}

T2 — Undangan interview (Status: Interview)

Yth. {{nama}},

Sehubungan dengan lamaran Anda untuk posisi {{posisi}} di {{perusahaan}}, kami mengundang Anda untuk mengikuti tahap wawancara pada hari {{hari}}, {{tanggal}} pukul {{jam}} ({{metode}}). Mohon konfirmasi ketersediaan Anda melalui pesan ini.

Hormat kami, {{hr}} {{perusahaan}}

T3 — Reminder interview (Status: Interview)

Yth. {{nama}},

Kami mengingatkan kembali jadwal wawancara Anda untuk posisi {{posisi}} di {{perusahaan}} pada hari {{hari}}, {{tanggal}} pukul {{jam}} ({{metode}}). Lokasi/tautan: {{lokasi}}. Mohon hadir tepat waktu dan konfirmasi kehadiran Anda melalui pesan ini.

Hormat kami, {{hr}} {{perusahaan}}

T3b — Reminder interview ke Pewawancara (Jenis: Pewawancara)

Yth. {{pewawancara}},

Kami mengingatkan jadwal wawancara untuk kandidat berikut: Nama: {{nama}} Posisi: {{posisi}} Waktu: {{hari}}, {{tanggal}} pukul {{jam}} ({{metode}}) Lokasi/tautan: {{lokasi}}

Mohon konfirmasi kesediaan Anda. Terima kasih.

Hormat kami, {{hr}} {{perusahaan}}

T4 — Diterima (Status: Diterima)

Yth. {{nama}},

Dengan senang hati kami sampaikan bahwa Anda diterima untuk posisi {{posisi}} di {{perusahaan}}. Kami akan mengirimkan informasi lebih lanjut mengenai proses selanjutnya. Mohon konfirmasi kesediaan Anda melalui pesan ini.

Hormat kami, {{hr}} {{perusahaan}}

T5 — Ditolak (Status: Ditolak)

Yth. {{nama}},

Terima kasih atas waktu dan minat Anda melamar posisi {{posisi}} di {{perusahaan}}. Setelah melalui proses evaluasi, dengan berat hati kami sampaikan bahwa lamaran Anda belum dapat kami lanjutkan pada kesempatan ini. Kami menyimpan data Anda untuk peluang di masa mendatang.

Hormat kami, {{hr}} {{perusahaan}}

T6 — Gagal / Tidak Melanjutkan (Status: Gagal / Tidak Melanjutkan)

Yth. {{nama}},

Kami menindaklanjuti proses lamaran Anda untuk posisi {{posisi}} di {{perusahaan}}. Berdasarkan catatan kami, proses seleksi Anda tidak dapat dilanjutkan. Apabila terdapat kekeliruan, silakan menghubungi kami kembali.

Hormat kami, {{hr}} {{perusahaan}}

T7 — Follow-up (opsional)

Yth. {{nama}},

Kami ingin menindaklanjuti proses lamaran Anda untuk posisi {{posisi}} di {{perusahaan}}. Mohon berkenan memberikan konfirmasi atas pesan ini.

Hormat kami, {{hr}} {{perusahaan}}


8. Rencana Teknologi

Web statis murni: HTML + CSS + JavaScript. Tanpa framework, tanpa backend.

  • Tanpa build tool / npm install — cukup buka index.html di browser.
  • Data di localStorage; berkas di IndexedDB; backup via Export JSON.
  • Bisa di-host gratis (GitHub Pages/Netlify) atau dipakai lokal.

9. Struktur Folder

VC-Final/
├─ agen.md
├─ README.md
├─ index.html            # daftar pelamar + ringkasan + form
├─ template.html         # manajemen template pesan
├─ berkas.html           # (opsional) daftar/kelola berkas pelamar
├─ pengaturan.html       # data perusahaan & HR
└─ assets/
   ├─ css/style.css
   └─ js/
      ├─ store.js        # localStorage + IndexedDB + export/import
      ├─ phone.js        # normalisasi nomor HP
      ├─ whatsapp.js     # render template + build wa.me
      ├─ ui.js           # komponen tabel/kartu, form, modal, toast
      ├─ app.js          # logika halaman pelamar
      ├─ templates.js    # logika halaman template
      └─ settings.js     # logika halaman pengaturan

10. Konvensi

  • Bahasa UI: Indonesia.
  • Penamaan kode: Inggris; komentar boleh Indonesia.
  • Nomor HP: simpan phone_raw + phone_norm.
  • Template: teks biasa + placeholder {{...}}.
  • Tanggal: simpan ISO, tampilkan format Indonesia; ada helper hari (Senin, dst.).
  • UI: mobile-friendly, tombol WhatsApp besar & jelas, warna status berbeda.
  • Commit: Conventional Commits (feat:, fix:, docs:).

11. Roadmap

  • M0 — Diskusi & finalisasi spec
  • M1 — Struktur file + store (localStorage/IndexedDB) + data status & template default
  • M2 — CRUD pelamar + normalisasi no HP + validasi
  • M3 — Berkas pelamar (CV, hasil test, portofolio): link + upload, lihat, hapus
  • M4 — Tombol WhatsApp + pilih template + preview + render placeholder
  • M5 — Jadwal interview + tombol Reminder Interview
  • M6 — Manajemen template + halaman pengaturan (nama HR, E-recruitment)
  • M7 — Pencarian, filter, ringkasan
  • M8 — Export/Import JSON + polish UI
  • M9 — Upload berkas (IndexedDB + fallback) & Reminder Pewawancara
  • M10 — Export/Import Excel (.xlsx/.xls/.csv) + template Excel
  • (lanjutan) Login, kirim WA otomatis

12. Catatan / Asumsi

  1. Nama HR & jabatan dikosongkan dulu, diisi HR lewat halaman Pengaturan (dipakai di tanda tangan template).
  2. Format tanggal Indonesia: mis. Senin, 22 September 2025.
  3. Berkas upload dibatasi ukuran (disarankan ≤ 5 MB per file) dan tipe PDF/Gambar; link eksternal tidak dibatasi.
  4. Export menyertakan berkas yang di-upload, sehingga ukuran file backup bisa membesar — beri peringatan bila melebihi ambang tertentu.

13. Definisi Selesai (DoD)

  • HR bisa menambah, mengedit, menghapus, dan melihat daftar pelamar.
  • Status bisa diubah dan perubahannya tercatat.
  • Tombol Reminder Pelamar dan Reminder Pewawancara membuka wa.me dengan nomor yang benar & pesan formal terisi otomatis.
  • Tombol Reminder Interview menghasilkan pesan jadwal (hari, tanggal, jam, metode).
  • Berkas CV, hasil test, dan portofolio dapat diunggah/ditautkan, dilihat, dan dihapus.
  • Template bisa diedit HR tanpa menyentuh kode.
  • Pencarian, filter status, dan ringkasan berfungsi.
  • Export & Import data berfungsi.
  • Tampilan rapi di desktop dan HP.