RoomieMatch is a full-stack mobile application designed to simplify the stressful process of finding compatible roommates and flatmates. By combining a Tinder-style swipe interface with a Machine Learning recommendation engine, RoomieMatch moves beyond simple filtering to provide high-compatibility suggestions based on lifestyle, budget, and location.
- Swipe-to-Match: Intuitive UI for browsing potential roommates or available rooms.
- Smart Profiles: Detailed user profiles including education, career, lifestyle habits, and specific roommate requirements.
- Dynamic Filtering: Filter by City, University, Utilities, Price Range, and Neighborhood.
- Google Maps Integration: Visualize apartment locations and proximity to key landmarks or universities.
- AI Matching Engine: A hybrid recommendation system that learns user preferences over time.
- Real-time Visualization: Data dashboards for users to see market trends (price averages in specific areas).
| Layer | Technology |
|---|---|
| Frontend | React Native, Expo, Redux Toolkit |
| Backend | Node.js, Express.js |
| Database | MongoDB (NoSQL) |
| Machine Learning | Python (Scikit-learn, Pandas, NumPy) |
| Data Visualization | Matplotlib, Seaborn (for analysis), Victory Native (for in-app charts) |
| APIs | Google Maps Platform (Places, Geocoding, Maps SDK) |
To provide "Solid" matching, RoomieMatch uses a Hybrid Collaborative Filtering & Content-Based Model.
Each user profile is converted into a feature vector. We use Cosine Similarity to calculate the distance between a user's requirements () and a potential roommate's profile ().
We utilize K-Means Clustering to group users into "Lifestyle Archetypes" (e.g., "The Studious Night Owl," "The Social Professional"). This allows the algorithm to suggest users within the same cluster even if they haven't explicitly "liked" each other yet.
The project includes a dedicated data pipeline to analyze housing trends:
- Exploratory Data Analysis (EDA): Using
Matplotlibto visualize price distribution across different neighborhoods. - Requirement Correlation: Heatmaps showing the correlation between price points and amenities (e.g., Wi-Fi, Gym, AC).
- Model Performance: Confusion matrices and ROC curves to validate the matching algorithm's accuracy.
- Client Layer: Expo-based React Native app handling Geolocation and UI interactions.
- API Layer: RESTful API built with Express, managing JWT authentication and CRUD operations.
- Intelligence Layer: A Flask/FastAPI service that hosts the Scikit-learn model. It receives user vectors and returns a list of "High-Probability" matches.
- Data Layer: MongoDB stores flexible user documents, allowing for varied profile attributes without rigid schema constraints.
- Node.js (v16+)
- Python 3.8+
- Expo CLI
- MongoDB Atlas Account
- Clone the Repo
git clone https://github.com/yourusername/RoomieMatch.git
- Setup Backend
cd backend
npm install
npm start
- Setup ML Service
cd ml-service
pip install -r requirements.txt
python app.py
- Setup Frontend
cd frontend
npm install
npx expo start
- Integration of Real-time Chat using Socket.io.
- In-app Identity Verification (KYC).
- Deep Learning (Neural Collaborative Filtering) for improved matching.
- Support for 3D Virtual Room Tours.
Would you like me to generate the Python script for the Scikit-learn Matching Model to get your ML service started?
Ynez Dias