Nomadify — Multi-Agent AI Travel Orchestration Platform
Inspiration
Every year, millions of travelers — particularly from countries like India — face visa rejections not because they lack the means to travel, but because they fail to present coherent proof of intent. Flight bookings, itineraries, and financial documents exist in silos. A traveler might book a flight on MakeMyTrip, plan activities on TripAdvisor, and then scramble to assemble a convincing visa application from disconnected screenshots and PDFs.
We asked ourselves: what if a single intelligent system could unify the entire journey — from fare discovery to itinerary curation to visa readiness — with each agent's output feeding directly into the next?
That question became Nomadify. The idea was sparked during a conversation about how consulates evaluate "genuine travel intent." We realized this isn't just a documentation problem — it's an information architecture problem. The data already exists; it just isn't linked. Nomadify links it.
What It Does
Nomadify is a multi-agent AI travel orchestration platform composed of three specialized, interconnected agents:
SkyScout — the Flight Logistics Agent — performs real-time fare search grounded via Google Search Tool, normalizes results into a structured JSON schema, constructs deep-link booking URLs to MakeMyTrip and Goibibo, and generates pro tips (baggage rules, lounge access, transit visa reminders). It uses gemini-flash-lite-latest for city autocomplete and gemini-3-flash-preview with Google Search Tool grounding for fare retrieval.
WanderPlan — the Experience Architecture Agent — takes the destination and dates auto-filled from SkyScout's output and builds a full day-by-day itinerary structured into Morning, Afternoon, and Evening slots. Activities are retrieved from platforms like Klook, Viator, and TripAdvisor via grounded search. Every price is displayed in dual currency (local + home). A Deep Dive Curation module powered by gemini-3-pro-preview transforms selected activities into a rich markdown WanderGuide covering logistics, climate context, and hidden local gems.
VisaVault — the Compliance & Scoring Agent — ingests the user's financial profile, uploaded supporting documents (bank statements, employment contracts), and the linked itinerary and flight data from the other two agents. It runs a Profile Strength Analysis via grounded search against embassy portals, computes an Approval Score (0–100) based on financial health, social ties, and travel history, generates a Document Checklist, and offers a Consular Interview Simulator — a persistent chat session powered by gemini-3-pro-preview that role-plays as a consular officer asking pointed questions based on the user's actual application data.
The critical innovation is the cross-agent data injection: SkyScout's FlightResponse JSON becomes WanderPlan's date/destination seed and VisaVault's "Proof of Booking." WanderPlan's ActivityResponse JSON becomes VisaVault's "Proof of Plans." This linked travel proof activates a Bonus Protocol in VisaVault that automatically enhances the approval probability score.
How We Built It
The client layer is a React 19 SPA built with TypeScript and Tailwind CSS. The central App.tsx acts as a State Orchestrator, managing three pieces of shared state — selectedFlight, selectedItinerary, and userProfile — that flow between the three agent views (SkyScout View, WanderPlan View, VisaVault View).
The AI Gateway Layer uses the @google/genai SDK as a Browser-to-API Bridge, routing requests to the appropriate Gemini model tier:
| Model | Role |
|---|---|
gemini-flash-lite-latest |
Lightweight tasks — city autocomplete, pro tips generation |
gemini-3-flash-preview |
Grounded search tasks — fare retrieval, activity discovery, profile analysis |
gemini-3-pro-preview |
Reasoning-heavy tasks — deep dive curation, consular interview simulation |
All grounded search tasks use the Google Search Tool for real-time SERP grounding, pulling live data from external sources including MakeMyTrip, Goibibo, Klook, Viator, TripAdvisor, and Embassy Portals.
The data flow between agents follows a clear pattern. Solid arrows represent primary data flow within an agent. Dashed arrows represent cross-agent injection (flight data → itinerary seed, itinerary → visa proof). Dotted arrows represent external grounding via SERP.
The architecture deliberately keeps all orchestration client-side — there is no custom backend server. The @google/genai SDK handles all AI communication directly from the browser, making the entire application deployable as a static site.
Challenges We Faced
Structured output from grounded search. Gemini's Google Search Tool returns natural-language grounded responses, but SkyScout needed structured flight data (airline, times, stops, price) in a normalized JSON schema. We had to engineer prompts carefully to extract consistent, parseable JSON from inherently unstructured web-grounded responses, and build a robust JSON normalization layer to handle edge cases.
Cross-agent state consistency. When a user selects a flight in SkyScout, that selection must seamlessly propagate to WanderPlan (as destination + dates) and to VisaVault (as proof of booking). React state management at scale across three complex agent views with asynchronous AI calls required careful orchestration to avoid race conditions and stale state.
Dual-currency conversion accuracy. WanderPlan displays every activity price in both the local currency (e.g., ¥) and the traveler's home currency (e.g., ₹). Maintaining accurate, consistent conversion rates across dozens of activities while the data is being streamed from grounded search was a non-trivial UX and engineering challenge.
Consular Interview realism. The interview simulator needed to feel authentic — a consular officer who has actually read the applicant's file, spots inconsistencies (like a ₹100,000 annual income for a Tokyo trip), and presses on weak points. This required carefully constructed system prompts that inject the full application context into gemini-3-pro-preview's persistent chat session.
Rate limits and latency. With three agents making multiple concurrent Gemini API calls (some grounded, some not, across three model tiers), we had to implement careful request sequencing and loading states to stay within rate limits while keeping the UX responsive.
What We Learned
Building Nomadify taught us that the real power of multi-agent systems isn't in any single agent's capability — it's in the data contracts between agents. The moment SkyScout's flight JSON became VisaVault's proof of booking, the system's value became multiplicative rather than additive. We also gained deep experience with Gemini's model tiering strategy — knowing when to use flash-lite vs. flash-preview vs. pro-preview is as important as knowing how to prompt them. Finally, we learned that grounded search with structured output extraction is one of the hardest and most rewarding patterns in modern AI application development.
Built With
- browser-to-api
- client-side-state-orchestration
- cross-agent-data-injection
- css
- dual-currency-display
- embassy-portals
- gemini-3-flash-preview`
- gemini-3-pro-preview`)
- goibibo
- google-gemini-api-(`gemini-flash-lite-latest`
- google/genai`
- html
- javascript
- klook
- makemytrip
- multi-agent-orchestration
- persistent-chat-sessions
- react19
- real-time-grounded-search
- responsive-spa
- search
- serp
- tailwind
- tool
- tripadvisor
- typescript
- viator

Log in or sign up for Devpost to join the conversation.