login page
resonable results
<Context-Aware Intelligent Travel Companion
City: Montreal • Platform: Mobile-first web app Leaflet + React • LLM-assisted
Design and implement a context-aware travel companion that gives personalized, real-time recommendations for visitors in Montreal. The app adapts to the user’s location, time, weather, and travel preferences (indoor/outdoor, cuisines, meal times). Wizard-of-Oz inputs allow reliable demo scenarios without exposing the mechanism to end users.
| Context | How it’s captured | How it’s used |
|---|---|---|
| Location | Pin on the image map or use device GPS (mapped to image via two tie points). | Computes on-map distance to POIs and ranks nearby places; updates when pin/GPS changes. |
| Time | Simulated time control (WoZ) with ISO storage. | Filters by opening hours; ready to extend for meal-phase heuristics. |
| Weather | WoZ toggle (sunny/rain/snow/heat). | Suppresses outdoor venues under bad conditions; prefers indoor on rain/snow/heat. |
| User Preferences | Indoor/Outdoor, Meal times, Cuisine chips. | Filters restaurants/cafés by cuisines; honors indoor/outdoor selector. |
F1 — Location detection & nearby recs (5 pts): Pin/GPS → recompute distances; markers and cards update.
F2 — Weather-aware (5 pts): Outdoor filtered out when rain/snow/heat; indoor always allowed.
F3 — Time-aware (5 pts): Opening-hours check per POI; extensible meal windows.
F4 — Preference-aware (5 pts): Indoor/outdoor, cuisines, meal-time inputs drive filtering and ranking.
F5 — Notifications (5 pts): Toasts on pin/time/weather/prefs changes indicate adaptive updates.
POIs are stored with type, indoor, cuisines, hours, budget. Hours are simple daily blocks (24h clock). This supports filtering for open venues and meal-time alignment. The schema is easily extensible with rating, priceLevel, and tags.
- LLM role: Generate human-friendly rationales, soft re-ranking (e.g., food vs. activity during lunch), and conversational follow-ups.
- Adapter: A single function formats context + top candidates and returns a short blurb. Swap providers (OpenAI, Gemini, Copilot) by replacing the adapter internals.
- Privacy: Send only coarse location (rounded coords) and POI IDs; no PII.
- Visibility of system status: Top bar shows active weather/time; notification toasts confirm changes.
- Match to real world: Distances in km; opening hours in local time.
- User control & freedom: Clear Pin; easily toggle weather/time/cuisines.
- Consistency & standards: Uniform chips/buttons; map gestures (pinch zoom/pan).
- Error prevention: Hours & weather checks prevent impossible suggestions (e.g., park at 4 AM).
- Recognition over recall: Inline POI cards with type badges and reasons.
- Flexibility & efficiency: Mobile-first layout; GPS one-tap; preferences persist in store.
- Aesthetic & minimalist: Single information column + map; subdued palette.
- Help & docs: “About” panel explains demo constraints.
- Help users recover: Toasts + simple toggles to change context quickly.
- Open app; show initial Top Picks Nearby.
- Pin a new spot on the map → watch recs update.
- Toggle Weather to “rain” → outdoor venues disappear; museums/cafés remain.
- Change Simulated Time to lunchtime → see restaurants that are “Open now”.
- Toggle Cuisines to add/remove pizza/smoked-meat → list adapts.
- Tap Use My Location (if calibrated) → pin jumps to GPS.
- Point out the LLM blurb and how it adapts with context.
| Area | Action |
|---|---|
| POIs | Add more venues (parks, cafés, museums) incl. hours, budget. |
| Meal logic | Enable meal-phase scoring (breakfast/lunch/dinner windows) and boost relevant cuisines. |
| Calibration | Fill two tie points (image⇄WGS84) for GPS overlay; verify with field clicks. |
| LLM | Connect chosen provider; cache responses; handle offline fallback. |
| Notifications | Ensure toasts for all adaptive changes (pin, weather, time, prefs). |
| Accessibility | Button sizes ≥44px; focus styles; aria-labels for controls & markers. |
- GPS accuracy on image map: Mitigate with two-point calibration and visual sanity checks; allow manual pin.
- Data freshness: For demo, rely on static POIs; future: integrate live APIs (hours/weather) with graceful fallback.
- LLM variability: Constrain prompt; show deterministic fallback text on failure.
| Week | Milestones |
|---|---|
| Wk 1 | POI KB; map image; Leaflet shell; preference UI; WoZ toggles. |
| Wk 2 | Recommender filters (hours/weather/prefs/distance); notifications; demo 1. |
| Wk 3 | GPS calibration; LLM adapter hookup; demo 2. |
| Wk 4 | Polish, a11y, bugfixes; final demo. |
Add rating, openNow(), and priceLevel to the POI schema. Consider budget-aware filtering and transit hints (walk/metro/bike). Offline mode can cache POIs and map.