A scalable FastAPI backend RAG incorporating live data collection, cleaning, geo-enrichment, semantic search and pluggable LLM answer generation
# 🌍 Travel Africa — Kenya Hotel Discovery & Trip Planning RAG Assistant
A FastAPI backend that helps travelers discover hotels and plan trips across
Kenya and East Africa, powered by a fully layered Retrieval-Augmented
Generation (RAG) pipeline — from data collection to a sourced, natural-language
answer.
> **Latest release:** `v2.1.2` — see CHANGELOG.md and the
> repository's tags for the complete version history,
> including how this project evolved from a manually curated seed dataset
> to a live, API-driven scraping pipeline.
---
## Table of Contents
- Overview
- Architecture
- Features
- Project Structure
- Data Sources
- Data Cleaning
- RAG Pipeline
- Tech Stack
- Getting Started
- Configuration
- Running the Backend
- Running the Frontend Template
- API Reference
- Ethical Scraping Guidelines
- Version History
- Known Limitations & Roadmap
- Impelmentation Highlights
- Visuals
- License
---
## Overview
Travelers researching Kenya & East Africa trips have to piece together
information from many scattered sites. **Travel Africa** answers
natural-language questions by
retrieving relevant, sourced hotel data and generating a grounded answer,
rather than an LLM guessing from general knowledge.
The assistant helps with:
- 🏨 Hotel discovery by location, budget, and category
- 🗺️ Multi-day trip planning across safari, coast, and culture themes
- 💬 Natural-language Q&A with cited sources for every recommendation
---
## Architecture
The backend is organized as a strict, independently-runnable pipeline —
each layer has one job and can be re-run on its own:
```
┌───────────┐ ┌───────────┐ ┌────────────┐ ┌────────────┐ ┌──────────────┐ ┌─────────┐
│ Scraping │ → │ Cleaning │ → │ Enrichment │ → │ Embeddings │ → │ Vector Store │ → │ RAG │
│ │ │ │ │ │ │ │ │ │ │ │
└───────────┘ └───────────┘ └────────────┘ └────────────┘ └──────────────┘ └─────────┘
app/scrapin …