Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 5 — Nhắc lịch, xử lý no-show và reschedule tự động

Đã đọc 0/10 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Đặt được lịch chưa phải xong. Tỉ lệ no-show phỏng vấn thực tế có thể 20–40%. Bài này xây lớp "vận hành lịch": nhắc đúng lúc, phát hiện vắng mặt, tự động mời lại — giảm no-show và cứu pipeline.

Vì sao cần lớp này

Mỗi no-show làm lãng phí 45–60 phút của interviewer và kéo dài thời gian tuyển. Phần lớn no-show đến từ quên hoặc kẹt lịch mà ngại báo. Agent giải quyết được cả hai bằng nhắc nhở và cho đổi lịch dễ dàng.

Chuỗi nhắc lịch theo thời gian (reminder cadence)

T-24h : Email nhắc + link đổi lịch ("nếu bận, đổi tại đây")
T-2h  : Tin nhắn ngắn (SMS/Zalo/Telegram) + link phòng họp
T-10m : Nhắc phòng họp lần cuối (nếu online)
T+5m sau giờ hẹn mà chưa join → kích hoạt luồng no-show

Mỗi mốc dùng kênh khác nhau vì hiệu quả khác nhau: email cho thông tin, tin nhắn cho tính cấp thiết.

Bước 1: Lên lịch job nhắc

Agent cần một scheduler (cron/queue) để "thức dậy" đúng lúc:

# Khi tạo interview, đăng ký các job nhắc
schedule_reminder(interview_id, at=start - timedelta(hours=24), channel="email")
schedule_reminder(interview_id, at=start - timedelta(hours=2),  channel="telegram")
# Job chạy: kiểm tra interview còn 'scheduled'? → gửi; nếu đã hủy → bỏ qua

Luôn kiểm tra trạng thái tại thời điểm gửi — đừng nhắc một cuộc đã bị hủy (mất uy tín).

Bước 2: Phát hiện no-show

Với phỏng vấn online (Meet/Zoom), dùng tín hiệu tham gia; với offline, cần interviewer đánh dấu:

def check_no_show(interview):
    if now() < interview.start + minutes(5):
        return
    if not interview.candidate_joined and not interview.marked_present:
        trigger_no_show_flow(interview)

Bước 3: Luồng no-show có nhân văn

Không kết luận vội "ứng viên bỏ cuộc". Cho cơ hội cứu vãn:

1. T+5m : gửi "Chúng tôi đang chờ bạn ở phòng họp, bạn có kịp không?" + link
2. T+15m: nếu vẫn vắng → đánh dấu no_show, gửi email "tiếc là lỡ hẹn, đặt lại?"
3. Cho phép TỰ đặt lại 1 lần qua link (không cần recruiter can thiệp)
4. Nếu no-show lần 2 → chuyển recruiter xử lý tay (đừng tự loại)

Bước 4: Reschedule tự phục vụ

Link đổi lịch nên tái dùng logic Bài 4: query free/busy mới → đề xuất slot mới → cập nhật event cũ thay vì tạo mới (giữ lịch sử).

def reschedule(interview_id, new_slot):
    verify_slot_free(new_slot)       # chống trùng lần nữa
    update_event(interview_id, new_slot)
    cancel_pending_reminders(interview_id)
    schedule_reminders(interview_id, new_slot)  # đặt lại chuỗi nhắc
    log("rescheduled", interview_id, new_slot)

Điểm dễ quên: hủy chuỗi nhắc cũ và đặt lại chuỗi mới, nếu không ứng viên nhận nhắc cho giờ đã đổi → rối loạn.

Khung tư duy "nhắc đủ, không phiền"

ĐÚNG lúc (T-24h, T-2h) — không spam mỗi giờ
ĐÚNG kênh — email dài, tin nhắn ngắn khẩn
ĐÚNG nội dung — luôn kèm hành động (join/đổi/hủy)
ĐÚNG trạng thái — chỉ nhắc cuộc còn hiệu lực

Checklist vận hành lịch

  • [ ] Có scheduler đăng ký job nhắc khi tạo interview
  • [ ] Kiểm tra trạng thái trước mỗi lần gửi
  • [ ] Cadence nhắc đa kênh (T-24h, T-2h)
  • [ ] Phát hiện no-show có ngưỡng thời gian
  • [ ] Cho tự reschedule 1 lần, lần 2 chuyển người
  • [ ] Reschedule hủy nhắc cũ + đặt nhắc mới

Sai lầm thường gặp

  • Nhắc một cuộc đã hủy. Do không check trạng thái tại thời điểm gửi. Gây bối rối và mất chuyên nghiệp.
  • Kết luận no-show quá nhanh. Đánh dấu ngay tại giờ hẹn là bất công (ứng viên có thể trễ 3 phút). Đặt ngưỡng 5–15 phút và gửi lời hỏi trước.
  • Không hủy nhắc cũ khi reschedule. Ứng viên nhận nhắc mâu thuẫn cho 2 giờ khác nhau.
  • Spam quá nhiều reminder. Nhắc mỗi giờ khiến ứng viên khó chịu, phản tác dụng.
  • Tự động loại sau no-show. Có thể ứng viên gặp sự cố thật; để người quyết định sau lần 2.
Bài sau: ứng viên trúng tuyển — ta chuyển sang tự động hóa checklist onboarding.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi