mirror of
https://github.com/mblanke/holiday-travel-app.git
synced 2026-03-01 05:20:22 -05:00
Initial commit: Holiday Travel App with resort comparison, trip management, and multi-provider search
This commit is contained in:
370
RESORT_COMPARISON_GUIDE.md
Normal file
370
RESORT_COMPARISON_GUIDE.md
Normal file
@@ -0,0 +1,370 @@
|
||||
# Resort Comparison Tool - User Guide
|
||||
|
||||
Compare multiple resorts with automatic flight search, TripAdvisor ratings, and feature matching based on your preferences.
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Option 1: Interactive Mode
|
||||
```powershell
|
||||
.\compare-resorts.ps1
|
||||
```
|
||||
Paste your resort list when prompted.
|
||||
|
||||
### Option 2: Test Mode (Pre-loaded Data)
|
||||
```powershell
|
||||
.\compare-resorts-test.ps1
|
||||
```
|
||||
Uses the 14 resorts you provided for testing with departure date Jan 15, 2026.
|
||||
|
||||
---
|
||||
|
||||
## 📋 What You Get
|
||||
|
||||
### 1. **Comparison Grid**
|
||||
- Resort rankings based on your preferences
|
||||
- TripAdvisor ratings and review counts
|
||||
- Price ranges ($$$ - $$$$$)
|
||||
- Feature ratings (0-10 scale)
|
||||
|
||||
### 2. **Flight Information**
|
||||
- Automatic flight links for each destination
|
||||
- Skyscanner, Google Flights, and Air Canada links
|
||||
- Estimated flight prices from Ottawa
|
||||
- Departure date: January 15, 2026 (configurable)
|
||||
|
||||
### 3. **Feature Matching**
|
||||
Rate these features 0-10:
|
||||
- 🏖️ **Beach** - Direct beach access
|
||||
- 🏊 **Pool** - Swimming pool quality
|
||||
- ⛳ **Golf** - Golf courses nearby
|
||||
- 💆 **Spa** - Spa & wellness facilities
|
||||
- 🍽️ **Food** - Dining options
|
||||
- 🎉 **Nightlife** - Entertainment
|
||||
- 🛍️ **Shopping** - Shopping options
|
||||
- 🏛️ **Culture** - Cultural attractions
|
||||
- 🚵 **Outdoor** - Activities
|
||||
- 👨👩👧👦 **Family** - Family-friendly
|
||||
|
||||
### 4. **TripAdvisor Ratings**
|
||||
- Current ratings (out of 5.0)
|
||||
- Number of reviews
|
||||
- Integrated into match scoring
|
||||
|
||||
---
|
||||
|
||||
## 🏖️ Included Test Resorts
|
||||
|
||||
### Mexico - Riviera Maya & Tulum (CUN Airport)
|
||||
1. **Bahia Principe Luxury Sian Ka'an** - 4.5/5 ⭐ (8,234 reviews)
|
||||
2. **Catalonia Royal Tulum** - 4.5/5 ⭐ (6,421 reviews)
|
||||
3. **Secrets Akumal Riviera Maya** - 4.5/5 ⭐ (9,127 reviews)
|
||||
4. **UNICO 20°87° Hotel Riviera Maya** - 5.0/5 ⭐⭐⭐⭐⭐ (3,894 reviews)
|
||||
5. **TRS Yucatán Hotel** - 4.5/5 ⭐ (5,621 reviews)
|
||||
6. **Barcelo Maya Riviera** - 4.5/5 ⭐ (12,453 reviews)
|
||||
7. **Valentin Imperial Riviera Maya** - 4.5/5 ⭐ (8,934 reviews)
|
||||
8. **Grand Sirenis Riviera Maya** - 4.0/5 ⭐ (7,821 reviews)
|
||||
9. **Dreams Tulum Resort & Spa** - 4.5/5 ⭐ (6,754 reviews)
|
||||
|
||||
### Dominican Republic - Punta Cana (PUJ Airport)
|
||||
10. **Hyatt Zilara Cap Cana** - 5.0/5 ⭐⭐⭐⭐⭐ (9,821 reviews)
|
||||
11. **Secrets Cap Cana** - 4.5/5 ⭐ (8,432 reviews)
|
||||
12. **Dreams Onyx Resort & Spa** - 4.5/5 ⭐ (5,643 reviews)
|
||||
13. **Royalton CHIC Punta Cana** - 4.5/5 ⭐ (7,234 reviews)
|
||||
14. **Iberostar Grand Bávaro** - 4.5/5 ⭐ (6,821 reviews)
|
||||
|
||||
---
|
||||
|
||||
## 📊 Example Output
|
||||
|
||||
### Top 3 Resorts View
|
||||
```
|
||||
========================================
|
||||
🏆 TOP 3 RESORTS FOR YOU
|
||||
========================================
|
||||
|
||||
🥇 #1: UNICO 20°87° Hotel Riviera Maya
|
||||
📍 Riviera Maya, Mexico [CUN]
|
||||
⭐⭐⭐⭐⭐ 5.0/5.0 (3,894 reviews)
|
||||
💰 $$$$$ | ✈️ $500-$800
|
||||
🎯 Match Score: 942/1000
|
||||
Best Features:
|
||||
• pool: ██████████ 10/10
|
||||
• spa: ██████████ 10/10
|
||||
• food: ██████████ 10/10
|
||||
🔗 Flights: https://www.skyscanner.ca/...
|
||||
|
||||
🥈 #2: Secrets Akumal Riviera Maya
|
||||
📍 Akumal, Mexico [CUN]
|
||||
⭐⭐⭐⭐⭐ 4.5/5.0 (9,127 reviews)
|
||||
💰 $$$$$ | ✈️ $500-$800
|
||||
🎯 Match Score: 938/1000
|
||||
...
|
||||
|
||||
🥉 #3: Hyatt Zilara Cap Cana
|
||||
📍 Cap Cana, Dominican Republic [PUJ]
|
||||
⭐⭐⭐⭐⭐ 5.0/5.0 (9,821 reviews)
|
||||
💰 $$$$$ | ✈️ $600-$900
|
||||
🎯 Match Score: 932/1000
|
||||
...
|
||||
```
|
||||
|
||||
### Comparison Table
|
||||
```
|
||||
# Resort Dest Airport Rating Price Beach Pool Spa Food Score
|
||||
- ------ ---- ------- ------ ----- ----- ---- --- ---- -----
|
||||
1 UNICO 20°87° Hotel Riviera Maya CUN 5.0/5 $$$$$ 9 10 10 10 942
|
||||
2 Secrets Akumal Akumal CUN 4.5/5 $$$$$ 10 9 9 9 938
|
||||
3 Hyatt Zilara Cap Cana Cap Cana PUJ 5.0/5 $$$$$ 10 9 9 9 932
|
||||
4 Secrets Cap Cana Cap Cana PUJ 4.5/5 $$$$$ 10 9 9 9 925
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 How Feature Matching Works
|
||||
|
||||
Your preferences are matched against each resort's profile:
|
||||
|
||||
### Example: If you rate Beach:10, Pool:8, Spa:8
|
||||
|
||||
**UNICO 20°87° Scores High:**
|
||||
- Beach: 9/10 × Your rating (10) = 90 points
|
||||
- Pool: 10/10 × Your rating (8) = 80 points
|
||||
- Spa: 10/10 × Your rating (8) = 80 points
|
||||
- **Strong match!**
|
||||
|
||||
**Grand Sirenis Scores Lower:**
|
||||
- Beach: 8/10 × Your rating (10) = 80 points
|
||||
- Pool: 8/10 × Your rating (8) = 64 points
|
||||
- Spa: 7/10 × Your rating (8) = 56 points
|
||||
- **Weaker match**
|
||||
|
||||
The system combines:
|
||||
1. Feature matching score
|
||||
2. TripAdvisor rating bonus
|
||||
3. Normalized to 0-1000 scale
|
||||
|
||||
---
|
||||
|
||||
## ✈️ Flight Information
|
||||
|
||||
### Automatic Flight Links Generated For:
|
||||
|
||||
**From:** Ottawa (YOW)
|
||||
**To:** CUN (Cancun) or PUJ (Punta Cana)
|
||||
**Date:** January 15, 2026
|
||||
**Return:** January 22, 2026 (7 nights)
|
||||
|
||||
Each resort gets:
|
||||
- **Skyscanner Link** - Direct search with dates
|
||||
- **Google Flights Link** - Google's flight search
|
||||
- **Air Canada Link** - Book directly with AC
|
||||
|
||||
### Estimated Flight Prices
|
||||
- **Ottawa → Cancun (CUN):** $500-$800 CAD
|
||||
- **Ottawa → Punta Cana (PUJ):** $600-$900 CAD
|
||||
|
||||
*Prices are estimates. Click links for current prices.*
|
||||
|
||||
---
|
||||
|
||||
## 📤 Export Features
|
||||
|
||||
### CSV Export
|
||||
Includes all data:
|
||||
- Rankings and match scores
|
||||
- All 10 feature ratings
|
||||
- TripAdvisor data
|
||||
- Flight links (clickable in Excel)
|
||||
- Price ranges
|
||||
|
||||
**Filename Format:**
|
||||
```
|
||||
resort_comparison_test_2025-10-29_143052.csv
|
||||
```
|
||||
|
||||
### What's in the CSV:
|
||||
```
|
||||
Rank,Resort,Destination,Country,Airport,DepartureDate,ReturnDate,
|
||||
TripAdvisorRating,TripAdvisorReviews,PriceRange,AllInclusive,
|
||||
MatchScore,Beach,Pool,Golf,Spa,Food,Nightlife,Shopping,Culture,
|
||||
Outdoor,Family,EstFlightPrice,SkyscannerLink,GoogleFlightsLink,
|
||||
AirCanadaLink
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Customization
|
||||
|
||||
### Change Departure Date
|
||||
In `compare-resorts-test.ps1`, modify:
|
||||
```powershell
|
||||
$departureDate = "2026-01-15" # Change to your date
|
||||
```
|
||||
|
||||
### Change Trip Length
|
||||
```powershell
|
||||
$tripLength = 7 # Change to 5, 10, 14, etc.
|
||||
```
|
||||
|
||||
### Change Origin City
|
||||
```powershell
|
||||
$origin = "YOW" # Change to YYZ, YUL, YVR, etc.
|
||||
```
|
||||
|
||||
### Add Your Own Resorts
|
||||
Edit `lib/resorts.ts` and add to `RESORT_DATABASE`:
|
||||
```typescript
|
||||
"your resort name": {
|
||||
name: "Your Resort Name",
|
||||
destination: "City",
|
||||
country: "Country",
|
||||
airportCode: "XXX",
|
||||
features: {
|
||||
beach: 9, pool: 8, golf: 7, spa: 8,
|
||||
food: 9, nightlife: 7, shopping: 6,
|
||||
culture: 5, outdoor: 8, family: 9
|
||||
},
|
||||
tripAdvisorRating: 4.5,
|
||||
tripAdvisorReviews: 5000,
|
||||
priceRange: "$$$$",
|
||||
allInclusive: true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 Tips for Best Results
|
||||
|
||||
### 1. Be Honest with Preferences
|
||||
- Rate only what matters to you
|
||||
- Don't rate everything 10/10
|
||||
- Focus on 3-5 key features
|
||||
|
||||
### 2. Check Multiple Sources
|
||||
- Open Skyscanner for best flight prices
|
||||
- Use Google Flights for flexible dates
|
||||
- Check Air Canada for direct flights
|
||||
|
||||
### 3. Read Recent Reviews
|
||||
- TripAdvisor ratings are included
|
||||
- Click through to read recent reviews
|
||||
- Check for seasonal differences
|
||||
|
||||
### 4. Consider Total Cost
|
||||
- Resort price range ($$$ - $$$$$)
|
||||
- Flight estimates provided
|
||||
- All-inclusive = more value
|
||||
|
||||
### 5. Compare Similar Resorts
|
||||
- Group Mexico resorts together
|
||||
- Compare DR resorts separately
|
||||
- Different airports = different flight prices
|
||||
|
||||
---
|
||||
|
||||
## 📱 Sample Session
|
||||
|
||||
```powershell
|
||||
PS> .\compare-resorts-test.ps1
|
||||
|
||||
========================================
|
||||
Resort Comparison Tool - TEST MODE
|
||||
========================================
|
||||
|
||||
Testing with 14 pre-loaded resorts:
|
||||
• Bahia Principe Luxury Sian Ka'an
|
||||
• Catalonia Royal Tulum
|
||||
...
|
||||
|
||||
Travel Details (pre-configured):
|
||||
From: YOW (Ottawa)
|
||||
Departure: 2026-01-15
|
||||
Trip Length: 7 nights
|
||||
|
||||
Rate your feature preferences (0-10):
|
||||
Press Enter to use default values
|
||||
|
||||
Beach importance (0-10, default: 10): 10
|
||||
Pool importance (0-10, default: 8): 9
|
||||
Golf importance (0-10, default: 5): 3
|
||||
Spa importance (0-10, default: 8): 9
|
||||
Food importance (0-10, default: 9): 10
|
||||
Nightlife importance (0-10, default: 7): 6
|
||||
|
||||
Your preferences:
|
||||
beach: ██████████ 10/10
|
||||
pool: █████████ 9/10
|
||||
spa: █████████ 9/10
|
||||
food: ██████████ 10/10
|
||||
golf: ███ 3/10
|
||||
nightlife: ██████ 6/10
|
||||
|
||||
Analyzing resorts and searching flights...
|
||||
|
||||
========================================
|
||||
✓ Analysis Complete!
|
||||
========================================
|
||||
|
||||
[Results displayed...]
|
||||
|
||||
Export to CSV? (y/n): y
|
||||
✓ Exported to resort_comparison_test_2025-10-29_143052.csv
|
||||
|
||||
Open flights for #1 resort? (y/n): y
|
||||
Opening flights for UNICO 20°87° Hotel Riviera Maya...
|
||||
|
||||
🎉 Comparison complete! Happy vacation planning! 🏖️✈️
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🆘 Troubleshooting
|
||||
|
||||
**"Unable to connect to the remote server"**
|
||||
- Make sure dev server is running: `npm run dev`
|
||||
- Check it's on port 4000
|
||||
- Wait 5 seconds after starting server
|
||||
|
||||
**"Resort not found in database"**
|
||||
- Check spelling of resort name
|
||||
- Resort may not be in database yet
|
||||
- Add it manually to `lib/resorts.ts`
|
||||
|
||||
**Script won't execute**
|
||||
```powershell
|
||||
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
|
||||
```
|
||||
|
||||
**Need to add more resorts**
|
||||
- Edit `lib/resorts.ts`
|
||||
- Add to `RESORT_DATABASE` object
|
||||
- Restart server: `npm run dev`
|
||||
|
||||
---
|
||||
|
||||
## 📈 Understanding Match Scores
|
||||
|
||||
**900-1000:** Perfect match - Resort excels in your priorities
|
||||
**800-899:** Excellent match - Strong alignment with preferences
|
||||
**700-799:** Good match - Meets most requirements
|
||||
**600-699:** Fair match - Some alignment
|
||||
**Below 600:** Poor match - Consider other options
|
||||
|
||||
**Score Components:**
|
||||
- Feature matching (70%)
|
||||
- TripAdvisor rating (30%)
|
||||
|
||||
---
|
||||
|
||||
## 🎉 Next Steps
|
||||
|
||||
1. **Run the test** - `.\compare-resorts-test.ps1`
|
||||
2. **Review top 3** - Check flight prices
|
||||
3. **Export CSV** - Compare in Excel
|
||||
4. **Book flights** - Click Skyscanner links
|
||||
5. **Book resort** - Search resort name + "all-inclusive deals"
|
||||
|
||||
---
|
||||
|
||||
Happy resort hunting! 🏖️✈️🌴
|
||||
Reference in New Issue
Block a user