
A comprehensive destination information chatbot that provides real-time weather, news, events, and local time for any location worldwide. Built with LangGraph for workflow orchestration and multiple APIs for data collection.
Author: Sachin Ambe
Date: October 29, 2025
Description: This project is part of the ReadyTensor AAIDC (Agentic AI Developer Certification) curriculum, designed as a multi-agent system using LangGraph as the orchestration framework.
Role: Central coordinator and decision-maker
Responsibilities:
Key Capabilities:
Communication Pattern: Supervisor receives user input → determines requirements → broadcasts task assignments to worker agents → collects responses → produces final response
There are four specialized agents that operate independently but in parallel:
Purpose: Fetch real-time weather conditions for destination
API Integration: OpenWeatherMap API
Data Returned: Temperature, conditions, forecast, humidity, wind speed
Execution: Independent, asynchronous API call
Purpose: Retrieve current news and events for destination
API Integration: NewsAPI
Data Returned: Recent headlines, articles, publications, dates
Execution: Independent, asynchronous API call
Purpose: Discover local events and activities
API Integration: Tavily Search API
Data Returned: Event names, dates, times, descriptions, locations
Execution: Independent, asynchronous API call
Purpose: Geocode destination and determine local time
Capabilities: Latitude/longitude lookup, timezone determination, local time calculation
Data Returned: Coordinates, timezone offset, current local time
Execution: Independent computation
The system uses structured message passing via LangGraph's StateGraph.
Each worker agent receives a message, extracts relevant parameters, executes its assigned task. and returns structured response within timeout window
This is achieved via a LangGraph centralized state object (StateGraph) that all agents can read and write to.

git clone <repository-url> cd rt-aaidc-project2 pip install -r requirements.txt
Copy the example environment file and fill in your API keys:
cp env.example .env
Edit .env with your actual API keys:
# Required API Keys GROQ_API_KEY=your_groq_api_key_here NEWS_API_KEY=your_news_api_key_here OPENWEATHER_API_KEY=your_openweather_api_key_here TAVILY_API_KEY=your_tavily_api_key_here # Optional LANGSMITH_API_KEY=your_langsmith_api_key_here LANGSMITH_TRACING=false
python src/app.py
The Gradio interface will open in your browser at http://localhost:7860.
| Service | Purpose | Free Tier | Get Key |
|---|---|---|---|
| Groq | LLM for location extraction and report generation | 14,400 requests/day | console.groq.com |
| NewsAPI | News headlines | 1,000 requests/day | newsapi.org |
| OpenWeatherMap | Weather data | 1,000 requests/day | openweathermap.org |
| Tavily | Event search | 1,000 requests/month | tavily.com |
| Service | Purpose | Free Tier | Get Key |
|---|---|---|---|
| LangSmith | Tracing and monitoring | 1,000 traces/month | smith.langchain.com |
flowchart TD A[START] --> B[parse_query] B -->|Destination-related| C[geocode_location] B -->|Not destination-related| Z[normal LLM response] --> END C --> D[get_local_time] C --> E[get_weather] C --> F[get_news] C --> G[get_events] D --> H[aggregate_results] E --> H F --> H G --> H H --> END
The application uses a YAML-based configuration system. Edit config.yaml to customize:
rt-aaidc-project2/
├── src/
│ ├── models/ # Data models and state
│ │ ├── __init__.py
│ │ └── state.py
│ ├── services/ # External API services
│ │ ├── __init__.py
│ │ ├── geocoding.py
│ │ ├── weather.py
│ │ ├── news.py
│ │ ├── events.py
│ │ ├── time.py
│ │ └── llm.py
│ ├── nodes/ # LangGraph workflow nodes
│ │ ├── __init__.py
│ │ ├── location_nodes.py
│ │ ├── data_nodes.py
│ │ └── aggregation_nodes.py
│ ├── ui/ # User interface components
│ │ ├── __init__.py
│ │ └── gradio_interface.py
│ ├── app.py # Main application
│ ├── config_loader.py # Configuration management
│ └── destination_compass.py # Legacy file (deprecated)
├── config.yaml # Configuration file
├── requirements.txt # Python dependencies
├── MIGRATION.md # Migration guide
└── README.md # This file
config.yamlsrc/services/src/nodes/ if neededsrc/app.pyLANGSMITH_API_KEY in your .env fileLANGSMITH_TRACING=true in your .env file"API key not configured"
.env"No location data"
"Events temporarily unavailable"
Gradio interface not loading
Enable debug logging:
export LANGCHAIN_VERBOSE=true python src/app.py
This project is licensed under the MIT License - see the LICENSE file for details.