Monitor weather forecasts and local events during your trip. Auto-suggest activity swaps when conditions change (outdoor→indoor if rain, etc.). Track strikes, protests, closures, and real-time disruptions. Use during trip for day-by-day adjustments and real-time recommendations.
Your travel companion that adapts plans when conditions change.
python3 scripts/monitor_trip.py \
--city Bangkok \
--country TH \
--dates 2025-05-15:2025-05-20 \
--activities "grand_palace,chatuchak,rooftop_bar" \
--alert-channel telegram
| Flag | Description | Example |
|---|---|---|
--city | Destination city | Bangkok, Tokyo |
--country | Country code | TH, JP |
--dates | Trip dates | 2025-05-15:2025-05-20 |
--activities | Planned activities | activity1,activity2 |
--alert-channel | Where to send alerts | telegram, whatsapp, email |
--check-frequency | How often to check | daily, hourly, 6h |
| Condition | Original | Swap To |
|---|---|---|
| 🌧️ Heavy rain | Outdoor market | Indoor mall, museum |
| 🔥 Extreme heat | Walking tour | Temple (A/C), spa |
| ⚠️ Protest/strike | City center | Suburbs, nature |
| 🚫 Attraction closed | Specific site | Nearby alternative |
| 🌊 Rough seas | Island boat trip | Coastal restaurant |
📅 Day 1 (May 15) - Bangkok
├─ 🌤️ Weather: 32°C, 20% rain → ✅ Good
├─ 📋 Plan: Grand Palace (outdoor)
├─ ⚠️ Alert: None
└─ 💡 Tip: Start early (9am) to avoid heat
📅 Day 2 (May 16) - Bangkok
├─ 🌧️ Weather: 30°C, 70% rain → ⚠️ Afternoon storms
├─ 📋 Plan: Chatuchak Market (outdoor)
├─ 🔄 SWAP TO: MBK Center (indoor mall) or Jim Thompson House
├─ ⚠️ Alert: None
└─ 💡 Tip: Visit market morning, indoor afternoon
📅 Day 3 (May 17) - Bangkok
├─ 🌤️ Weather: 33°C, 10% rain → ✅ Good
├─ 📋 Plan: Rooftop bar evening
├─ ⚠️ Alert: None
└─ 💡 Tip: Sunset at 6:30pm, book ahead
| Alert | Severity | Action |
|---|---|---|
| 🌧️ Weather | Low-Medium | Swap activities |
| 🚨 Strike/Protest | High | Avoid area |
| 🏛️ Closure | Medium | Find alternative |
| 🦠 Health | High | Check requirements |
| 🚗 Transport | Medium | Plan alternate route |
Called by Coordinator during trip:
# Daily check during trip
daily_plan = TripMonitor.check_day(
city="Bangkok",
date="2025-05-16",
planned_activities=["grand_palace", "chatuchak"]
)
if daily_plan['needs_swap']:
send_alert(f"Swap {daily_plan['swap_from']} → {daily_plan['swap_to']}")
references/event_sources.md — Where to get local event datareferences/activity_alternatives.md — Indoor/outdoor swap pairs