v2.0

GoRules Version 2 is here - redesigned, now with managed cloud.GoRules Version 2 is here!

Watch the launch videoWatch

Airline Seat Map Display Rules

Dynamic seat map system that personalizes seat availability based on loyalty tier, fare class, group size and cabin occupancy levels.

Solution

This airline seat management system delivers personalized seat map experiences by evaluating multiple factors to determine what seats each passenger can view and select. The system considers the customer's loyalty status, analyzing whether they hold platinum, gold, silver or standard tier membership. It factors in the passenger's fare class, distinguishing between first class, business class, economy plus, and standard economy tickets.

The solution adds intelligence by calculating real-time cabin fill percentages and factoring in group booking requirements for families or parties traveling together. Premium loyalty members and higher fare classes unlock access to preferred seating areas, while restricted seats become available when cabin occupancy exceeds certain thresholds or for groups needing adjacent seating. This creates a seamless, personalized booking experience while optimizing airline seat inventory management.

How it works

The decision graph processes passenger and flight data through four key nodes:

  1. Input Processing: Receives customer profile information (tier, fare class, group size), cabin details (total seats, occupied seats, seat types), and flight information.
  2. Cabin Fill Calculation: Computes the percentage of occupied seats and determines if adjacent seating is required based on group size.
  3. Seat Availability Rules: Applies a decision table with 12 prioritized rules that evaluate customer tier, fare class, cabin occupancy percentage, and group size to determine which seat types to display.
  4. Display Adjustment: Calculates total available seats, determines the appropriate seat map version (standard or premium), and generates appropriate messaging based on cabin occupancy.

Where teams use it

  • Airline seat selection systems
  • Airport check-in kiosks
  • Mobile airline apps
  • Travel agency booking platforms
  • Third-party flight reservation systems
  • Corporate travel management platforms

Inside the decision model

Airline Seat Map Display Rules ships as a JDM decision graph with 4 nodes, 1 decision table and 12 rules. Download it, load it into GoRules, and run it as-is on Zen Engine.

Decision graph4 nodes · read-only
input requestexpression calculateCabinFilltable determineSeatAvailabilityexpression adjustSeatAvailability
01

Request

input

Seat map requests carry a customer block with tier, fareClass, and groupSize, a cabin block with totalSeats, occupiedSeats, and the premium, standard, and restricted seat counts, plus flight identifiers; tier, fare, fill, and group size are the four signals the rules actually branch on.

Sample requestJSON
{
  "customer": {
    "id": "CUS123456",
    "tier": "gold",
    "fareClass": "economy_plus",
    "groupSize": 3,
    "hasSpecialNeeds": false,
    "previousFlights": 24
  },
  "cabin": {
    "id": "CAB789",
    "name": "main cabin",
    "totalSeats": 180,
    "occupiedSeats": 108,
    "premiumSeats": 32,
    "standardSeats": 138,
    "restrictedSeats": 10
  },
  "flight": {
    "flightNumber": "FL722",
    "departureTime": "2025-04-15T08:30:00Z",
    "arrivalTime": "2025-04-15T11:45:00Z",
    "aircraft": "Boeing 737-800"
  }
}
02

Calculate Cabin Fill

expression

Two derived figures set up the table: cabinFillPercentage is (cabin.occupiedSeats / cabin.totalSeats) * 100, and adjacentSeatsNeeded passes customer.groupSize through only when it exceeds 1, otherwise 0. Expressing occupancy as a percentage lets the display rules use readable thresholds like 70 or 85 regardless of aircraft size.

Expressions2 fields
cabinFillPercentage(cabin.occupiedSeats / cabin.totalSeats) * 100
adjacentSeatsNeededcustomer.groupSize > 1 ? customer.groupSize : 0
03

Determine Seat Availability

table

Twelve prioritized rows resolve top down with first hit, matching customer.tier, customer.fareClass, cabinFillPercentage, and adjacentSeatsNeeded against four display switches. 'platinum' or 'gold' members on 'first' or 'business' fares see everything including restricted seats with unlockPremiumSeats true, the same tiers in economy keep premium access only while cabin fill stays under 70, 'silver' members lose preferred visibility once fill reaches 60, 'standard' customers never see preferred seating at all, and near the bottom two override rows open restricted seats for groups needing more than 2 adjacent seats or once fill passes 85, ahead of a plain default of standard seats only.

Holding preferred inventory back from lower tiers while the cabin is empty protects seats airlines sell or award as elite benefits, and releasing them as occupancy climbs mirrors seat-inventory practice, since an unsold premium seat is worth more filled than protected. Opening restricted rows for larger groups reflects the operational need to seat parties together; the 70, 60, 50, and 85 fill thresholds are inventory-management tuning, not regulatory values.

Decision tablefirst hit policy
Customer Tiercustomer.tierFare Classcustomer.fareClassCabin Fill %cabinFillPercentageAdjacent Seats NeededadjacentSeatsNeededShow Preferred SeatsseatDisplay.showPreferredSeatsShow Standard SeatsseatDisplay.showStandardSeatsShow Restricted SeatsseatDisplay.showRestrictedSeatsUnlock Premium SeatsseatDisplay.unlockPremiumSeats
'platinum', 'gold''first', 'business'--truetruetruetrue
'platinum', 'gold''economy_plus', 'economy'< 70-truetruefalsetrue
'silver''business'--truetruefalsetrue
'silver''economy_plus', 'economy'< 60-truetruefalsefalse
'silver''economy_plus', 'economy'>= 60-falsetruefalsefalse
'standard''business'--falsetruefalsefalse

+6 more rows in the downloadable template

04

Adjust Seat Availability

expression

Presentation details close out the run: seatDisplay.totalAvailableSeats subtracts occupiedSeats from totalSeats, seatMapVersion renders 'premium' whenever unlockPremiumSeats came back true, and displayMessage switches to 'Limited seats available' once cabinFillPercentage passes 80. A scarcity message at high fill is a familiar booking-flow conversion tactic, kept honest here by tying it to actual occupancy.

Expressions3 fields
seatDisplay.totalAvailableSeatscabin.totalSeats - cabin.occupiedSeats
seatDisplay.seatMapVersionseatDisplay.unlockPremiumSeats ? 'premium' : 'standard'
seatDisplay.displayMessagecabinFillPercentage > 80 ? 'Limited seats available' : 'Select your seats'

Make this template
your own.

Load Airline Seat Map Display Rules into GoRules, adjust the rules to your policy, and ship it behind your own API.