GoRules Version 2 is here - redesigned, now with managed cloud.GoRules Version 2 is here!
Watch the launch videoWatchAirline 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:
- Input Processing: Receives customer profile information (tier, fare class, group size), cabin details (total seats, occupied seats, seat types), and flight information.
- Cabin Fill Calculation: Computes the percentage of occupied seats and determines if adjacent seating is required based on group size.
- 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.
- 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.
Request
inputSeat 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"
}
}Calculate Cabin Fill
expressionTwo 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.
(cabin.occupiedSeats / cabin.totalSeats) * 100customer.groupSize > 1 ? customer.groupSize : 0Determine Seat Availability
tableTwelve 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.
| Customer Tiercustomer.tier | Fare Classcustomer.fareClass | Cabin Fill %cabinFillPercentage | Adjacent Seats NeededadjacentSeatsNeeded | Show Preferred SeatsseatDisplay.showPreferredSeats | Show Standard SeatsseatDisplay.showStandardSeats | Show Restricted SeatsseatDisplay.showRestrictedSeats | Unlock Premium SeatsseatDisplay.unlockPremiumSeats |
|---|---|---|---|---|---|---|---|
| 'platinum', 'gold' | 'first', 'business' | - | - | true | true | true | true |
| 'platinum', 'gold' | 'economy_plus', 'economy' | < 70 | - | true | true | false | true |
| 'silver' | 'business' | - | - | true | true | false | true |
| 'silver' | 'economy_plus', 'economy' | < 60 | - | true | true | false | false |
| 'silver' | 'economy_plus', 'economy' | >= 60 | - | false | true | false | false |
| 'standard' | 'business' | - | - | false | true | false | false |
+6 more rows in the downloadable template
Adjust Seat Availability
expressionPresentation 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.
cabin.totalSeats - cabin.occupiedSeatsseatDisplay.unlockPremiumSeats ? 'premium' : 'standard'cabinFillPercentage > 80 ? 'Limited seats available' : 'Select your seats'Other Aviation templates
View all templatesFlight Dispatch Decision System
Rules-based aviation system that evaluates weather, aircraft, crew, and weight factors to ensure regulatory compliance and safe flight operations.
AviationDynamic Airline Ticket Pricing Engine
Automated fare optimization system that sets ticket prices based on time to departure, seat availability, market demand, and competitor pricing.
AviationBooking Personalization System
Dynamic flight booking platform that tailors UI, discounts, and features based on customer loyalty status, device type, booking history, and traffic source.
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.