AI Trip Planner
Eine Chat-App, die Reisen plant: Man beschreibt Ziel, Zeitraum, Budget und Vorlieben. Daraufhin stellt die KI bei Bedarf die nötigen Rückfragen, sucht (simulierte) Flüge und Hotels, und speichert am Ende einen strukturierten Reiseplan für jeden Tag in der Datenbank. Gebaut, um Next.js, NestJS, Prisma/Postgres und vor allem echte LLM-Tool-Use-Workflows und End-to-End-Tests praktisch zu lernen.


Warum so gebaut: Das Kernstück ist kein einzelner Prompt, sondern eine echte Agent-Schleife gegen die Anthropic-API (claude-haiku-4-5): Das Backend ruft messages.create mit einem tools-Array auf, führt angeforderte Tool-Calls aus (search_flights, search_hotels, save_itinerary) und gibt die Ergebnisse als tool_result zurück, bis das Modell keine weiteren Tools mehr braucht. Das save_itinerary-Tool hat ein festes JSON-Schema, das direkt auf das Prisma-Datenmodell abbildet. Die KI liefert also von sich aus strukturierte, typsichere Daten statt Freitext, den man später noch in die richtigen Daten parsen müsste.
Technisch interessant: Flug- und Hotelsuche sind bewusst simuliert (feste Testdaten). Der Punkt des Projekts ist die Orchestrierung und der Tool-Calling-Vertrag, nicht die Anbindung an echte Reise-APIs, auch wegen Kostengründen. Sicherheitsrelevant: Der Chat-Endpunkt erreicht die Anthropic-API, bevor irgendeine DB-Prüfung greift, weshalb der gesamte Endpunkt hinter Login liegt. Lediglich als Schutz vor API-Key-Missbrauch, nicht eine Prüfung pro Tool-Call. Ein Playwright-E2E-Test fährt den kompletten Ablauf (Login → Chat → Speichern) in CI gegen einen echten Postgres-Service-Container und die echte Anthropic-API.
Deployment: Vollständig als Infrastructure-as-Code über Bicep-Module nach Azure. Static Web Apps fürs Frontend, Container Apps mit Skalierung auf null (minimierte laufende Kosten) für die NestJS-API, Azure-Postgres-Flexible-Server, dazu Application Insights mit einem eigenen ItinerarySaved-Event für echtes Produkt-Tracking statt nur Standard-Request-Logging.