At Ascend, every flight search was manual. An agent would receive a request — "JFK to London, business class, next Tuesday, prefers United" — and spend 20 to 30 minutes on ITA Matrix trying different routing combinations, dates, and cabin mixes. For a single request, that's fine. At scale, it's a bottleneck that limits how many clients you can serve and how thoroughly you can search.
Guru automates this. A natural language request goes in, and ranked flight options come out. Instead of one person searching one route at a time, Guru explores 110+ routing permutations across multiple providers simultaneously — variations that would take an agent hours to check manually.
The results speak for themselves: up to 70% savings vs retail business class fares, delivered in minutes rather than half an hour.
How it works
Requests start as plain language. Guru parses them into structured search parameters — origin, destination, cabin, dates, airline preferences — and fans out across providers.
Most online travel agencies search direct routes on a single provider. Guru takes a different approach: it explores far more routing permutations across multiple airports and providers, looking for pricing inefficiencies that only appear when you search creatively. Think of it like TrainLine's split ticketing for UK trains — where buying two separate tickets for the same journey can be significantly cheaper than one through ticket. The same principle applies to flights, but across a much larger search space.
Results
Results are ranked three ways: Best, Cheapest, and Fastest. The "Best" ranking is personalised to each client — factoring in airline loyalty programmes, cabin preferences, and routing tolerances. An MileagePlus Gold member who values nonstop United flights gets different rankings than someone who just wants the lowest price.
The pipeline
The full workflow runs end-to-end without manual intervention. Requests are pulled from Asana, searched across providers, ranked, and the top options are posted to Slack — all automatically.
An agent picks up the Asana task, Guru searches 110+ routing variations across ITA Matrix and Amadeus, ranks the best options against that client's preferences, and posts the results to Slack. The agent reviews and sends the quote. What used to take 20-30 minutes of searching now takes about 4 minutes of compute time and a quick human review.
Under the hood
ITA Matrix doesn't have an API, so Guru uses browser automation through Browserbase to run up to 90 concurrent search sessions. Amadeus provides GDS-level access via API for a second source of pricing data. Both feed into the same ranking engine.
The codebase is an 18-package TypeScript monorepo — separate packages for each provider, the ranking engine, request parsing, Asana integration, and Slack delivery. SSE streaming means results appear progressively as each provider returns data, rather than waiting for everything to finish.
Each search takes roughly 4 minutes end-to-end, exploring 110+ routing variations per request across 90 concurrent browser sessions.
Where we are now
Guru is in production, handling live client requests. It's already replaced the manual search workflow for the majority of bookings.
On the roadmap: airline and alliance filtering (so clients can restrict searches to their preferred programmes), passport and visa eligibility checks (automatically excluding routings that require transit visas a client doesn't hold), and deeper integration with client preference profiles so rankings improve over time.
The goal is straightforward: every search should be faster, cheaper, and more thorough when Guru does it.