cd ../works
Preference-Based Property Matching — full view

built for Cubbi

Preference-Based Property Matching

Check it out

Role: Full-stack Developer

Cubbi, a property management platform, wanted to streamline the process of matching tenants with suitable properties — and vice versa.

  • Ruby on Rails
  • ReactJS

Overview

As a full-stack developer, I led the end-to-end development of an intelligent matching system that identifies suitable properties for tenant users, based on their preferences, as well as suitable tenant profiles for landlord users, based on property features.

Key features

  • Matching Profile Data Model: I introduced a new data model called the Matching Profile, which stores each tenant’s preferences (location, number of bedrooms, number of bathrooms, budget range, etc.).
  • Flexible Query System: To power the matching engine, I implemented a modular query system using the Query Object design pattern, which enabled Cubbi to filter suitable properties for a given tenant profile, as well as matching tenants to suitable properties. The system is designed for extensibility: future filters (e.g., pets allowed, furnished status) can be added with minimal effort.
  • Automated Daily Matching Service: I built a background service that runs daily to evaluate new or updated properties against active matching profiles. The service ensures that only new matches are generated (avoiding spamming users with repeat suggestions). It also takes into account the tenant’s or landlord’s decision for the match (ignored, interested, applied, etc.).

What I’ve learned

This project deepened my skills in both system design and practical development:

  • Applied the Query Object design pattern effectively in a production environment.
  • Wrote complex ActiveRecord queries for flexible and performant filtering logic.
  • Gained insight into how real-world recommendation systems function — from data modeling to user behavior tracking.
  • Improved the ability to design modular systems that evolve with product needs.