Inspiration
Travel planning is fragmented. After booking a flight and hotel, travelers still need to answer a separate question: what should we actually do there?
Most activity platforms start from an empty search box. They ignore context the traveler already provided, such as destination, dates, hotel area, traveler mix, arrival time, and free-time windows.
MoodTrip Experiences starts from the trip instead of starting from zero.
What it does
MoodTrip Experiences is an MCP-based ChatGPT app and companion website that finds tours, attractions, activities, and things to do using real Viator inventory.
Key capabilities:
Trip-aware discovery: Uses destination, dates, traveler mix, hotel area, arrival time, and available time windows to produce more relevant results. Natural conversation: Supports requests such as, “I land in Rome at 16:30 and stay near Piazza Navona. Find something I can do before dinner.” Global localization: The application automatically detects and supports all 11 Viator Affiliate content languages, with English fallback. Travelers can change language and currency globally. Provider content is requested directly from Viator in the selected language, without machine translation. Real provider data: Displayed facts map to provider fields. Schedule information is labeled clearly when it is indicative rather than real-time availability. Fast booking handoff: Each result provides a direct, tracked handoff to Viator while preserving affiliate attribution. Reusable travel context: The architecture supports signed, PII-minimized context transfer from MoodTrip Hotels and Adin Flights.
How we built it
The complete product infrastructure was built with Codex and GPT-5.6 during OpenAI Build Week. This includes the website, MCP server, ChatGPT plugin integration, Viator adapter, database layer, security controls, testing, deployment, and operational tooling.
The working MCP demonstrated through the ChatGPT plugin was also implemented with Codex and GPT-5.6.
Codex with GPT-5.6 served as the primary engineering agent for implementation, review, debugging, testing, and deployment. We first defined the product through a PRD, technical design, milestone plan, decision log, and operations documentation. Those specifications became structured instructions for Codex.
The project includes:
An MCP server using Streamable HTTP and JSON-RPC 2.0. MCP tools: activities_search, activities_get_product, and activities_booking_link. A working ChatGPT plugin experience with text-first responses and Apps SDK widget support. A server-side Viator Partner API adapter for search, product details, schedules, and tracked booking handoff. A Next.js website and serverless functions deployed on Netlify. An OpenAI Agents SDK conversational search experience on the public website. Neon Serverless Postgres for searches, clickouts, frozen attribution snapshots, reporting cursors, retention controls, and operational state. OAuth 2.1, audience isolation, rate limits, provider safeguards, and least-privilege database roles. Hourly booking-event reporting with cursor-based, idempotent ingestion. Localization across 11 supported languages. Accessibility, responsive, visual regression, unit, integration, MCP widget, keyboard, and security testing.
Codex accelerated the Viator adapter, MCP contracts, ChatGPT plugin integration, database migrations, serverless jobs, UI components, localization, test coverage, deployment configuration, and production troubleshooting.
Human-directed decisions included the trip-context positioning, provider-data integrity rules, attribution model, security boundaries, runtime cost controls, and production release gates.
Model usage clarification
GPT-5.6 and Codex built the entire product and infrastructure, including the MCP, website, integrations, database, security model, tests, and deployment architecture.
GPT-5.5 nano is used only for the public conversational search on the website as a runtime cost optimization. It was selected to reduce token cost for public traffic. It was not used to build the MCP or the underlying infrastructure.
Challenges we ran into
Differentiating from the supplier
During development, we found that Viator already had an official ChatGPT app. A generic conversational activity search would not be differentiated enough. We changed the product around a stronger advantage: using context from the traveler’s full trip.
Provider localization constraints
The application supports Viator’s 11 Affiliate content languages and provider-supported currencies. Unsupported browser languages fall back to English. Provider content is requested directly from Viator rather than machine-translated by MoodTrip.
Long attribution windows
A traveler may click today and complete an activity months later. Frozen attribution snapshots preserve the original source data so booking reporting remains correct through retention and deletion cycles.
Serverless reliability
The system required disciplined handling of pooled database connections, cold starts, retries, rate limits, and atomic cursor commits. Booking-event ingestion uses idempotent processing to avoid duplicate reporting.
Accomplishments that we are proud of
Built a working, end-to-end travel discovery product rather than a technical prototype. Built and deployed a working MCP that operates through the ChatGPT plugin. Created differentiated trip-context search across flights, hotels, and activities. Implemented production-oriented MCP, database, security, attribution, and reporting infrastructure. Added global localization across 11 supported languages. Added a public conversational website search while controlling production token cost with GPT-5.5 nano. Used measurable product research to reposition the app after discovering direct supplier competition.
What we learned
Conversational search alone is no longer enough. Context and workflow continuity create stronger differentiation. A detailed PRD and technical design make Codex with GPT-5.6 substantially more effective. Product constraints, data integrity rules, and operational requirements should be encoded into the development instructions before implementation begins. A lower-cost runtime model can serve public traffic while GPT-5.6 remains the engineering model used to build the full system.
What’s next
Launch signed, PII-minimized trip-context handoff from MoodTrip Hotels and Adin Flights. Run moderated usability tests across supported languages. Add real-time availability and richer review data after provider approval. Expand to multi-provider comparison. Package the experience as part of a broader MoodTrip travel app for ChatGPT.
Built With
- chatgpt-apps-sdk
- gpt-5.6
- json-rpc-2.0
- model-context-protocol
- neon-serverless-postgres
- netlify
- next.js
- oauth-2.1
- openai-codex
- react
- typescript
- viator-partner-api
Log in or sign up for Devpost to join the conversation.