Skill instructions
find-flights3.64 KB
View saved version →
---
name: find-flights
description: "Search and compare live TravelYalla flight prices (one-way, round-trip or multi-city) and give a travelyalla.com booking link. Use for any request for flights, airfare, plane tickets or the cheapest way to fly on known dates, in English or Arabic (طيران، رحلات طيران، تذاكر طيران، حجز طيران، أرخص طيران), especially to, from or within Egypt, Saudi Arabia and the Gulf."
---
# Find flights
Tools: `search-flights`, then `get-flight-details` when the user wants baggage or fare details for one option.
Explicit user instructions take priority over the defaults here.
## 1. Collect the trip
You need these before searching:
- **From and to.** Use 3-letter IATA airport codes (Cairo `CAI`, Dubai `DXB`, Riyadh `RUH`, Jeddah `JED`, London Heathrow `LHR`). For a city with several airports, use its main airport unless the user names another. Ask if you are not sure of the code.
- **Dates.** Resolve relative dates ("next weekend", "the 10th") against today's date. Never search a date in the past.
- **Trip type.** A return date or "round trip" means two legs. Otherwise search one-way.
If something required is missing, ask for all of it in one short question. Do not ask about anything that has a default:
- 1 adult, 0 children, 0 infants. Children are 2–11 years old and infants are under 2.
- Economy cabin. The other options are `business` and `first`.
## 2. Search
Call `search-flights` with:
- `itineraries`: one `{departure, arrival, date}` per leg, in travel order. A round trip has two legs, the second one reversed. Write dates as `DDMMMYYYY` in upper case, for example `16OCT2026`.
- `adults`, `children`, `infants`, `class`.
- `nationality`: the traveller's own country as an ISO-2 code (`EG`, `SA`, `AE`), never the destination's. It sets the fare and the default currency. Use it if you know it. If you don't, search anyway and offer to re-run for their nationality.
- `currency`: only if the user asked for one.
- `language`: `ar` when the user writes in Arabic.
- `limit`: 10 by default. Raise it, up to 50, when filtering by airline, stops or time leaves too few results.
The search takes about 20–30 seconds, so tell the user once that you are searching.
If the search fails or returns nothing, retry once. If it still fails, say so and suggest a nearby date or airport. Do not invent results.
## 3. Present the results
Show the 3–5 best options in a compact table. For each one, give:
- price and currency
- airline names (from `airlines`)
- departure and arrival times for each leg
- stops
- duration
Rules for the table:
- `price` is the total for all passengers in the search. With more than one passenger, also show the price per person.
- Work out each leg's duration from that trip's own `duration`. Do not use the itinerary-level `duration`.
- Label the **cheapest** option, the **fastest** one (shortest total of the trip durations) and, if it differs, the best balance of the two.
- Write times as local clock times. Mark a next-day arrival with "+1".
- Filter on the returned data for requests like "non-stop only" (`stops` = 0), "Emirates only" or "morning departures". Say how many options matched.
Prices are live and can change until the booking is paid. Say so once.
## 4. Details
When the user picks an option, call `get-flight-details` with that `search_id` and itinerary `id`. Report the checked and cabin baggage allowance per trip and passenger type.
## 5. Booking link
End with a travelyalla.com link built from the search, as described in [references/booking-links.md](references/booking-links.md). The user books and pays on the website. Never collect payment details in the chat.
Referenced files: 1 — file references are metadata, not package contents.
find-hotels3.88 KB
View saved version →
---
name: find-hotels
description: "Search and compare live TravelYalla hotel prices by city or hotel name, filter by stars, guest score, price or distance, and give travelyalla.com booking links. Use for any request for hotels, stays, accommodation or a hotel's details, in English or Arabic (فنادق، فندق، حجز فندق، إقامة، أرخص فندق), especially in Egypt, Saudi Arabia (including Makkah and Madinah) and the Gulf."
---
# Find hotels
Tools: `search-destinations`, then `search-hotels`, then `get-hotel-details` for a hotel the user wants to know more about.
Explicit user instructions take priority over the defaults here.
## 1. Collect the stay
You need these before searching:
- **Destination.** A city, area or hotel name.
- **Check-in and check-out dates.** Resolve relative dates against today's date. Never use past dates. "Next weekend" means Friday to Sunday unless the user's region suggests Thursday to Saturday. State which dates you used.
- **Guests per room.** If the user doesn't say, assume 2 adults in 1 room and tell them so. Children need their ages, from 0 to 17.
If the destination or the dates are missing, ask for them in one short question.
## 2. Resolve the destination
Call `search-destinations` with what the user said.
- Take a hit with `type: "city"`. Use its `code` as `city` and its `country.code` as `country_code`.
- If the user named a hotel, take the hotel hit's city code and country, and remember the hotel's name so you can find it in the results.
- If several cities share the name, for example London in GB and London in US, pick the one the context points to. Ask if it's unclear.
## 3. Search
Call `search-hotels` with:
- `city`, `country_code`.
- `check_in`, `check_out` as `DDMMMYYYY` in upper case, for example `16OCT2026`.
- `rooms`: one entry per room, for example `[{"adults": 2, "children": [7]}]`.
- `nationality`: the guest's own country as ISO-2, not the destination's. Rates and the default currency depend on it. Use it if known. Otherwise search anyway and offer to re-run.
- `currency`: only if the user asked for one. Never default to the destination's currency.
- `language`: `ar` when the user writes in Arabic.
- `sort_by` and `sort_dir`:
- `price` / `asc` for "cheap" or "budget"
- `stars` / `desc` for "luxury" or a star level
- `rated` / `desc` for "best" or "top-rated" (also the default)
- `distance` / `asc` for "central" or "near the centre".
- `limit`: 10. Raise it when filters leave too few results.
The search takes about 20–30 seconds, so tell the user once.
If the search fails (for example "no provider answered"), retry once. If it still fails, say so and suggest other dates. Never invent hotels or prices.
## 4. Present the results
Show the 3–6 best matches. For each one, give:
- `name` and `stars`
- guest score as `review_score` from `review_count` reviews, when present
- `distance_to_center_km`, when present
- price per night (`night`) and the stay total (`total` for `nights` nights) in `currency`.
Apply the user's filters to the returned data, such as stars, maximum price or minimum score, and say how many hotels matched. Prices are live and can change until booked.
For a landmark such as "near the British Museum", `distance_to_center_km` measures distance from the city centre, not from the landmark. Use `get-hotel-details` coordinates for the top few candidates and describe nearness only approximately.
## 5. Details
Call `get-hotel-details` with a hotel's `code` when the user asks about it. Report its address, check-in and check-out times, and facilities.
Room types, board and cancellation terms are not available here. Send the user to the hotel's page for those.
## 6. Booking link
Give each hotel you recommend a travelyalla.com link built as described in [references/booking-links.md](references/booking-links.md). The user books and pays on the website. Never collect payment details in the chat.
Referenced files: 1 — file references are metadata, not package contents.
flexible-dates1.94 KB
View saved version →
---
name: flexible-dates
description: "Find the cheapest day to fly within a date range by comparing several TravelYalla flight searches. Use when the travel dates are flexible, for example \"cheapest day in November\", \"any weekend next month\", \"±3 days\" or أرخص يوم للسفر / تواريخ مرنة."
---
# Flexible-date flight search
Tool: `search-flights`, called once per candidate date or date pair. Follow the `find-flights` skill for airport codes, date format, passengers, nationality, currency and language.
## 1. Choose candidate dates
Each search takes about 20–30 seconds, so search **at most 5 dates**, or 5 date pairs for a round trip. Tell the user which dates you will check before you start.
- "±N days": the requested date plus a spread around it, for example −2, −1, 0, +1, +2.
- "A month" or "any time in": spread the dates across the period. Prefer days the user mentioned, then weekdays, which are often cheaper (Tuesday to Thursday). Say that this is a sample, not every day.
- "Weekends": the next few Friday–Sunday pairs in the period, or Thursday–Saturday if that suits the user's region better.
- For a round trip, keep the user's trip length fixed and move both dates together.
Never include past dates.
## 2. Search
Call `search-flights` for each candidate with `limit: 3`. Use the same passengers, cabin, nationality and currency for every search so the prices are comparable.
If a search fails, retry it once. If it fails again, mark that date "no result" and carry on.
## 3. Compare
Show one table with a row per date and these columns:
- date or dates
- cheapest price and currency
- airline
- stops
- duration
Mark the cheapest date. If the cheapest option has worse stops or a much longer duration, mention the next-best date with a better flight.
## 4. Next step
Offer the full option list for the chosen date, following `find-flights` step 3, and give that date's booking link from the `find-flights` reference.
get-started1.62 KB
View saved version →
---
name: get-started
description: "Introduce TravelYalla and help the user start a flight or hotel search. Use when the user first opens TravelYalla, greets it, or asks what TravelYalla can do."
---
# Get started with TravelYalla
TravelYalla searches live flight and hotel prices and links each result to travelyalla.com, where the user books and pays.
Reply in the user's language. If they write in Arabic, answer in Arabic.
## What to tell the user
Keep it to a few lines:
- **Flights:** one-way, round-trip and multi-city. Compare by price, stops, airline, departure time and baggage.
- **Hotels:** search by city or hotel name. Narrow by stars, guest score, price or distance from the centre.
- **Flexible dates:** find the cheapest day to fly within a range.
- **Trip plans:** flights plus a matching hotel, with an estimated total.
Then offer two or three example requests that fit what the user said so far, such as:
- "Find the cheapest round-trip flights from Cairo to Dubai next weekend"
- "Show me top-rated hotels in Dubai for 2 adults next weekend"
- "Plan a 5-day trip from Riyadh to Cairo in November"
Finish by asking where and when they want to travel.
## What TravelYalla cannot do here
Say so plainly when the user asks for these, and point them to travelyalla.com or its support page (https://travelyalla.com/en-WW/contact-us):
- Taking payment or completing a booking inside the chat.
- Viewing, changing or cancelling an existing booking.
- Live flight status, visas or travel-document rules.
## Next step
When the user gives a trip, follow the matching skill: `find-flights`, `find-hotels`, `flexible-dates` or `plan-trip`.
plan-trip2.63 KB
View saved version →
---
name: plan-trip
description: "Plan a trip with TravelYalla: round-trip flights plus a hotel that matches the dates, an estimated total against the budget, and booking links. Use when the user asks to plan a trip, holiday, getaway or Umrah stay, or wants flights and a hotel together (خطط رحلة، رحلة، إجازة، طيران وفندق)."
---
# Plan a trip
Tools: `search-flights`, `search-destinations`, `search-hotels` and, if useful, `get-hotel-details`. Follow the `find-flights` and `find-hotels` skills for how to call each tool and how to build links.
Explicit user instructions take priority over the defaults here.
## 1. Collect the trip
You need:
- where the user is travelling from and to
- the dates, or a month plus the trip length
- the number of travellers.
The budget and preferences (hotel stars, area, non-stop flights) are optional but useful. If a required item is missing, ask for everything missing in one short question.
If the user gives only a month and a length ("5 days in November"), choose specific dates and state them. Use the `flexible-dates` skill only if the user wants the cheapest dates.
## 2. Flights first
Search round-trip flights with `search-flights` as in `find-flights`. Pick a recommended option, the cheapest reasonable one unless the user prefers otherwise, and note its arrival and return departure times.
## 3. Hotel matching the flights
- Check-in is the outbound arrival date in local time. If the arrival is after midnight, mention that the room for the night before may be needed.
- Check-out is the return flight's departure date.
- Use the same `nationality` and **the same `currency`** as the flight search so the total adds up. If the flight search returned a currency, pass it to `search-hotels`.
- Size the rooms for the group: by default up to 2 adults per room, with children in their parents' room.
Search with `search-destinations`, then `search-hotels`, as in `find-hotels`. Pick 2–3 hotels across price levels.
## 4. Summary
Present:
1. **Flights:** the recommended option with times, airline, stops and price.
2. **Hotels:** 2–3 options with stars, guest score, nightly price and stay total.
3. **Estimated total:** flights plus each hotel option, in one currency, compared with the budget if one was given. If you can't make it fit, say what would (other dates, fewer stars, a stop).
4. **A light day-by-day outline**, clearly labelled as suggestions from general knowledge rather than TravelYalla data. Keep it short.
5. **Booking links** for the flight search and each hotel.
Prices are live and change until booked. Booking and payment happen on travelyalla.com, never in the chat.