All Startup Ideas

WhatsApp Tour Guide Guest Comms

Automate WhatsApp guest messaging for tour guides—confirmations, meeting pins, weather packing lists, FAQs, and review asks that still sound personal.

Independent tour guides do not lose bookings because their tours are bad. They lose them in the twenty-four hours before departure—when a guest opens the wrong Google Maps pin, shows up at last week's meeting point, or simply never arrives because the confirmation email landed in spam while they were on a flight. The guide is up at 11pm copying the same WhatsApp message to twelve different chats: "Meet at the blue door, not the main entrance. Bring water. Rain tomorrow—light jacket." By morning, three people have replied "Got it," four have not read it, and one is still asking where to meet even though they booked three weeks ago.

Built for Solo Founders, Side Hustlers, Non-Technical.

Suggested stack: Next.js 15 (App Router) + TypeScript, WhatsApp Cloud API (Meta), Supabase (Auth + Postgres), Stripe Billing, Claude API (claude-sonnet-4-6), OpenWeather One Call API. Weekend scope: about 10 hours.

The Problem

Independent tour guides do not lose bookings because their tours are bad. They lose them in the twenty-four hours before departure—when a guest opens the wrong Google Maps pin…

The Solution

TourChat (working name: Tour Buddy) is WhatsApp-first guest communications for independent guides—not another booking system. A guide connects their WhatsApp Business number once…

Market Research

$11.7 trillion projected global travel and tourism market by 2030, growing at roughly 5.6% CAGR from a 2023 base of $8.5 trillion (Grand View Research). Within that, guided…

Competitive Landscape

Peek Pro — Full tour-operator stack: booking, payments, POS, and guest messaging for high-volume operators. Strong for zipline parks and multi-guide companies. Pricing typically…

Business Model

Starter ($19/mo) — One WhatsApp number, up to 40 guest conversations per month, core automations (confirm, day-before pin, post-tour review), manual booking entry, basic FAQ bot…

Recommended Tech Stack

Next.js 15 (App Router) + TypeScript — Marketing site, guide dashboard, and API routes for webhooks. Server actions for booking CRUD; Edge-friendly timezone helpers for send…

AI Prompts to Build This

Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.

  1. 1. Project Setup

    Build the weekend MVP of "TourChat": an independent tour guide adds a booking and the guest automatically gets a WhatsApp confirmation, a day-before reminder with the meeting pin, a morning-of message and a review request. Guests can ask basic questions and get answers only from the guide's own FAQ.
    
    Stack: Next.js (App Router, TypeScript), Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link), the WhatsApp Cloud API with a test number and message templates you have had approved, the Anthropic API for the FAQ replies. A Vercel Cron route sends due messages. Deploy on Vercel.
    
    Tables (Row Level Security on, a guide reads only their own rows; the webhook writes through the service role):
    - guides(id, user_id, display_name, timezone, whatsapp_phone_id)
    - tours(id, guide_id, name, default_meeting_lat, default_meeting_lng, default_meeting_note, duration_min)
    - bookings(id, tour_id, guest_name, guest_phone, starts_at, meeting_override, guest_acknowledged boolean, opted_out boolean)
    - scheduled_jobs(id, booking_id, kind, run_at, status, attempts) kind is confirm, day_before, morning_of or review
    - message_log(id, booking_id, wa_message_id, kind, status, read_at)
    - faq_entries(id, guide_id, question, answer)
    
    Screens: /login, /tours, /bookings (add by hand or CSV), /log (what was sent and read), /faq.
    Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), WHATSAPP_TOKEN, WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_VERIFY_TOKEN, WHATSAPP_APP_SECRET, ANTHROPIC_API_KEY, CRON_SECRET.
    
    Do not build: billing, plans or a team tier, calendar sync, weather messages, a comparison with other tools, a guest payment link.
    Done when: npm run dev starts, you can sign in, and the six tables exist with Row Level Security on.
  2. 2. Core Feature

    Build the one feature that proves TourChat: the right message at the right time, never twice, and a guest question answered without inventing anything.
    1. When a booking is saved, create scheduled_jobs: confirm now, day_before at 24 hours before the start in the guide's timezone, morning_of at 3 hours before and review at the end of the tour plus 2 hours.
    2. GET /api/cron/send-due (protected by CRON_SECRET) takes pending jobs that are due, marks them processing and sends each through the WhatsApp Cloud API with the matching approved template. For day_before and morning_of also send a location message with the meeting coordinates. Make each job send once even if the cron retries. Log a clear error when a template is not approved.
    3. The webhook verifies Meta's signature, records delivered and read events in message_log and sets guest_acknowledged when the day-before message is read. If it is unread after 6 hours, show a notice on the guide's dashboard.
    4. For an inbound guest message, find the guest's booking by phone and load the guide's FAQ entries and the tour notes. Ask the Anthropic API to answer only from them. The prompt says never to invent a time, a price or a cancellation rule, and to reply exactly ESCALATE and a reason when unsure.
    5. Check in code that any number or time in the answer appears in the FAQ or booking data, or treat it as ESCALATE. On ESCALATE, tell the guest the guide will reply soon and notify the guide. Allow at most 10 FAQ replies per guest per hour.
    6. A guest who replies STOP gets opted_out set and no more messages.
    Rules: only message numbers the guide entered for a booking and respect the 24-hour reply window. Never send a free-text message outside it; use a template.
    Empty state: with no bookings, show the add form and the four messages that will be sent.
    Done when: a new booking creates four jobs at the right times in the guide's timezone, a cron retry sends a message once, a read receipt sets guest_acknowledged, an answer with an invented price is escalated and STOP ends all messages.
  3. 3. Landing Page

    Build a one-page landing site for TourChat, WhatsApp messages for independent tour guides.
    Hero: "Stop copy-pasting meeting pins at midnight." Sub: "WhatsApp confirmations, day-before pins, morning-of notes and review requests, sent for you, with answers to simple guest questions from your own FAQ." One button: Join the waitlist.
    Sections: the pain (no-shows, the wrong pin, confirmations lost in spam), how it works in five steps (connect WhatsApp, add bookings, messages are sent, guests ask questions, see who read the pin), and an FAQ on Meta's template approval, using it alongside your booking tool and how guest phone numbers are stored.
    Waitlist: store the email in a waitlist table in Supabase. No other service.
    Style: Geist, a warm stone background, one deep teal accent, one mock of a read-receipt list.
    Done when: the page renders on a phone and a submitted email appears in the waitlist table.
  4. 4. Branding Package

    Use a design or image tool for this one. A coding agent cannot draw a logo.
    Brand for TourChat: a wordmark and an icon of a location pin merged with a chat bubble tail.
    Colors: deep teal (#0D6E6E), warm sand (#F7F3ED), coral (#E07A5F) for alerts and charcoal (#1C1C1C). Type: Geist for the interface, Geist Mono for times and phone numbers.
    Deliverables: wordmark, icon, a favicon SVG concept, three sample day-before message texts under 1024 characters with {{guest_name}} and {{meeting_note}} placeholders, and one launch graphic. Voice rules: sound like a fellow guide, never say "leverage" or "synergy".
    Done when: each deliverable is saved in one folder and each sample message is under 1024 characters.