1. Vấn đề khách hàng gặp phải
Đơn vị này vận hành dịch vụ phà và minivan transfer từ cảng tại tỉnh Chumphon tới điểm đến trong tỉnh Surat Thani hơn 9 năm nay, có 2 tàu catamaran và 1 speed boat, tổng sức chứa 180-220 chỗ/chuyến, ngày khởi hành 3 chuyến vào high season (06:00, 13:00, 17:00), thời gian di chuyển 2.5-3 giờ tùy điều kiện sóng.
Vấn đề nặng nhất là tỷ trọng OTA và agent trung gian như 12Go Asia, Bookaway và các đầu mối địa phương chiếm hơn 75% tổng booking. Mỗi booking bị cắt commission 18-25% — với business có margin vốn đã mỏng (vé catamaran 600-900 baht/người, cộng chi phí nhiên liệu + lương thuyền trưởng + bảo dưỡng), mất commission cỡ này ăn vào hơn 35% lợi nhuận ròng hàng tháng.
Về operations, team admin 4 người mất hơn 7 giờ/ngày xử lý inquiry qua LINE OA + Facebook Inbox 150+ tin/ngày, toàn câu hỏi lặp về lịch tàu, giá, điểm đón-trả, giá combo transfer từ sân bay, giá lên đảo điểm đến + nối tàu sang đảo lân cận. Vấn đề lớn hơn là lịch tàu làm bằng Google Sheets share giữa 4 admin, không có locking mechanism — gặp double-booking 4-5 lần/tuần vào high season, khách walk-in đến cảng không còn chỗ, dẫn đến review xấu trên TripAdvisor và Google ảnh hưởng ranking lâu dài.
Một vấn đề nữa là 35-40% khách Tây đi thi PADI Open Water (thị trường certification lớn nhất thế giới) cần kênh thanh toán bằng thẻ credit USD/EUR, nhưng hệ thống cũ chỉ nhận chuyển khoản Thái Lan. Khiến phần lớn backpacker từ Australia, Germany, UK tránh thanh toán trực tiếp, chọn qua 12Go Asia dù đắt hơn 80-150 baht vì nhận thẻ và refund được.
2. Tại sao giải pháp cũ không hiệu quả
Khách hàng từng tự thử SEO bằng cách lấy Wix template mua từ 2022 gắn Yoast plugin, nhưng Wix không phải platform phù hợp SEO kỹ thuật — Core Web Vitals tệ liên tục (LCP 6.1s, CLS 0.42), Google crawl chậm và không index đủ. Với keyword chính như “ferry chumphon” hay “ตั๋วเรือชุมพร” rớt xuống trang 4-6 trong khi 12Go Asia, Bookaway chiếm trang nhất nhờ domain authority cao và programmatic SEO hàng chục nghìn trang.
Thử Google Ads bắn keyword CPC 28-45 baht, conversion rate 1.1%, CAC ra ở mức 1,800-2,400 baht/booking — vé giá 700 baht thì lỗ ngay. Còn Facebook Ads nhắm audience khách Tây đang tìm điểm đến — intent thấp vì người ta đang ở research phase chưa sẵn sàng đặt.
Hệ thống booking trước đó là Cognito Forms đẩy vào Google Sheet thủ công — không có real-time inventory, nghĩa là admin phải vào update sheet mỗi lần confirm booking mới. Mỗi người trên một tab thấy số chỗ khác nhau, đọc slip chuyển khoản bằng mắt mất 5-8 phút/slip.
3. Cách tiếp cận của Southern Whale (4 Pillars)
Sau discovery session 2 lần với chủ và admin lead, chúng tôi shadow operation tại cảng tỉnh Chumphon 1 ngày trọn vẹn trước khi vẽ kiến trúc.
Pillar 1: Real-time seat inventory engine — Chọn Next.js 14 + tRPC + PostgreSQL + Cloudflare Durable Objects cho WebSocket broadcast, mọi browser session thấy seat count update tức thì khi có booking mới + DB-level row locking ngăn race condition khi 2 admin book đồng thời.
Pillar 2: Bilingual SEO content hub — Astro static site vì Wix không thể compete — Astro ship pure HTML LCP <1.5s, hỗ trợ Thai + English ở /th và /en theo sub-path strategy. Viết 18 bài khởi đầu như “Chumphon Ferry Complete Guide”, “How Long is the Ferry from Chumphon Pier”, “Best Time to Visit Gulf Islands from Chumphon”, “PADI Dive Schools — Which is Right for You” — xây topical authority bao phủ top-of-funnel intent.
Pillar 3: Multi-currency payment + LINE bot — Nhận PromptPay cho khách Thái + Stripe cho khách Tây nhận Visa/Mastercard/Amex bằng USD, EUR, GBP, AUD + bot LINE intent classification 14 FAQ phổ biến để admin chỉ focus vào booking phức tạp.
Pillar 4: Schema + GBP local signal — Gắn Schema FerryReservation + LocalBusiness + FAQPage + AggregateRating, optimize GBP categories là “Ferry Service” + “Boat Tour Agency”, submit citations 35+ directory cả Thai (TripAdvisor TH) lẫn international (Klook, Get Your Guide, Viator).
Tech rationale: Chọn Astro cho trang public + Next.js backend thay vì monolith vì trang public cần static-gen cho SEO speed, còn booking flow cần stateful + real-time dùng Next.js + tRPC type-safe giảm bug giữa dev frontend/backend. Host trên Cloudflare Pages + Workers, chi phí hosting ~$30/tháng vs Vercel pro $20 × 4 seat = $80.
4. Quy trình triển khai (Week-by-Week)
Week 1-2: Discovery + Architecture Shadow tại cảng 1 ngày, stakeholder interview 2 lần, database schema design 18 tables (bookings, seats, departures, vessels, customers, payments, slip_verifications, line_messages, v.v.), keyword research 240+ keywords chia 4 cluster, competitor analysis 12Go Asia + Bookaway + Lomprayah.
Week 3-4: Backend Core + Inventory Engine Set up Next.js + tRPC + Prisma migrations, authentication 2-tier (admin + partner agency), booking domain logic + seat-level lock, payment integration PromptPay QR generator + Stripe Checkout (multi-currency).
Week 5-6: Frontend Booking Flow + Astro Site Customer-facing 3-step booking (chọn trip → nhập thông tin → thanh toán), admin dashboard mobile-first Thai UI, Astro static site Thai + English version, redirect URLs Wix cũ 301 → mới 28 routes.
Week 7-8: Real-time + LINE + OCR WebSocket inventory broadcast qua Durable Objects, LINE webhook + intent classification, FAQ chatbot 14 câu, OCR slip verification (Google Vision SCB/Kbank/Krungthai parsing) + manual review queue cho confidence <90%.
Week 9: Content + GBP + UAT Publish 18 bài SEO content hub (12 Thai + 6 English), GBP optimization, citations submission, UAT với 4 admin tìm ra 11 bug (4 high, 7 medium) fix hết trong 5 ngày.
Week 10: Launch + Training Soft launch 30% traffic qua feature flag 4 ngày, training admin 5 sessions (1.5 giờ/session tiếng Thái), full launch + 24-hour monitoring, knowledge transfer + Thai video tutorial 9 clip.
Sau launch bắt đầu retainer 6 tháng làm content hàng tháng 5 bài (Thai 3 + English 2), backlink outreach đến travel blog 15-20 contact/tháng, GBP post hàng tuần, performance monitoring.
5. Obstacles + Pivots
Obstacle 1: Sóng biển làm lịch thay đổi đột ngột — Vào monsoon (tháng 11 - tháng 1) tàu bị dời hoặc hủy thường xuyên. Hệ thống booking phải hỗ trợ rebooking + refund flow mà admin thao tác 1-2 click. Thêm “Trip Status Override” cho owner approve việc hủy/dời + push notification qua LINE đến mọi hành khách trong một batch.
Obstacle 2: Khách PADI dive school điểm đến xin partnership tier — Tuần 6 có dive school liên hệ xin làm partner gửi khách qua hệ thống (commission 8%), không nằm trong scope ban đầu. Làm contract amendment +30,000 baht, timeline dời 4 ngày, thêm agency portal + commission tracking — trở thành revenue stream mới mà chủ doanh nghiệp không hề mong đợi.
Obstacle 3: Stripe multi-currency settlement chậm 7-9 ngày — Admin lo về cash flow. Khắc phục bằng cách mở Stripe Express account settle tại Thái 2 ngày + lập buffer fund 200,000 baht cho 6 tuần đầu chuyển tiếp.
Obstacle 4: Google indexing chậm trong 3 tuần đầu — Site mới Google chưa trust. Thực hiện rapid indexing bằng cách submit sitemap, xin backlink nhanh từ 8 travel directory Thái, GBP post hàng ngày 14 ngày đầu. Tuần thứ 4 keyword “ตั๋วเรือชุมพร” lên page 1.
6. Post-launch + Ongoing
Kết quả trong 5 tháng:
- Organic traffic 240 → 4,680/tháng (+1,850%)
- Direct booking +240%, OTA dependency giảm từ 75% xuống còn 48% (mục tiêu 40% trong năm 2)
- Double-booking incidents 4-5 lần/tuần → 0
- Admin LINE response 3 giờ → 12 phút (chatbot handle 55%)
- Slip verification 5-8 phút/slip → 20 giây (OCR auto 88%)
- Booking phiên bản English chiếm 35% direct booking (trước đó 0% vì không có English site)
- LCP 6.1s → 1.3s
Bài học rút ra: Thị trường phà cạnh tranh ở trust signals chứ không phải giá — khách Tây xem review + safety record + bilingual content là decision factor hơn cả giá. Vé phà chúng tôi đặt cao hơn mức trung bình 5-8% nhưng conversion cao hơn vì trust đầy đủ. Có English content + Stripe trông chuyên nghiệp giúp digital nomad/backpacker market yên tâm.
Bài học khác là “schedule volatility” trong business ferry — solution tốt phải đối phó với disruption tự động, không chỉ optimize happy path.
Ongoing engagement: Hiện khách đang ở tháng thứ 7 retainer — đang trao đổi phase 2 mở rộng làm website + booking cho partner dive school điểm đến, dùng cùng playbook nhưng điều chỉnh persona là dive certification student (22-32 tuổi, khách Tây 70%). Xem thêm các case study khác.