Cruise Booking & Itinerary System
Modular booking engine for cruise discovery, cabin availability, deck plans, and ancillary upsells.
Overview
Cruise shoppers need rich discovery (route, dates, ship amenities) and trustworthy cabin availability. I implemented a search and booking experience that merges multiple data sources, handles edge cases, and keeps performance high on media-heavy pages.
Problems We Solved
Approach
- Discovery and search quality
- Scoring by price per night, total duration, unique ports, and user prefs.
- Availability and consistency
- Reconciliation layer across supplier feeds; soft holds to prevent over‑sell.
- Media performance
- Progressive images via CDN + responsive
next/image; ship/deck lazy groups.
- Progressive images via CDN + responsive
- Upsells and UX
- Timed offers (beverage, Wi‑Fi, excursions) placed on decision points with clear value copy.
Reference Architecture
- Next.js (pages/app) for SSR + dynamic routes
- Node/TypeScript services for suppliers + reconciliation
- Redis caching; CDN for images and static data
- Queue workers for feed refresh and image processing
Outcomes
- 21–33% faster page loads on itinerary and deck pages
- 14% lift in search‑to‑details click‑through rate
- 9–12% increase in ancillary attach rate with context‑aware offers
Key Metrics
| Metric | Before | After | Delta |
|---|---|---|---|
| LCP (itinerary) | 3.2s | 2.3s | −28% |
| Search→Details CTR | 22% | 25% | +14% |
| Ancillary attach | 18% | 20–22% | +9–12% |
Delivery Timeline
- Discovery & modeling: 1 week
- MVP search + details + deck: 3–4 weeks
- Availability reconciliation + upsells: 2–3 weeks
Stack
- Next.js, Node/TypeScript
- Redis, Postgres, CDN images, queues
- OpenTelemetry, structured logs
Want a cruise booking flow that loads fast and sells more ancillaries? Let’s review your suppliers and current funnel metrics.
