FareWeave vereint Bahnverkehr, Split-Tickets, Deutschlandticket, Flix-Angebote, Flugreisen, Transfers und Hotelbuchungen in einer selbst gehosteten Reiseplanung – ganz ohne den Einsatz von Künstlicher Intelligenz.
Ursprünglich stand lediglich der Wunsch im Raum, Split-Tickets wieder auf eine komfortable Art und Weise ermitteln zu können. BetterBahn erwies sich hierfür über einen langen Zeitraum als äußerst nützlich. Man gab die gewünschte Verbindung ein, prüfte, ob zwei separate Fahrkarten günstiger waren als ein durchgehendes Ticket, und war fertig. Bei den jüngsten Anfragen jedoch funktionierte dieser Dienst nur noch bedingt zuverlässig. Eine Alternative musste her. Aus dieser Notwendigkeit heraus entstand schließlich FareWeave, das sich sogar auf dem eigenen Server betreiben lässt.
FareWeave war zunächst nur als BetterBahn-Ersatz gedacht
Daher begann ich, mir diese Funktionalität eigenständig zu programmieren. FareWeave sollte den regulären Preis der Deutschen Bahn abfragen und parallel dazu überprüfen, ob sich die identische Strecke mit getrennten Tickets kostengünstiger kombinieren lässt. Mehr war anfänglich nicht geplant.
Wer eine umfangreichere Reise eigenständig zusammenstellt, kennt die damit verbundenen Herausforderungen. Zuerst öffnet man die Internetseite der DB, anschließend die von Flix und danach ein oder gleich mehrere Flugportale. Für die Anreise zum Flughafen kommt eine weitere Suche hinzu. Am Zielort wird unter Umständen ein Transfer benötigt, und bei einem mehrtägigen Aufenthalt womöglich auch eine Unterkunft. Am Ende hat man eine Vielzahl an Tabs geöffnet und muss selbst ermitteln, ob die gefundenen Bausteine überhaupt zusammenpassen. Natürlich auch, welche Gesamtkosten letztlich entstehen.
Genau dieser Aufwand sollte reduziert werden. FareWeave ist darauf ausgelegt, möglichst viele dieser Recherchen an einer zentralen Stelle zu bündeln. Bei einer gewöhnlichen Fahrt innerhalb Deutschlands gehören dazu die Deutsche Bahn, das Deutschlandticket, Split-Tickets, FlixTrain und FlixBus. Bei weiter entfernten Zielen können Flug, Zubringer zum Flughafen, Transfer vor Ort und Unterkunft ergänzend hinzukommen.
Hierfür benötige ich weder ein Reisebüro, noch muss ich dutzende Webseiten einzeln durchsuchen. Auch eine KI, die darüber rätselt, ob eine Verbindung plausibel sein könnte, ist nicht gewünscht. FareWeave operiert auf Basis der ermittelten Daten und fest definierter Regeln. Die Uhrzeiten müssen übereinstimmen, die Anschlüsse erreichbar sein. Selbstverständlich muss der angezeigte Preis auch zu dem jeweiligen Ticket gehören.
Die Version 0.0.1 ist mittlerweile auf GitHub öffentlich zugänglich.
Der Code von BetterBahn ist darin nicht enthalten. FareWeave stellt weder einen Fork noch eine überarbeitete Fassung davon dar. BetterBahn war lediglich der Auslöser dafür, die Split-Ticket-Suche zu einem späteren Zeitpunkt eigenständig neu zu implementieren. Dennoch gilt dem Projekt unser Dank für die, wenn auch unbeabsichtigte, Motivation.

