← Back to all projects

RSI

TravNow

Multi-tenant platform for deploying and managing vacation-destination microsites.

Timeframe
Nov 2025 — Present
Status
Active
Team Size
2
Domain
Travel & Tourism
Live site
TravNow cover

TravNow is a multi-tenant platform for launching and managing destination microsites — comprehensive local travel hubs for cities worldwide, each served under a shared, SEO-optimized design system. A single codebase resolves each site by its domain, blending editor-curated content with automated data pulled from a dozen travel APIs.

Built as a Turborepo monorepo, it pairs a Next.js (App Router + ISR) frontend with a Payload CMS backend and a visual page editor, all tenant-scoped by site. An OpenAI-powered enrichment pipeline scores and generates point-of-interest content, normalizing noisy third-party data (Foursquare, hotels, tours, Wikipedia) into consistent, high-quality listings.

  • Multi-tenant microsites resolved by domain with per-site content scoping (siteId)
  • Headless CMS (Payload 3) with Puck visual page editor and section/feature visibility toggles
  • AI-assisted points-of-interest enrichment pipeline (descriptions, scoring, category mapping)
  • Aggregated travel data: hotels, condos, tours/activities, restaurants and attractions
  • Hotel and tour booking flows with member accounts and saved listings
  • Role-based access control (superadmin / market admin / editor)
  • SEO system with dynamic metadata, sitemaps, structured data and ISR caching
  • Member authentication including Google OAuth

Problem

Serving many destination microsites from one codebase and database without content bleed between markets.

Solution

Built domain-resolution middleware and siteId-scoped Payload collections with role-based access so every query is automatically tenant-filtered.

Problem

Reconciling noisy, heterogeneous data from multiple third-party travel APIs into consistent, high-quality listings.

Solution

Implemented a tiered enrichment pipeline that normalizes API responses and uses OpenAI to score, map and generate point-of-interest content.

Languages

TypeScriptJavaScriptPHP

Frameworks

Next.js (App Router)React 19Payload CMS 3Puck EditorHono

Databases

MongoDB (Atlas / AWS DocumentDB)RedisDuckDB

Tools

Turborepopnpm workspacesTailwind CSS v4ZodDockerVitestPlaywrightESLintPrettierSharpFramer Motion

Infrastructure

Deployment
Vercel (frontend), AWS (CMS / API, EC2)
Cloud
AWS, Vercel, MongoDB Atlas
Containers
Docker
Other
AWS DocumentDB (TLS via global-bundle.pem), Redis cache handler, ISR / on-demand revalidation

Foursquare Places

Points-of-interest data and category mapping

FareHarbor

Tours and activities search/booking

Travcoding

Hotel search and booking

RSI Condo Engine

Condo/vacation-rental listings and bookings

GoHighLevel

Transactional email / CRM (e.g. password reset)

Google Places API

POI enrichment

Google Maps

Map rendering and location autocomplete

Google OAuth

Member authentication

Wikipedia

About-city content

Wikidata

Demographics and structured place data

OpenAI models power a tiered POI-enrichment pipeline: generating and scoring place descriptions, suggesting Foursquare category mappings, assembling evidence, scoring match confidence, and producing summaries.

Use Cases

POI description generation and quality scoringFoursquare category mapping suggestionsEntity match confidence scoringContent summarization / enrichment

Providers

OpenAI

Models

gpt-5-mini, gpt-5.4-nano

Have a project in mind?

Let’s talk about what you’re building and how Montgomery Labs can help ship it.

Start a project