Building an Airline Fare Intelligence Platform Across Multiple GDS & NDC Suppliers
An airline fare intelligence platform integrating multiple GDS and NDC suppliers to aggregate, normalize, and analyze competitor pricing — turning scattered market data into data-driven fare recommendations.
The Problem
Airlines need to price competitively, but seeing what competitors are actually charging in real time is hard — that data lives across many different GDS (Global Distribution System) and NDC (New Distribution Capability) supplier APIs, each shaped differently, updating constantly, and none of them talking to each other. Without a way to pull that together, pricing decisions were reactive: made without a clear, current picture of the competitive landscape.
The Solution
I designed and built an end-to-end fare intelligence platform, from the backend integrations through the React dashboard airlines use to view the results.
The core of the system integrates multiple GDS and NDC suppliers to continuously pull competitor fares, flight schedules, and seat availability. Each supplier returns data in its own format and structure, so a large part of the work was building a normalization layer that reconciles all of it into one consistent internal model — without that, comparing one supplier's fare for a route against another supplier's fare for the same route isn't a fair or even valid comparison.
On top of the normalized data, I built pricing-intelligence logic that analyzes the aggregated market data and surfaces data-driven fare recommendations, so airlines can adjust pricing based on what's actually happening in the market instead of guesswork.
Key design points:
- Built with .NET Core, EF Core, and PostgreSQL on the backend, with a React dashboard for airlines to explore comparisons and recommendations
- Used Hangfire to run supplier data pulls on a recurring schedule, keeping the comparison data continuously fresh without manual refreshes
- Treated data normalization as a first-class concern — a dedicated layer between raw supplier responses and the comparison/recommendation engine, so adding a new supplier doesn't ripple through the rest of the system
The Results
- Gave airlines a live, aggregated view of competitor pricing they didn't have before, replacing manual, ad-hoc fare checking with a continuously updated dashboard
- Turned pricing from a reactive decision into a data-driven one, backed by real competitor fare, schedule, and availability data
- Designed and shipped the entire platform — supplier integrations, the normalization layer, pricing-intelligence logic, and the dashboard — end-to-end as a single engineer
Related Case Studies
May 24, 2026
Progressive Search: Showing Flight Results Before All 30 Suppliers Answer
Flight search used to wait on all 30 suppliers before showing anything — one slow responder meant everyone waited. Here's how Server-Sent Events let us stream results the moment each supplier answers.
Mar 4, 2025
Cutting ADM Penalties with an Automated Booking Cancellation Service
A background service that automatically cancels un-ticketed bookings before the last ticketing time, saving ~$23K-$27K across 6 OTA clients.
Jul 23, 2026
How a Redis Stampede (Thundering Herd) Hit Our OTA Search Ranking Engine — And How We Fixed It
When 30 integrated suppliers and 40-50 unique airlines per search met an uncached rank lookup, concurrent cache misses stampeded the database in unison — here's how negative caching and locking around retrieval broke the herd.