Natural-language flight search. Type a query like "cheap flights from Warsaw to Italy in September" and the app parses it with an LLM (via OpenRouter), then searches round-trip offers on Amadeus across multiple origin/destination/date combinations.
- Query parsing — OpenRouter (model:
openrouter/auto) extracts origins, destinations, date range and trip duration from free-form text. - Date expansion — the server generates Thu/Fri/Sat departures paired with Thu-Sun returns across the requested window.
- Flight search — Amadeus Self-Service API is queried (capped at 80 round-trip searches) and results are streamed back via SSE, sorted by total price.
- Node.js 20+
- Amadeus API credentials (Self-Service portal)
- OpenRouter API key (openrouter.ai)
npm install
cp ecosystem.config.example ecosystem.config.js
# edit ecosystem.config.js and fill in your credentialsAMADEUS_CLIENT_ID/AMADEUS_CLIENT_SECRET— Amadeus API credentialsOPENROUTER_API_KEY— OpenRouter API keyAPP_URL— public URL of the deployed app (sent as OpenRouterHTTP-Referer)
The app also integrates with an optional shared OTP auth module; remove the expressAuth middleware in server.js if you do not need login.
node server.js # development
pm2 start ecosystem.config.js # productionListens on port 3010 under base path /Flights.
MIT