stateDiagram-v2
direction TB
[*] --> Greeting
Greeting --> CollectDestination: flight intent
CollectDestination --> CollectDestination: unclear input
CollectDestination --> CollectOrigin: provides destination
CollectOrigin --> CollectDate: provides origin
CollectDate --> CollectTime: date validated
CollectTime --> AllSlotsFilled: provides time
AllSlotsFilled --> CollectDestination: NO - missing slot
AllSlotsFilled --> DisplayOptions: YES - all collected
DisplayOptions --> CollectDate: changes criteria
DisplayOptions --> ConfirmSelection: picks a flight
ConfirmSelection --> BookingComplete: confirms
BookingComplete --> [*]
Greeting: Greeting
CollectDestination: Collect Destination
CollectOrigin: Collect Origin
CollectDate: Collect Date
CollectTime: Collect Time Preference
AllSlotsFilled: All Slots Filled?
DisplayOptions: Display Options
ConfirmSelection: Confirm Selection
BookingComplete: Booking Complete
classDef startState fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff,font-size:15px
classDef gatherState fill:#1976d2,stroke:#0d47a1,stroke-width:2px,color:#fff,font-size:15px
classDef decisionState fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000,font-size:15px
classDef txnState fill:#ef6c00,stroke:#e65100,stroke-width:2px,color:#fff,font-size:15px
classDef endState fill:#6a1b9a,stroke:#4a148c,stroke-width:2px,color:#fff,font-size:15px
class Greeting startState
class CollectDestination,CollectOrigin,CollectDate,CollectTime gatherState
class AllSlotsFilled decisionState
class DisplayOptions,ConfirmSelection txnState
class BookingComplete endState