Inspiration

Hotel management is a high-stakes, opaque industry, and the accommodation sector was hit especially hard by COVID-19, signaling a need for strategic business decision-making. Deciding where to build, what to build, and which features pay for themselves typically requires expensive consultants, years of market experience, and proprietary data. We wanted to make that decision-making process accessible, visual, and interactive, showing that a simulation grounded in market data and predictive ML could give useful guidance in seconds rather than months.

We were also motivated by the gap between "AI that generates text" and "AI that reasons over structured outputs." Large language models are great at explanation, but terrible at doing math. We wanted to build a system where ML models do the prediction and AI agents interpret those predictions, keeping each layer honest.

What it does

Innsight is a hotel investment simulator. It answers three questions: Where should I build a hotel? What kind? And what decisions maximize profitability?

Market Discovery: An interactive Mapbox-powered map showing real hotel inventory sourced from Stay22. It is overlaid with a opportunity heatmap, representing how attractive building a hotel there would be, considering revenue potential, unmet demand, and segment-weighted competition.

Hotel Sandbox: Users configure a hypothetical (or cloned real-world) hotel: type, rooms, star rating, modernity, amenities, target segment, and pricing. On every change, our quantitative models compute predicted ADR, occupancy, guest rating, annual revenue, investment cost, ROI, and payback period. A 3D model updates in real-time to reflect the hotel's apperance.

AI Discussion: Two specialized Gemini-powered agents, a Guest Experience Agent and a Revenue Manager Agent, react to simulation changes in a structured exchange. The guest evaluates comfort, perceived value, and willingness to stay, while the manager grounds every statement in the actual predicted metrics and ends with one actionable recommendation.

How we built it

Data & Map: The Market Discovery map is populated with real accommodation data from the Stay22 API — hotel names, coordinates, prices, ratings, and amenities across Canadian cities. Users can also create hypothetical hotels in the Sandbox, persisted to MongoDB. The opportunity heatmap divides the city into a grid and scores each cell on revenue potential, demand, competition, and risk, producing an Opportunity Score (0–100).

ML Predictions: We trained three XGBoost regressors on real Kaggle datasets. ADR and occupancy models use 70k+ North American Airbnb listings with features like location, star rating, and amenities. For guest ratings, we performed sentence-level NLP on a hotel reviews dataset, extracting sentiment scores for 14 aspects (pool, cleanliness, staff, breakfast, noise, etc.). All three models sit behind a FastAPI service; the Node backend falls back to deterministic formulas on any failure.

Simulation Engine: The backend computes metrics in strict dependency order — Location/Quality → ADR → Occupancy → Revenue → Rating → CapEx/ROI — avoiding circular dependencies. All tunable constants (amenity impacts, competition weights, cost tables) live in a shared config package, not inline code.

Frontend: Next.js + TypeScript + Tailwind CSS, with Mapbox GL + deck.gl for the heatmap, Three.js for a real-time 3D hotel model, and Auth0 for user authentication.

AI Agents: Two Gemini-powered agents provide on-demand commentary. The Guest Agent only sees hotel config (structurally cannot reference revenue), discussing comfort and perceived value. The Revenue Manager receives the full predictions and cites only values the simulation computed, closing with one actionable recommendation.

Challenges we ran into

We found it difficult to determine how user inputs should affect the predicted metrics, especially financial metrics. Hotel revenue and occupancy datasets are were limited, so we relied on Airbnb datasets to train our model to predict ADR and occupancy. This worked out for us, since a large portion of the accommodation listings are vacation rentals and Airbnb-like. We also realized that the Stay22 API does not currently return amenity information. We were unwilling to give up this aspect of the project, so we source accommodation data using SerpAPI to return information from Google Hotels. However, this means only larger hotels have accommodation information, as smaller vacation rental properties are not on Google Hotels. Additionally, we spent a lot of time configuring the heatmap. Since one opportunity score was calculated per 600-800m2 area, the heatmap appeared discrete initially, before we were able to turn it into a continuous gradient.

Accomplishments that we're proud of

We were really proud of our adaptability when it came to not being able to find the exact data we wanted. When we couldn’t find hotel data, we relied more on transparent Airbnb data. When we couldn’t get accommodation information from Stay22, we got it from Google Hotels. Our adaptability kept us calm even when it seemed that our idea wouldn’t work due to lack of data.

Finding the relationships between types of data, such as how the accommodations affect ADR and user ratings, was also a cool process. To achieve this, we analyzed a dataset of hotel reviews using NLP and sentiment analysis to see how positively or negatively certain aspects of hotels, such as complimentary wifi or a noisy environment, affect guest ratings.

We were also proud that we trained XGBoost models, since it was our first time including this kind of predictive ML in a project. This is a more nuanced approach than our original approach of making our sandbox’s financial model based on fixed equations.

What we learned

  • XGBoost model and data training. We found that a task as complex as city design comes with a lot of data. To handle all these numbers, we used XGBoost, which was effective for predicting ADR and occupancy from structured hotel-listing data, but only after careful feature engineering and cleaning.
  • AI agents are better interpreters than predictors. Giving Gemini the actual model outputs and asking it to explain them produces much more grounded responses than asking it to estimate numbers itself.

What's next for Innsight

  • Seasonality: Currently, the models are static snapshots in time. Thus, integrating monthly demand patterns or a timeline would make occupancy predictions far more useful, since the accommodation industry is strongly linked to peak and low seasons.

  • Amenity Data: In the near future, we look forward to seeing Stay22 add amenity data so that we can more accurately represent the amenities of existing accommodations.

Built With

Share this project:

Updates