Get in touch

Flyiin: reshaping air travel distribution through an NDC-powered marketplace

Client Overview:

Flyiin is a Berlin-based travel technology startup founded in 2015 with a bold ambition: to reinvent how flights are searched, compared, and booked. Built on IATA’s New Distribution Capability (NDC) standard, Flyiin set out to create a true online marketplace for air travel – one where passengers could access full airline inventory, ancillary services, and transparent pricing in a single, seamless environment, without being redirected to third-party agencies or losing out on airline-direct offers.

The Challenge:

The legacy flight booking industry was built on decades-old distribution infrastructure that served neither airlines nor travellers particularly well. Traditional channels offered limited product visibility, stripped airlines of control over their own retail experience, and left travellers navigating a fragmented landscape of metasearch engines, OTAs, and airline websites to piece together what they actually wanted to buy.

Flyiin’s vision demanded something the market hadn’t yet delivered: a platform capable of connecting directly to multiple airline APIs simultaneously, aggregating real-time offers – including seats, meals, lounge access, and other ancillaries – and presenting them in a coherent, interactive booking flow. The technical bar was high. Concurrent API processing, fault-tolerant architecture, and a push-based communication model were all non-negotiable requirements for delivering the kind of responsive experience modern travellers expected.

Our Approach:

Civitta partnered with Flyiin as a strategic technology partner, taking ownership of the full-stack build across backend, frontend, and QA.

  • Backend architecture: The team chose Elixir as the foundation for its proven concurrency model and fault-tolerance capabilities – exactly what was required to handle simultaneous, real-time requests to multiple airline APIs without degrading the user experience. Push-based communication patterns were introduced to keep the interface reactive and data fresh, eliminating the stale-state problems common in polling-heavy booking flows.
  • Frontend development: The frontend was built in Elm – a language chosen deliberately for its strong guarantees around runtime reliability and predictable state management. In a booking context where errors can mean lost transactions or user frustration, Elm’s architecture provided a level of robustness that more conventional JavaScript frameworks couldn’t match.
  • Quality assurance: QA was embedded throughout the delivery cycle using ExUnit and ExVCR for the backend, and Postman for API-level testing. Rather than treating QA as a final gate, the team integrated testing continuously – allowing issues to be caught and resolved close to their source.

Results & Impact:

Civitta delivered a working MVP of the Flyiin marketplace across web, combining robust concurrent backend processing with a stable, reactive frontend. The platform successfully connected to airline APIs – including Lufthansa Group and IAG Airlines – demonstrating that direct NDC-based distribution at scale was technically achievable.

Flyiin’s technology went on to attract significant industry attention. The platform was validated through a private beta with around 500 users, caught the attention of major airlines as a distribution partner, and ultimately led to Flyiin being acquired by Priceline (part of Booking Holdings) in 2021 – a testament to the underlying technical architecture and market vision the team had helped build.

Key Takeaways:

  1. Technology choices are product decisions: Selecting Elixir and Elm wasn’t just an engineering preference – it was a deliberate alignment of language strengths with product requirements. Concurrency, fault tolerance, and predictable state management weren’t nice-to-haves; they were the product.
  2. Fault tolerance is a feature, not a safety net: In a real-time, multi-API environment, failure is inevitable. Building fault-tolerant behaviour into the core architecture from the start meant that individual API errors didn’t cascade into broken user experiences – a distinction that separates robust products from brittle ones.
  3. Reshaping an industry takes more than a product: Helping airlines understand NDC implementation internals was as important as the software itself. Real industry change required consultancy alongside code.