- Introduction
- Features
- Tech Stack
- Architecture
- Setup and Installation
- Usage
- AI and Data Processing
- Design Choices
- Challenges and Solutions
- Future Improvements
- Deployment
- Personal Note
AuraTrips is an innovative, AI-powered travel itinerary generator designed to create personalized travel experiences based on user preferences. LeveRAGing cutting-edge AI technologies, including RAG (Retrieval-Augmented Generation) and LLM (Large Language Models), AuraTrips curates dream vacations by synthesizing data from thousands of verified travelers' experiences.
This solution is focusing on creating a web application that generates tailored travel itineraries. AuraTrips goes beyond the basic requirements, offering a seamless, user-friendly interface coupled with powerful backend processing to deliver dynamic, detailed itineraries that cater to individual needs and preferences.
- ๐ฅ๏ธ User-friendly interface for inputting travel preferences
- ๐ค AI-powered itinerary generation using RAG and LLM technologies
- ๐ก Personalized recommendations based on budget, interests, and trip duration
- ๐บ๏ธ Integration with Google Maps API for location visualization
- ๐ฑ Responsive design for seamless use across devices
- ๐ User authentication and itinerary saving functionality
- FastAPI: High-performance, easy-to-use framework for building APIs
- SQLAlchemy: SQL toolkit and ORM for database operations
- Pydantic: Data validation and settings management
- Groq API: For accessing the LLaMA 3 language model
- Python 3.9+
- React: A JavaScript library for building user interfaces
- Vite: Next-generation frontend tooling
- Tailwind CSS: Utility-first CSS framework
- shadcn/ui: Re-usable components built with Radix UI and Tailwind
- React Router: Declarative routing for React applications
- Axios: Promise-based HTTP client for making API requests
- LLaMA 3: Open-source large language model for natural language processing
- RAG (Retrieval-Augmented Generation): For enhancing AI responses with external data
- CSV data ingestion: For processing local datasets of travel destinations
AuraTrips follows a modern, scalable architecture:
- Frontend: built with React, providing a responsive and interactive user interface.
- Backend API: FastAPI-powered RESTful API handling user requests, authentication, and AI processing.
- Database: SQLite for development, with easy file based makes it easy to deploy with backend.
- AI Processing: Integration with Groq API for accessing the LLaMA 3 model, enhanced with RAG for personalized recommendations.
- External Services: Google Maps API for location visualization and mapping features.
-
Clone the repository:
git clone https://github.com/anxkhn/auratrips.git cd auratrips/server -
Set up a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate` -
Install dependencies:
pip install -r requirements.txt -
Set up environment variables:
cp .env.example .envEdit the
.envfile with your specific configuration. -
Run the server:
uvicorn app.main:app --reload
-
Navigate to the client directory:
cd ../client -
Install dependencies:
npm install -
Set up environment variables:
cp .env.example .envEdit the
.envfile with your specific configuration. -
Run the development server:
npm run dev
- Open your browser and navigate to
http://localhost:5173(or the port specified by Vite). - Sign up / sign in or continue without signing to your AuraTrips account.
- Fill in your travel preferences, including destination, budget, interests, and trip duration.
- Click "Generate Itinerary" to receive your personalized travel plan.
- Explore and customize your itinerary as needed.
AuraTrips implements a RAG (Retrieval-Augmented Generation) model to leverage data from a local CSV file containing information about the best travel destinations. This approach allows us to provide more accurate and up-to-date recommendations by combining the power of large language models with real-world data.
The open-source LLaMA 3 model is used for curating and generating personalized itineraries. By utilizing this advanced language model, we can create more natural and context-aware travel plans that truly reflect the user's preferences and interests.
The RAG implementation involves the following steps:
- Data Ingestion: We process a CSV file containing verified travel destination data sourced from Kaggle. This dataset has information about 300+ destinations, and user ratings, providing a rich source of information for generating personalized itineraries.
- Retrieval: When a user inputs their preferences, we use this data to retrieve relevant information about potential destinations and activities.
- Generation: The LLaMA 3 model then uses this retrieved information, along with the user's preferences, to generate a tailored itinerary.
- FastAPI for Backend: Chosen for its high performance, easy-to-use async capabilities, and built-in support for OpenAPI documentation.
- React with Vite for Frontend: React provides a robust ecosystem for building interactive UIs, while Vite offers lightning-fast build times and hot module replacement.
- Tailwind CSS and shadcn/ui: Allow for rapid UI development with a consistent design language.
- RAG Implementation: Ensures AI-generated itineraries are grounded in real-world data and up-to-date information.
- LLaMA 3 via Groq API: Offers more control over the AI's outputs and potential for future fine-tuning.
- CSV Data Integration: Maintains a curated, high-quality dataset that can be easily updated and expanded.
-
Challenge: Integrating RAG with LLaMA 3 for accurate travel recommendations. Solution: Developed a custom pipeline that retrieves relevant information from our CSV dataset based on user preferences, then uses this context to guide the LLaMA 3 model in generating personalized itineraries.
-
Challenge: Unable to share with friends and family. Solution: Added a feature to share the itinerary by downloading it as a PDF file or printing it. Additionally, the unique link can be shared via email.
-
Challenge: Expensive to keep using LLaMA 3 model. Solution: Implemented caching of responses from the LLM to reduce the cost of using the model. Subsequent requests for the same itinerary are essentially free as they are hashed to get a unique id and stored in the database.
- Implement user feedback loops to continuously improve AI recommendations.
- Integrate real-time pricing and availability data from travel APIs.
- Develop a mobile app for on-the-go itinerary access and updates.
- Enable sharing of entire itinerary PDF with friends and family via email.
The backend is deployed on Railway and can be accessed at
https://auratrips-backend-pvt-production.up.railway.app.
The frontend is deployed on Vercel and can be accessed at
Made with โค๏ธ by Anas Khan