Tôi cố tình để con bot KHÔNG tự đặt lịch — và đó là quyết định đúng
Tính năng mọi chủ spa nghe xong đều sáng mắt: "bot tự đặt lịch hẹn cho khách luôn hả em?". Tôi đã chủ động không làm điều đó. Và đó là một trong những quyết định tôi thấy đúng nhất.
Nghe như tôi lười. Thật ra ngược lại — bắt bot tự đặt lịch là phần dễ tưởng tượng nhất. Cái khó là nhận ra: làm nó lúc này là viết code cho một thực tại không tồn tại.
Bức tường tôi đâm phải: đối tác có API không?
Con bot tư vấn cho một spa thật. Spa đó đang quản lý lịch hẹn bằng một phần mềm của bên thứ ba. Và đây là câu hỏi tôi không trả lời được trong nhiều tuần: phần mềm đó có cho phép bot ghi lịch vào không?
Để bot tự đặt được một lịch hẹn, nó phải nói chuyện được với phần mềm kia — đọc xem khung giờ nào còn trống, rồi ghi một cái hẹn mới vào đúng chỗ. Cái cầu nối đó gọi là API. Nếu phần mềm đối tác không mở API, thì mọi giấc mơ "bot tự đặt lịch" của tôi đều là vẽ trên giấy.
Mà tôi thì không kiểm soát được phần mềm đó. Nó là của bên khác.
Đây là cú va đầu tiên của một người quen build cho chính mình khi bước ra làm cho khách thật: bạn không sở hữu cả thế giới quanh con code của bạn. Có những mảnh ghép nằm ngoài tầm với, và bạn vẫn phải ship.
Cái bẫy: chờ cho đủ rồi mới làm
Phản xạ sai mà tôi suýt mắc: "thôi cứ chờ, khi nào xác nhận được đối tác có API thì hẵng làm phần đặt lịch".
Chờ là chết. Trong khi tôi chờ một câu trả lời không nằm trong tay mình, con bot không lên được, khách không có gì để dùng, dự án đứng hình vì một thứ tôi không điều khiển.
Quyết định thật của một người ship một mình không phải là "làm cho hoàn hảo". Nó là: "phần nào tôi làm được ngay, không phụ thuộc ai, mà vẫn tạo ra giá trị thật?"
Và hoá ra, đặt lịch tự động không phải thứ khách cần trước. Thứ họ cần là không bỏ lỡ một khách đang muốn hẹn.
Lời giải: bot không đặt, bot tạo "yêu cầu đặt hẹn"
Tôi đổi câu hỏi. Thay vì "làm sao bot tự ghi lịch", tôi hỏi "làm sao bot không để rơi một khách muốn hẹn".
Câu sau dễ hơn nhiều, và không cần API của ai.
Bot tư vấn dịch vụ, hiểu khách muốn liệu trình gì, rồi khi khách tỏ ý muốn hẹn một khung giờ, nó không nói liều "đã đặt cho chị 3h chiều mai nhé". Nó tạo một yêu cầu đặt hẹn có cấu trúc — đầy đủ: khách nào, dịch vụ gì, mong muốn giờ nào — rồi đẩy thẳng cho nhân viên. Nhân viên là người mở phần mềm lịch, kiểm tra trống thật, nhập tay, và (nếu muốn) bot nhắn lại xác nhận cho khách.
Khách được phục vụ liền. Spa không mất một lead nào. Và tôi không phụ thuộc vào việc đối tác có chịu mở API hay không.
Một chi tiết nhỏ nhưng quan trọng về sự trung thực: ở chế độ này bot không khẳng định "giờ đó còn trống". Nó chỉ đề xuất khung giờ và nói rõ nhân viên sẽ xác nhận. Vì bot không có quyền đọc lịch thật, nó tuyệt đối không được giả vờ như có. Thà nói "mình ghi nhận, nhân viên xác nhận lại ngay" còn hơn hứa một slot rồi vỡ.
Mẹo kiến trúc: làm cho hôm nay, chừa cửa cho ngày mai
Đây là phần tôi muốn người mới build nhớ nhất.
Tôi không hardcode cái logic "đẩy cho nhân viên" rải khắp con bot. Tôi dựng một lớp trung gian — một cái "ổ cắm" với đúng hai việc: hỏi khung giờ trống và tạo một cái hẹn. Phần còn lại của bot chỉ biết nói chuyện với cái ổ cắm đó, không cần biết phía sau ổ cắm là ai làm.
Hôm nay, cắm vào ổ đó là bản "nhân viên xác nhận tay".
Mai kia, nếu đối tác mở API — hoặc spa đổi sang phần mềm có API — tôi chỉ việc rút phích cũ, cắm phích mới: một bản "tự đặt qua API". Toàn bộ con bot phía trên không phải sửa một dòng. Nó vẫn nói chuyện với đúng cái ổ cắm cũ, chỉ là phía sau giờ làm việc tự động.
Đó là khác biệt giữa code của một người tập làm và code của một người làm dịch vụ: không phải code "thông minh hơn", mà code biết chừa đường nâng cấp mà không phải đập đi xây lại.
Bài học mang đi
Có một cám dỗ rất lớn khi build sản phẩm: làm cái tính năng nghe oách nhất trước. Tự đặt lịch, tự làm tất, không cần người. Nó cho cảm giác mình giỏi.
Nhưng sản phẩm thật sống trong một thế giới đầy mảnh ghép bạn không sở hữu — API của người khác, quyết định của người khác, dữ liệu của người khác. Người ship được sản phẩm là người biết vẽ một đường ranh sạch: phần này tôi làm được ngay và làm cho tử tế; phần kia phụ thuộc bên ngoài, tôi để một con người gánh tạm và chừa sẵn chỗ để máy thay thế sau.
"Tự động hoá mọi thứ" là khẩu hiệu. "Tự động hoá đúng phần đang nằm trong tay mình, và thiết kế để mở rộng phần còn lại" — đó mới là nghề.
👉 Muốn tự tay đi qua đúng kiểu quyết định này trên con bot đầu tiên của bạn — biết phần nào nên để máy làm, phần nào nên để người làm, và viết code chừa đường lớn lên? Bắt đầu với mini-course miễn phí: Bot AI đầu tiên của bạn — làm xong trong một buổi tối, và bạn sẽ có một sản phẩm thật để bắt đầu nghĩ như một người làm dịch vụ.