How mayurbhapkarcts/buildwithgemini-personal-travel-ai-assistance works
Travel & Itinerary Concierge is an ADK-based conversational agent that turns traveler requests into personalized recommendations, itinerary information, and rich media/UI responses. The principal web flow runs from the browser through a FastAPI A2A proxy to the agent, which invokes domain tools and returns structured parts for display. The agent also has a local FastAPI serving surface, shared session/artifact services, and integrations for destination data, weather, currency, maps, cultural information, media generation, and persistent traveler memories. Tool-level source excerpts are partial; the README documents capabilities whose exact internal wiring is not shown.
Main entry points: tools.py Travel tools · agent.py Concierge agent · fast_api_app.py Local FastAPI app · main.py A2A web proxy
Components 32
Web interaction
- Chat UI
frontend/static/index.html - A2A web proxy
frontend/main.py
Agent serving
- Local FastAPI app
app/fast_api_app.py - A2A routes
app/app_utils/a2a.py - Reasoning adapter
app/app_utils/reasoning_engine_adapter.py - Concierge agent
app/agent.py - A2UI rendering
app/a2ui_utils.py
Travel capabilities
- Travel tools
app/tools.py - Destination search and details
app/tools.py - Weather forecasts
app/tools.py - Currency conversion
app/tools.py - Geocoding and nearby places
app/tools.py - Cultural and artwork lookup
app/tools.py - Poster generation
app/tools.py - Destination video
app/tools.py
Memory and artifacts
- Traveler memory
app/agent.py - Shared session and artifact services
app/app_utils/services.py
Other components
- Traveler
- Deployed agent
- Gemini model
- Destinations store
- Open-Meteo
- ExchangeRate API
- OpenStreetMap and places API
- Wikipedia and museum APIs
- Imagen
- Gemini Omni
- Vertex AI Memory Bank
- Session service
- Artifact service
- Cloud Storage
- Python execution sandbox
Connections 37
- Traveler → Chat UI: sends request
- Chat UI → A2A web proxy: posts chat
- A2A web proxy → Deployed agent: sends A2A message
- Deployed agent → A2A web proxy: returns parts
- A2A web proxy → Chat UI: renders reply
- Traveler → Local FastAPI app: submits request
- Local FastAPI app → Concierge agent: serves agent
- Local FastAPI app → A2A routes: registers routes
- Local FastAPI app → Reasoning adapter: registers routes
- A2A routes → Concierge agent: dispatches requests
- Reasoning adapter → Concierge agent: dispatches methods
- Concierge agent → Gemini model: interprets request
- Concierge agent → Travel tools: invokes tools
- Concierge agent → A2UI rendering: formats response
- A2UI rendering → A2A web proxy: emits UI data
- Travel tools → Destination search and details: includes
- Destination search and details → Destinations store: reads and writes
- Travel tools → Weather forecasts: includes
- Weather forecasts → Open-Meteo: requests forecasts
- Travel tools → Currency conversion: includes
- Currency conversion → ExchangeRate API: converts amounts
- Travel tools → Geocoding and nearby places: includes
- Geocoding and nearby places → OpenStreetMap and places API: queries locations
- Travel tools → Cultural and artwork lookup: includes
- Cultural and artwork lookup → Wikipedia and museum APIs: fetches information
- Travel tools → Poster generation: includes
- Poster generation → Imagen: generates artwork
- Travel tools → Destination video: includes
- Destination video → Gemini Omni: generates preview
- Concierge agent → Traveler memory: records preferences
- Traveler memory → Vertex AI Memory Bank: stores memories
- Local FastAPI app → Shared session and artifact services: gets services
- Reasoning adapter → Shared session and artifact services: gets services
- Shared session and artifact services → Session service: provides sessions
- Shared session and artifact services → Artifact service: provides artifacts
- Artifact service → Cloud Storage: stores artifacts
- Concierge agent → Python execution sandbox: executes Python