v2.0

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

Watch the launch videoWatch

Online Check-in Eligibility System

Automated passenger validation system that determines online check-in eligibility based on travel documents, flight timing, and special assistance requirements.

Solution

This decision system streamlines the passenger check-in process by evaluating multiple eligibility factors before allowing online check-in. The system verifies that passengers have all required travel documentation, including valid passports and visas when needed for international destinations. It checks the proximity to departure time, preventing online check-in when too close to flight time.

For passengers requiring special assistance, the system directs them to airport check-in counters where staff can provide personalized support. When passengers meet all requirements, the system confirms eligibility and provides information about additional services like seat selection and extra baggage options. By delivering clear status messages with specific reasons for ineligibility, the system helps passengers understand next steps and reduces airport counter congestion.

How it works

The decision graph evaluates passenger eligibility through several sequential steps:

  1. Data Processing: Calculates time until departure and verifies document requirements based on destination.
  2. Time Check: Validates that check-in is being attempted within the allowed time window (more than 90 minutes before departure).
  3. Document Verification: Confirms passengers have valid passports and appropriate visas when required for their destination.
  4. Assistance Need Assessment: Identifies passengers requiring special assistance who need in-person check-in.
  5. Service Options: For eligible passengers, determines available additional services like seat selection and baggage options.
  6. Response Generation: Provides clear status messages with specific reasons for ineligibility or confirmation of successful check-in.

Where teams use it

  • Commercial airline passenger check-in
  • International flight documentation verification
  • Airport resource optimization
  • Passenger flow management
  • Mobile check-in applications
  • Self-service kiosk integration

Inside the decision model

Online Check-in Eligibility System ships as a JDM decision graph with 6 nodes, 1 decision table and 4 rules. Download it, load it into GoRules, and run it as-is on Zen Engine.

Decision graph6 nodes · read-only
input requestexpression preprocessDatatable checkEligibilityswitch eligibilityCheckexpression additionalServicesexpression nonEligible
01

Request

input

Two objects drive the check: passenger with hasValidPassport, hasValidVisa, and requiresSpecialAssistance, and flight with departureTime, requiresVisa, and the service flags hasSeatSelection and allowsExtraBaggage.

Sample requestJSON
{
  "passenger": {
    "id": "P12345678",
    "name": "John Smith",
    "hasValidPassport": true,
    "hasValidVisa": true,
    "requiresSpecialAssistance": false,
    "frequentFlyerStatus": "gold"
  },
  "flight": {
    "flightNumber": "BA123",
    "departureTime": "2025-03-20T10:30:00Z",
    "origin": "LHR",
    "destination": "JFK",
    "requiresVisa": true,
    "hasSeatSelection": true,
    "allowsExtraBaggage": true,
    "hasSpecialMealOptions": true
  }
}
02

Preprocess Data

expression

Preprocessing turns raw fields into decision-ready values: hoursUntilDeparture is computed from date(flight.departureTime) against a fixed reference currentTime, and hasRequiredDocuments demands passenger.hasValidPassport plus a visa state that matches flight.requiresVisa, defaulting to false when the flag is absent. Folding the visa test into one boolean means the eligibility table never has to know whether the route is international.

Expressions4 fields
flightDepartureTimedate(flight.departureTime)
currentTimedate('2025-03-20T08:30:00Z')
hoursUntilDeparture($.flightDepartureTime - $.currentTime) / 3600
hasRequiredDocumentspassenger.hasValidPassport == true and passenger.hasValidVisa == (flight.requiresVisa ?? false)
03

Check Eligibility

table

Eligibility gates run in strict order with first hit on free-form conditions: hoursUntilDeparture < 1.5 returns 'check_in_closed', !hasRequiredDocuments returns 'missing_documents', passenger.requiresSpecialAssistance routes to 'special_assistance', and only the empty final row grants isEligible true with 'You are eligible for online check-in.'

Closing online check-in 90 minutes before departure reflects the cutoffs airlines publish so baggage drop, security, and boarding still work downstream, though the exact window is carrier and airport policy rather than regulation. Sending document problems and assistance requests to the counter matches practice: travel-document checks against systems like IATA's Timatic and wheelchair or medical support both need a human agent.

Decision tablefirst hit policy
ConditionIs EligibleisEligibleStatus CodestatusCodeMessagemessage
hoursUntilDeparture < 1.5false'check_in_closed''Online check-in is closed. Please proceed to the airport for assistance.'
!hasRequiredDocumentsfalse'missing_documents''Missing required travel documents. Please check-in at the airport.'
passenger.requiresSpecialAssistancefalse'special_assistance''Special assistance required. Please check-in at the airport.'
-true'eligible''You are eligible for online check-in.'
04

Eligibility Check

switch

Routing splits on a single statement: isEligible == true takes the top branch to the services step, while the default branch handles every refusal. Keeping the branch condition on the table's output instead of re-testing raw fields keeps the eligibility logic in exactly one place.

Branches2 paths
isEligible == true Additional Services
otherwise Non Eligible
05

Additional Services

expression

Service options are assembled for passengers who pass: canSelectSeat mirrors flight.hasSeatSelection, canAddBaggage mirrors flight.allowsExtraBaggage, and statusCode and message carry through unchanged from the table. With pass-through disabled, only these response fields leave the graph, which keeps the API answer small and stable.

Expressions5 fields
isEligiblefalse
canSelectSeatflight.hasSeatSelection == true
canAddBaggageflight.allowsExtraBaggage == true
statusCodestatusCode
messagemessage
06

Non Eligible

expression

Refusals produce a minimal payload: isEligible is pinned to false while the statusCode and message set by the eligibility table pass through as the explanation. Trimming everything else off the response gives the check-in front end exactly what it needs to show the right instruction.

Expressions3 fields
isEligiblefalse
statusCodestatusCode
messagemessage

Make this template
your own.

Load Online Check-in Eligibility System into GoRules, adjust the rules to your policy, and ship it behind your own API.