An AI trip planner for Namibia (Python/FastAPI, curated database, OSRM routing, PDF export)
# First Light
Ein KI-gestützter Reiseplaner für Namibia. Ein adaptiver Fragebogen erfasst das Reiseprofil, und die
Engine baut daraus eine ehrliche, personalisierte Namibia-Route, ausschließlich aus einer kuratierten
Wissensbasis zusammengesetzt, nie erfunden.
First Light turns a traveler profile into an honest, personalised Namibia itinerary, assembled only
from a curated database and never invented. An adaptive questionnaire builds the profile, filters
shortlist the database, a local LLM matches and sequences the stops, OSRM draws the real driving
route on a relief map of Namibia, and the whole plan exports to PDF.
## Screens
*(The itinerary above was generated end to end from the bundled sample vault by the local model.)*
## What it does
- An adaptive questionnaire that captures interests, pace, budget, month, and traveler type
- A curated knowledge base of areas, lodges, and experiences, read as markdown with YAML frontmatter
- Filters that shortlist the database, then a local LLM that matches and sequences stops into a route
- OSRM routing along the real roads, drawn on a textured relief map with brand pins and a scale bar
- PDF export of the finished plan (WeasyPrint)
## The data
The real product reads Olli's Wildlife's private, curated Knowledge-Vault in place. **This public repo
ships a small sample vault** (`sample-vault/`) with a handful of well-known public places (Etosha,
Sossusvlei, Fish River Canyon, Swakopmund) so the tool runs standalone. Point it at another vault
with the `FYN_VAULT` environment variable, or drop the repo inside the full vault.
## Run it
Python 3.12+. The engine, filters, routing, and rendering run offline; only the final matching step
needs a local LLM.
```bash
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
GATE_DISABLED=1 .venv/bin/python webapp/app.py # serves
localhost on the sample vault
```
`GATE_DISABLED=1` skips the private-preview login gate for local use. For a **full it …