## 2 Research Questions and Methodology
### Methodology
The 1% contamination parameter was empirically derived from manual inspection of 2000 listings, identifying 20 anomalous entries (1%) with characteristics including price outliers \(>\)3\(\sigma\) from zone mean, impossible area values (\(<\)10 m\({}^{2}\) or \(>\)500 m\({}^{2}\) for student housing), and location-price mismatches [34]. Validation on a stratified holdout set (180 normal, 20 anomalous) achieved precision = 0.92, recall = 0.88, and F1 = 0.90, with a 1.2 ms average inference latency, meeting real-time processing requirements [5]. In terms of storage, MongoDB is used with geocoded coordinates. Listings are filtered and preprocessed for use in a hybrid recommendation engine. The model combines reinforcement learning and keyword-based methods. The system ranks results using a dynamic scoring function shaped by both learned weights and deterministic features like price and distance [7]. A geospatial mapping component enhances decision-making by visualizing listings and rental trends through interactive maps and neighborhood heatmaps  
A React-based interface integrates these features into a unified search, recommendation, and analytics experience [8]. The core of the platform's intelligence is the recommendation engine, which combines reinforcement learning with keyword filtering. The engine's goal is to present the user with a ranked list of rental options that best match their needs and preferences, improving over time as it learns from interactions. An action for the RL agent is essentially the recommendation of a particular listing (or a small set of listings) to display prominently to the user. At any given step (for example, each time the user asks for more suggestions or refreshes the recommendations), the agent must choose which rental property to suggest next from the pool of available listings. The action space is therefore the set of all listings (which can be large), making it a challenge for direct RL implementation. To manage this, we frame the recommendation as choosing a subset or ordering of listings according to certain criteria learned by the agent. The recommendation engine developed in our application incorporates an advanced online learning mechanism based on contextual multi-armed bandits (MAB) rather than traditional Q-learning, following recent industry best practices [8]. Specifically, we implemented the MABWiser 2.7.2 (University of British Columbia, Vancouver, BC, Canada) framework, utilizing the Thompson Sampling policy, which dynamically learns and adjusts recommendations based on real-time user interactions. In our implementation, each rental listing acts as an \"arm\" in the bandit model, and user-specific contextual features such as demographics or browsing history form the contextual inputs. To achieve fine-grained personalization, we apply a K-nearest neighbor strategy (with k = 20) to group similar users, enabling more precise context-based predictions [35]. The bandit's learning process leverages a sliding window of the 100 most recent interactions, placing higher emphasis (approximately three times greater weight) on newer feedback. Additionally, to rapidly detect and respond to shifts in user preference, we integrated a Page-Hinkley drift detector. When significant changes in user interaction patterns are identified, the bandit model initiates a warm start, recalibrating its internal parameters based on the most recent interactions (typically the last 20 events). This design ensures the recommendation engine can swiftly adapt to changing user tastes, minimizing latency in response time.