{"ns":"flights","title":"Palisade Air","version":"4.0","summary":"Palisade Air is an airline booking site. Travellers search one-way, return and multi-city trips, compare Basic, Standard and Flex fares, pick seats, add bags and extras, pay by card and receive a booking reference. Members sign in to Manage booking to review their trips, change seats and cancel with fare-based refunds. The clock is fixed at Monday 2 Nov 2026, 12:00.","problem":"Travellers must see one honest price for every passenger type, be stopped from choosing seats they are not allowed to take, and know exactly what a cancellation refunds before they confirm it.","personas":[{"name":"Guest traveller","need":"Find a flight, see the full price and book without creating an account."},{"name":"Family traveller","need":"Book adults, a child and an infant together at the correct rates and with seats that obey safety rules."},{"name":"Member","need":"Review upcoming and cancelled trips and cancel with a clear refund breakdown."}],"goals":["The total shown at payment equals fares plus taxes plus seats plus bags, with nothing omitted.","Safety seating rules (exit rows) are always enforced.","A refund always equals what was paid minus the fee and any non-refundable amounts shown in the cancel dialog."],"features":[{"id":"SRC","title":"Search and results","summary":"Trip search, fare calendar and the flight list.","reqs":[{"id":"FR-SRC-01","weight":"Must","text":"The Book a flight screen shows the Palisade Air brand, a single heading \"Book a flight\", the trip types One-way, Return and Multi-city, \"Popular routes\" and the three fare families as cards.","accept":["Fare families Basic, Standard and Flex are shown under \"Three fares on every flight\""]},{"id":"FR-SRC-02","weight":"Must","text":"A one-way search lists every flight of the day, cheapest first, each with three fares.","accept":["ALQ to BKW on 2026-11-10 shows heading \"Albuquerque to Brookwater\" and \"8 of 8 flights\"","First row SK 474, 05:30 to 07:24, Nonstop, from $67.00; fares Basic $67.00, Standard $112.00, Flex $187.00; \"6 seats left\""]},{"id":"FR-SRC-03","weight":"Should","text":"A seven-day fare calendar centred on the searched date shows each day's lowest fare and marks the cheapest day \"Lowest\". Days before today have no price and cannot be selected.","accept":["Search 10 Nov shows 7 Nov to 13 Nov; 10 Nov $67.00 (Lowest), 8 Nov $79.00, 13 Nov $90.00","Search 2 Nov: 30 Oct to 1 Nov show no price; 2 to 5 Nov are $78.00, $75.00, $66.00, $72.00","Clicking a day reloads the list for that day"]},{"id":"FR-SRC-04","weight":"Should","text":"Origin and destination must differ.","accept":["\"Origin and destination must be different\" beside the To field and no results"]},{"id":"FR-SRC-05","weight":"Must","text":"A return trip cannot return before it departs.","accept":["Depart 2026-11-10 and Return 2026-11-09 shows \"Return date cannot be before the departure date\" and lists no flights"]},{"id":"FR-SRC-06","weight":"Should","text":"The earliest searchable date is today (2 Nov 2026) and the latest is 330 days ahead.","accept":["A search for today returns results","2027-12-10 shows \"Flights can be booked up to 330 days ahead\" beside the date"]},{"id":"FR-SRC-07","weight":"Could","text":"Long routes mix nonstop and one-stop flights and name the stop airport and the total duration.","accept":["ALQ to LMZ on 2026-11-10: CM 252 05:15 to 08:12 Nonstop 5 h 57 min, Basic $271.00","SK 837 15:40 to 20:22 \"1 stop · GRV\", Basic $225.00","CM 147 09:15, \"1 stop · CVX\", 7 h 42 min, Basic $249.00"]},{"id":"FR-SRC-08","weight":"Could","text":"The results screen uses a framed-sheet layout: fare calendar on top, filters on the left, flight list on the right, with one heading; an opened row shows three fare cards with prices and rules."}]},{"id":"PRC","title":"Pricing","summary":"Fares, passenger-type rates, taxes and bags.","reqs":[{"id":"FR-PRC-01","weight":"Must","text":"Fares are priced per passenger type: adult 100%, child 75%, infant 10% of the adult fare. Taxes and fees are 12% of the fare plus $18.50 per paying passenger, plus $12.00 per infant.","accept":["1 adult on SK 474 Basic: fare $67.00, taxes $26.54, total $93.54","2 adults, 1 child, 1 infant: fares $134.00 + $50.25 + $6.70, taxes $89.61, total $280.56","1 adult + 1 child: fares $67.00 + $50.25, taxes $51.07, total $168.32"]},{"id":"FR-PRC-02","weight":"Must","text":"Extra checked bags cost $40.00 each beyond the fare allowance (Basic 0, Standard 1, Flex 2), up to 4 bags per passenger, and the order total includes the fee.","accept":["3 bags on Basic: line \"Extra checked bags $120.00\"; total $213.54 (fare $67.00 + taxes $26.54 + bags $120.00)","The add button stops at 4; removing bags reduces the line and the total ($80.00 at 2 bags; line gone and $93.54 at 0)"]},{"id":"FR-PRC-03","weight":"Should","text":"Passenger rules: an infant needs an adult (infants cannot outnumber adults) and an infant does not get a seat.","accept":["\"Infants travel on an adult's lap\" is shown in place of a seat for the infant"]}]},{"id":"PAX","title":"Passenger details","summary":"Names, dates of birth and contact details.","reqs":[{"id":"FR-PAX-01","weight":"Should","text":"Each passenger field refuses bad input with its own message and the screen only advances when all fields are valid.","accept":["\"First name is required\"","\"First name can only contain letters, spaces, hyphens and apostrophes\"","\"Date of birth is required\"","\"Adults must be 16 or older on the travel date\""]}]},{"id":"SET","title":"Seat selection","summary":"Priced seat map with safety rules.","reqs":[{"id":"FR-SET-01","weight":"Should","text":"Legroom seats cost $35.00, exit-row seats $28.00 and standard seats $12.00 on Basic; occupied seats cannot be selected; selecting a new seat releases the previous one and Clear seat removes the charge.","accept":["2A (legroom) $35.00; 14A (exit row) $28.00 and 2A is released","14B and 9A are occupied and not selectable","After Clear seat the total is $93.54"]},{"id":"FR-SET-02","weight":"Must","text":"Passengers under 16 cannot take an exit-row seat.","accept":["\"Passengers under 16 cannot sit in an exit row\" and the seat is not assigned","Row 12 is allowed for the child; an adult without an infant may take 14A"]},{"id":"FR-SET-03","weight":"Must","text":"An adult travelling with an infant cannot take an exit-row seat.","accept":["\"Passengers travelling with an infant cannot sit in an exit row\" and 14A is not assigned"]},{"id":"FR-SET-04","weight":"Could","text":"The seat map shows a 3-3 grid with an aisle, row numbers, a legend and distinct looks for free, occupied, exit-row and legroom seats."}]},{"id":"PAY","title":"Payment","summary":"Card payment with priced summary.","reqs":[{"id":"FR-PAY-01","weight":"Should","text":"Card number, expiry and security code are validated before payment.","accept":["Failing check digit: \"Enter a valid 16-digit card number\"","Expiry 10/26: \"This card has expired\"","Expiry 13/29: \"Use the format MM/YY\"","Two-digit code: \"Security code must be 3 digits\""]},{"id":"FR-PAY-02","weight":"Should","text":"A declined card shows an error, keeps the traveller on Payment and creates no booking.","accept":["Card number 4000 0000 0000 0002 shows \"Your card was declined. Try another card.\" on the card number","Retrying with a valid card confirms the booking"]},{"id":"FR-PAY-03","weight":"Could","text":"The payment form sits beside a sticky price summary (Fares, Taxes and fees, Total) with all text at least 12px."}]},{"id":"BKG","title":"Booking and confirmation","summary":"End-to-end booking and the confirmation receipt.","reqs":[{"id":"FR-BKG-01","weight":"Must","text":"A guest can book a one-way flight with a seat and receives a six-character booking reference and a receipt whose total equals the amount at payment.","accept":["SK 474 Basic with seat 14A: Payment total $121.54 (fare $67.00, taxes $26.54, seat $28.00)","\"Booking confirmed\"; Total paid $121.54; \"Paid with card ending 4242\"; passenger and seat 14A listed"]},{"id":"FR-BKG-02","weight":"Must","text":"A return booking prices both flights, each with its own fare family, in one total.","accept":["SK 474 Standard out + SK 606 Basic back with seat 14A: Fares $206.00, taxes $61.72, seat $28.00, total $295.72","Both flights are listed on the confirmation; seats are chosen per flight on tabs"]},{"id":"FR-BKG-03","weight":"Must","text":"A family booking prices every passenger at their own rate and the confirmation total matches the payment total.","accept":["2 adults, 1 child, 1 infant on SK 474 Basic: total paid $280.56"]},{"id":"FR-BKG-04","weight":"Could","text":"The confirmation shows the booking reference in a bordered box, then the itinerary card, then the passengers card with price lines and a right-aligned \"Total paid\" row."}]},{"id":"MNG","title":"Manage booking","summary":"Member sign-in and booking list.","reqs":[{"id":"FR-MNG-01","weight":"Must","text":"A member signs in and sees their own bookings split into Upcoming and Cancelled.","accept":["Heading \"Manage booking\", \"Signed in as\" the member name","Upcoming: PX4K7M, QT9W2C, ZL6R3N; Cancelled: MB2D8H"]},{"id":"FR-MNG-02","weight":"Must","text":"Bad credentials are refused with specific messages.","accept":["Empty: \"Enter your username or email and your password\"","Wrong password: \"Invalid credentials\" and the screen stays on sign-in"]},{"id":"FR-MNG-03","weight":"Should","text":"A booking detail shows its flights, fares, seats per passenger and payment.","accept":["PX4K7M: Confirmed; ALQ to BKW 12 Nov CM 953 09:20 Standard and BKW to ALQ 16 Nov PA 459 11:30 Standard","Amelia Hart 9C out / 9D back; Noah Hart 9B out / 9E back; Total $660.88, card ending 4242"]},{"id":"FR-MNG-04","weight":"Should","text":"A member can only open their own bookings.","accept":["Looking up a reference of another member shows \"Booking RC5V1T was not found\" and reveals nothing"]},{"id":"FR-MNG-05","weight":"Could","text":"Manage pages require sign-in; a signed-out visit to a booking shows \"Sign in to manage your booking\" and returns to that booking after login."}]},{"id":"CAN","title":"Cancellation and seat changes","summary":"Fare-based refunds and the seat-change window.","reqs":[{"id":"FR-CAN-01","weight":"Must","text":"Cancelling a Standard booking deducts a $75.00 fee per paying passenger per flight from the fare; taxes and seats are refunded. Refund = amount paid minus fee. The dialog shows Paid, Cancellation fee and Refund to card, and nothing changes until confirmed.","accept":["PX4K7M: Paid $660.88; Cancellation fee $300.00; Refund to card $360.88","Escape or \"Keep booking\" closes the dialog; status stays Confirmed","Confirming: status Cancelled and note \"Refunded $360.88 to the card ending 4242, after a $300.00 cancellation fee\"","The booking moves to the Cancelled tab (2 cancelled, 2 upcoming)"]},{"id":"FR-CAN-02","weight":"Should","text":"Cancelling a Basic booking refunds taxes only; the fare and seats are kept. Flex refunds in full.","accept":["QT9W2C: Paid $132.42; Cancellation fee $0.00; Not refundable $103.00; Refund to card $29.42"]},{"id":"FR-CAN-03","weight":"Could","text":"Seat changes close 24 hours before departure.","accept":["QT9W2C (departs next day 05:05): \"Seat changes close 24 hours before departure\" and the seat is unchanged"]},{"id":"FR-CAN-04","weight":"Could","text":"The bookings table has Reference, Trip, Departs, Passengers, Status and Total columns with right-aligned totals; the cancel dialog is centred over a dimmed page with \"Keep booking\" as the quiet button and \"Cancel booking\" as the danger button."}]}],"nfr":[{"id":"NFR-01","weight":"Could","text":"At 390px width the sidebar collapses behind a Menu button (with a drawer that \"Close menu\" dismisses), results stack with filters above the list and there is no horizontal page scroll."}],"glossary":[{"term":"Fare family","meaning":"Basic (no bags, no changes, taxes-only refund), Standard (1 bag, $75 fee), Flex (2 bags, free changes, full refund)."},{"term":"Exit row","meaning":"Row 14; not available to passengers under 16 or adults travelling with an infant."}],"outOfScope":["Real payment networks","Loyalty points","Check-in and boarding passes"]}