Fares & Pricing

Dynamic pricing engine built on Continuous Pricing principles. We generate offers, we don't file fares.

Core Philosophy

"We Don't File Fares; We Generate Offers"

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│  Legacy Fare Ladders (ATPCO)        Continuous Pricing          │
│                                                                 │
│  Price                              Price                       │
│    │    ┌──┐                          │     ╭─────────────╮    │
│    │   ┌┘  │                          │   ╭─╯             │    │
│    │  ┌┘   └─┐                        │ ╭─╯               │    │
│    │ ┌┘      │                        │╭╯                 │    │
│    │┌┘       └─┐                      ╭╯                  │    │
│    └┴──────────┴──── Time/Demand     ╰───────────────────│    │
│                                                                 │
│  26 discrete price points      →     Infinite price points     │
│  Static fare basis codes       →     Dynamic calculation       │
│  Filed with ATPCO              →     Generated in real-time    │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Bypassing ATPCO

Pricing lives in the engine, replacing archaic rules with real-time logic:

Legacy RuleReplaced By
Saturday Night StayDemand signal
14-day Advance PurchaseLead time factor
Round-trip RequiredOne-way pricing default
Fare Basis CodesDynamic tier (P1-P5)

Continuous Dynamic Pricing

The Pricing Formula

Price = f(demand, lead_time, competitor_price, inventory_position, customer_value)

Real-Time Inputs

SignalSourceWeightLatency
DemandBooking velocity, search volumeHighReal-time
Lead TimeDays to departureHighStatic
Competitor PriceScraper/APIMedium15-min cache
Inventory PositionOMS/InventoryHighReal-time
Customer ValueLoyalty tier, historyMediumReal-time
Day of WeekCalendarLowStatic
SeasonalityHistorical patternsMediumDaily refresh

Dynamic Pricing Flow

Shopping Request (/AirShopping)
         ↓
┌────────────────────────┐
│     Offer Engine       │
│  ┌──────────────────┐  │
│  │    Inventory     │  │
│  │    (P1-P5)       │◄─┼── Availability by tier
│  └────────┬─────────┘  │
│           │            │
│  ┌────────▼─────────┐  │
│  │  Merchandising   │  │
│  │     Rules        │◄─┼── Bundles, upsells
│  └────────┬─────────┘  │
│           │            │
│  ┌────────▼─────────┐  │
│  │  Pricing Engine  │  │
│  │                  │◄─┼── Price = f(demand, lead_time, ...)
│  └────────┬─────────┘  │
│           │            │
│  ┌────────▼─────────┐  │
│  │   Tax Engine     │◄─┼── GST/VAT by O&D
│  └────────┬─────────┘  │
└───────────┼────────────┘
            ↓
      Priced Offer
      (valid 15 min)

Price Validity Windows

StageValidityRationale
Shopping response15 minutesAllow comparison shopping
Priced offer (OfferPrice)10 minutesMatch inventory hold
Order createdPrice lockedConfirmed transaction

Ancillary Pricing

SKU-Based Model

Every ancillary is a priced SKU that can be added to the order:

SKU TypePricing LogicExample
Seat SelectionSeat map position, cabin classWindow +$15, Exit +$50
BaggageRoute, weight tier20kg CCS-MAR $25
MealsRoute length, meal typeVGML $12
Priority BoardingFlat fee$15
Lounge AccessAirport, tierCCS $35

Dynamic Bundling

┌─────────────────────────────────────────────────────────────────┐
│                   "The Commuter Bundle"                         │
│                                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                      │
│  │  Flight  │  │  Coffee  │  │ Carry-on │                      │
│  │          │  │          │  │          │                      │
│  └──────────┘  └──────────┘  └──────────┘                      │
│                                                                 │
│  Bundle Price: $89  (vs. à la carte $105)                       │
│  Savings displayed: 15%                                         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Data Model

Offer (Not Fare)

Offer
├── OfferID (UUID)
├── ValidUntil ─────────────── 15 min from creation
├── Segments[]
│   ├── FlightRef
│   ├── PriceTier (P1-P5)
│   └── CabinClass
├── Pricing
│   ├── BaseAmount ─────────── Dynamically calculated
│   ├── Taxes[]
│   │   ├── TaxCode
│   │   ├── Amount
│   │   └── Description
│   ├── Fees[]
│   └── TotalAmount
├── Ancillaries[] ───────────── Available add-ons
│   ├── SKU
│   ├── Price
│   └── Included (boolean)
└── PricingInputs ───────────── Audit trail
    ├── DemandScore
    ├── LeadTimeDays
    └── InventoryPosition

Performance Requirements

MetricTarget
Pricing calculation<100ms
Full offer response<500ms
Concurrent price requests500+
Price cache TTL60 seconds

Integration Points

SystemDirectionData
InventoryInboundTier availability (P1-P5)
Revenue ManagementInboundDemand signals, price floors
Tax EngineInboundTax rates by O&D
OMSOutboundPriced offers
NDC GatewayBidirectionalAirShopping, OfferPrice
Competitor MonitorInboundMarket prices

Research Topics

  • ML model for demand forecasting
  • Competitor price scraping architecture
  • Price elasticity modeling
  • A/B testing framework for pricing
  • Ancillary attach rate optimization
  • Bundle effectiveness metrics

Legacy / Interline Considerations

ATPCO (When Required)

For interline agreements or legacy system compatibility:

  • Public fare filing for codeshare partners
  • ATPCO Tax Box for complex international routing
  • Fare construction for through fares
  • NUC/ROE for currency neutrality

Note: These are fallback mechanisms. Primary pricing is continuous and dynamic.

Fare Data Model (Legacy Reference)

Fare (Legacy)
├── FareID, CarrierCode
├── Origin, Destination
├── FareBasis, FareClass ───── Mapped to P1-P5
├── OneWayRoundTrip
├── Amount, Currency
├── Rules
│   ├── ValidityDates
│   ├── AdvancePurchase ────── Replaced by lead_time
│   ├── MinMaxStay ─────────── Deprecated
│   └── Combinability
└── Taxes[]