Split-Tickets direkt beim DB-Preis
Verlangt die Deutsche Bahn für eine Fahrt 52 Euro, lässt sich dieselbe Verbindung jedoch mit zwei Fahrkarten für zusammen 31,80 Euro realisieren, sollen beide Preise ersichtlich sein. Das durchgehende DB-Ticket kostet weiterhin 52 Euro. Die 31,80 Euro hingegen entsprechen dem Split-Ticket.
Bei mehreren Preisquellen kann die Suche schnell unübersichtlich werden. So kann es vorkommen, dass ein Verbundtarif lediglich für einen Streckenabschnitt gültig ist, der DB-Preis für die gesamte Verbindung und der Split wiederum aus zwei eigenständigen Fahrkarten besteht. FareWeave trennt diese Beträge sauber voneinander. Lässt sich ein Preis nicht eindeutig zuordnen, bleibt er entsprechend offen.
Die Split-Suche läuft parallel zur regulären Bahnabfrage. Eine bereits gefundene Verbindung muss also nicht erneut eingegeben werden, um anschließend beide Ergebnisse manuell zu vergleichen.
Mit dem Deutschlandticket kam eine weitere Besonderheit hinzu. Ein Verkehrsverbund kann für eine Nahverkehrsstrecke beispielsweise 8,60 Euro ausweisen. Wer ein D-Ticket besitzt, zahlt diese 8,60 Euro dennoch nicht ein zweites Mal.
Ist die Verbindung vollständig abgedeckt, liegen die zusätzlichen Ticketkosten bei null Euro. Kostenpflichtige Alternativen bleiben in der Auflistung erhalten. Ein ICE kann teurer sein und dennoch interessant wirken, wenn er eine Stunde einspart oder einen Flug erreicht, der mit dem Nahverkehr nicht zu schaffen wäre.
Für reine D-Ticket-Fahrten existiert ein separater Modus. In diesem Fall entfallen ICE-, IC- und Flix-Streckenabschnitte sowie alle anderen, für die ein zusätzliches Ticket erforderlich wäre. Aus der kleinen Split-Ticket-Suche ist damit relativ schnell mehr geworden.
Umfangreiche Reiseplanung auf Knopfdruck
Für die Strecke Berlin–Dortmund genügen Bahn und Flixbus in den meisten Fällen. Doch sobald ein Flug hinzukommt, wird die Angelegenheit komplexer.
Ein Flug für 39 Euro nützt wenig, wenn der passende Zug erst nach dem Abflug am Flughafen eintrifft. Die zwei Stunden Flughafenpuffer sollten auch tatsächlich zwei Stunden betragen und nicht unvermittelt auf 25 Minuten schrumpfen. Wer so knapp ankommt, bekommt beim Einchecken Probleme.
Solche Fehler traten während der Entwicklungsphase tatsächlich auf. Bei einer Suche nach BER wurden zeitweise Frankfurt oder Köln/Bonn als brauchbare Flughäfen akzeptiert. An anderer Stelle tauchte trotz frühester Abfahrt um 6 Uhr eine Verbindung nach Mitternacht auf.
Deshalb überprüft FareWeave nach dem Abruf erneut, ob Zeiten, Orte und die Reihenfolge der einzelnen Reiseabschnitte zur Anfrage passen.
Zu einem Flug kann direkt ein passender Zubringer gesucht werden. Nach der Landung wird auf Wunsch auch der Transfer zum Zielort geplant. Bei einem mehrtägigen Aufenthalt kann FareWeave ebenfalls eine Unterkunft ermitteln.
Dies ist inzwischen der Bereich, den ich persönlich am praktischsten finde. Anstatt Bahn, Flixbus, Flug, Flughafenverbindung, Transfer und Hotel nacheinander auf verschiedenen Seiten zusammenzutragen, bündelt FareWeave diese Optionen in derselben Planung. Anschließend müssen nur noch die für die Reise tatsächlich relevanten Angebote geöffnet werden.
Die Bahn läuft über ein eigenes Backend
Die DB-Abfrage erfolgt unabhängig von trvl. FareWeave nutzt dafür unter anderem den db-vendo-client sowie eine eigene Verarbeitung der dort erhaltenen Daten.
Für bestimmte HTTP-Abfragen kommt zudem curl_cffi zum Einsatz. Das erweist sich bei Seiten und Diensten als hilfreich, bei denen herkömmliche Clients schnell an Schutzmechanismen oder ähnlichen Sperren scheitern.
Auch der Routing Service Transitous ist in das Projekt integriert und liefert weitere Verbindungen im öffentlichen Verkehr.
FlixTrain und FlixBus berücksichtigt FareWeave ebenfalls. Dadurch kann eine DB-Verbindung beispielsweise gegen ein günstigeres Flix-Angebot ausgetauscht werden. Gemischte Strecken sind ebenso möglich. Ein Teil der Strecke kann vom Deutschlandticket abgedeckt sein, darauf folgt eine bezahlte Verbindung und anschließend wieder Nahverkehr.
Bei solchen Kombinationen ist nicht irgendein Preis aus einer Providerantwort von Interesse. Entscheidend ist, was für die konkrete Reise zusätzlich bezahlt werden muss.
Externe Anbieter ändern ihre Schnittstellen und Datenformate. Gelegentlich fügen sie auch einen neuen Schutzmechanismus hinzu. FareWeave versucht deshalb, einen Fehler auf den jeweiligen Provider zu begrenzen. Fällt eine Quelle aus, soll nicht gleich die gesamte Suche unbrauchbar werden.
Flüge kommen teilweise über trvl
Jede Fluggesellschaft einzeln anzubinden, hätte FareWeave zu einem deutlich umfangreicheren Projekt gemacht. Für diesen Bereich nutzen wir den Assistenten trvl. trvl bringt bereits verschiedene Reiseprovider mit und wurde ursprünglich für KI-Assistenten und MCP-Clients entwickelt. MCP-Clients sind Programme, die das Model Context Protocol (MCP) unterstützen. Dabei handelt es sich um einen offenen Standard, über den KI-Assistenten mit externen Datenquellen, Tools und Anwendungen kommunizieren können. FareWeave verwendet einen Teil davon für Flug- und Unterkunftsdaten. Die Bahnlogik, Split-Tickets, die Auswertung des Deutschlandtickets und das Zusammenstellen der Reisekette stammen hingegen von FareWeave selbst.
Bei Flügen fragt die Software zunächst Skiplagged, Ryanair, Vueling und easyJet ab. Reichen die Ergebnisse nicht aus, folgen Transavia, Norwegian, Air France/KLM und Wizz Air. Jeder Provider erhält ein eigenes Zeitlimit. Bleibt einer hängen, wartet die restliche Suche nicht endlos darauf.
Google Flights dient als Gegencheck. Dafür erstellt FareWeave einen passenden Suchlink mit Strecke und Reisedatum. Eine automatische Google-Flights-Abfrage existiert in Version 0.0.1 noch nicht.
Beim Transfer kann je nach Strecke wieder der öffentliche Verkehr, die Deutsche Bahn oder Flixbus auftauchen. Findet FareWeave keine brauchbare automatische Verbindung, wird ein passender Google-Maps-Link angezeigt. Bevor dort jedoch irgendeine fragwürdige Verbindung ausgegeben wird, prüft man den Abschnitt lieber selbst.
Beim Booking kann der WAF dazwischenfunken
Die Unterkunftssuche haben wir erst später ergänzt. Ein Teil davon läuft ebenfalls über Trvl, wo je nach zurückgelieferten Daten unter anderem Angebote oder Quellen von Booking.com, Expedia, Hotels.com, Agoda, Trip.com, Kayak oder Trivago auftauchen können. FareWeave durchsucht diese Seiten nicht alle einzeln selbst.
Booking.com ist in der zugrunde liegenden Suche technisch vorgesehen. Der WAF- und Bot-Schutz kann automatisierte Abfragen jedoch blockieren. Die Abkürzung WAF steht für Web Application Firewall. Booking.com würde ich deshalb derzeit nicht als ständig verfügbare Quelle einplanen.
Zusätzlich ist das Online-Reisportal stay22 eingebunden. Darüber werden aktuell Expedia und Hotels.com abgefragt.
Auch bei Hotels mussten wir einige Dinge abfangen. Ein Hostel soll beispielsweise nicht in der normalen Hotelsuche landen, nur weil irgendwo Sterne im Datensatz stehen. Apartments und Resorts bleiben ebenfalls eigene Kategorien. Für Hotels sind standardmäßig mindestens drei Sterne eingestellt.
Beim Preis gilt dasselbe wie bei Fahrkarten. Wenn aus den gelieferten Daten nicht klar hervorgeht, ob 179 Euro für eine Nacht oder den kompletten Aufenthalt gelten, kann daraus kein angeblich sicherer Gesamtpreis ermittelt werden. Google Hotels kann man zusätzlich für einen manuellen Vergleich öffnen.
FareWeave sucht, gebucht wird beim Anbieter
FareWeave soll keine Tickets erwerben oder Hotelzimmer reservieren. Auch die Verarbeitung von Zahlungsdaten gehört nicht zu den Aufgaben unseres Online-Projekts. Wenn ein Provider einen brauchbaren Angebotslink liefert, kann man diesen direkt öffnen. An anderen Stellen gibt es passende Suchlinks zur Deutschen Bahn, zu Google Flights, zu Google Hotels oder zu Google Maps.
Den Preis muss man vor der Buchung sowieso noch einmal manuell kontrollieren. Gerade bei Flügen und Hotels können sich die Beträge schnell ändern, bei der Verfügbarkeit sieht es nicht anders aus.
FareWeave übernimmt diese Arbeit. Das Tool sucht Verbindungen, hält die Preise auseinander, führt verschiedene Abschnitte zusammen und sortiert Ergebnisse aus, die für die gewählte Reise zeitlich nicht funktionieren.
Damit spart man sich einen großen Teil der üblichen Reiseplanung über zig Webseiten. Ein Reisebüro braucht man dafür nicht. Eine halluzinierende KI ist zwischen Fahrplan und Ticketpreis ebenfalls komplett fehl am Platz.
Die Reiseentscheidung läuft ohne KI
Bei der eigentlichen Auswahl und Prüfung der Verbindungen verwendet FareWeave kein Sprachmodell. Stattdessen werden Abfahrtszeit, Flughafenpuffer, Ticketart, Deutschlandticket und Preise mit festen Regeln geprüft. Eine KI entscheidet dabei nicht, welche Verbindung angeblich sinnvoll ist.
Zugegeben, beim Programmieren haben wir KI-Werkzeuge benutzt. Bei der Menge an Providerantworten, Logs, Tests und Code wäre es unsinnig gewesen, darauf komplett zu verzichten. Der Programmieragent Codex hat uns an einigen Stellen Arbeit abgenommen, sodass ein Teil der Entwicklung auch unter das inzwischen viel zitierte aber zu Unrecht verachtete Vibe Coding fällt. Das entbindet einen jedoch nicht davon, den eigenen Code zu verstehen.
Wenn BER plötzlich Köln/Bonn ist, ein Splitpreis beim normalen DB-Ticket landet oder eine Verbindung eine gesetzte Abfahrtszeit umgeht, muss ich wissen, warum das passiert. Ein Sprachmodell kann zwar beim Suchen und beim Schreiben eines Tests helfen. Den Quellcode muss man aber trotzdem eigenhändig prüfen, um die Ursache herauszufinden.
Viele Tests im Repository stammen direkt aus solchen Fällen. Ein Fehler wird zuerst reproduziert. Danach bekommt er einen Regressionstest, der mit dem fehlerhaften Stand scheitern muss. Nach der Korrektur wird derselbe Test erneut ausgeführt, anschließend der komplette Testsatz. Änderungen an externen Providern prüfe ich zusätzlich mit einem echten Abruf. Vibe Coding war beim Bau ein Werkzeug von mehreren. Es ist jedoch nicht die Logik, mit der FareWeave läuft.
FareWeave selbst hosten
Version 0.0.1 ist fürs Selfhosting gedacht. Docker und Docker Compose müssen bereits installiert sein. Danach reicht für den ersten Start:
git clone https://github.com/lesecuritae/FareWeave.git cd FareWeave ./install.sh
Der Installer legt beim ersten Start die .env an und erzeugt einen zufälligen internen Token für das DB-Backend. Danach werden die Container gebaut und die vorhandenen Prüfungen ausgeführt.
Standardmäßig lauscht die Oberfläche nur auf 127.0.0.1:8791. Wer FareWeave im eigenen Netzwerk oder hinter einem Reverse Proxy nutzen möchte, kann die Adresse und den Port entsprechend ändern. Für Stay22 lässt sich optional ein eigener API-Key hinterlegen.









%2Fhier-kommt-nikodem-r-17-vom-haftrichter-die-polizei-bringt-den-gefahrlichen-intensivtater-in-die-u-haft.webp&w=1200&q=75)
%2520erlebt%2520Horror%2520im%2520Zypern-Knast%2Fewa-k-51-aus-aschaffenburg-sitzt-seit-juli-2024-auf-zypern-in-u-haft-die-deutsche-botschaft-setzt-sich-fur-sie-ein.webp&w=1200&q=75)