With soaring rent prices in big cities like Addis Ababa, paying rent for a significant portion of the market in the city has become a challenge. To solved this, shared housing has been taking place, but through referrals from trusted friends and family members; this manual process doesn't work for everyone as it can be time consuming and inconvenient, since the referrals have to be at the right place and right time.
Our solution is to match people with strangers whom they have a lot in common with so as to minimize any potential conflicts in living situations. Even though there are a number of competitor applications in the market, our approach in matching users is different. This application solves the problem using two algorithms: the first filters date, price and location and the second calculates the compatibility match percentage for each filtered result.
Our main project objective is to design a responsive and robust web application that will match users looking for shared housing. Aside from the matching, there are a number of useful feature we shall implement, some of which include: messaging, favorites, sending requests, filtering, google maps, task scheduling and background queued jobs.
Shared housing using matching algorithms is a web based online platform that helps users list a room, house or apartment to be shared; it uses matching algorithms to ensure users get the best potential match to rent and live with.
Housing is one of the necessities for humans, and it accounts for the largest share of household consumption expenditure. In big and expensive cities like Addis Ababa, production falls far short of providing a decent and affordable shelter for most urban households. Thus, many of those who do not have enough money to live in the formal market are pressured to share housing with family or friends to rent.
What this web application will do is make the process of shared housing fast, efficient and convenient using various matching algorithms. Since not everyone has family member or friend that happens to be at the right place and time with free room or living space to share or rent; this application will be useful to many people who are facing this problem.
As the second most populous country in Africa, Ethiopia is currently facing the pressure of rapid urban expansion and growing urban housing demand [1]. Ethiopian cities generally have a large proportion of sub-standard housing stock and deficient affordable formal rental market.
According to the recent statistics, Addis Ababa, the capital of Ethiopia, has a population of 4.6 million [2]. The dramatic increase in population implies a higher demand for housing which in turn increases the need for residential real estate. In 2015, the housing needs reached about 2,250, 831 units, which equated to a demand of 225,000 new housing per annum [3].
Housing is an essential need affecting the well-being of all citizens. Accordingly, providing adequate and affordable housing is a core national policy objective, especially given its impact on inequalities. Lower-income households typically live in lower-quality housing; on which they spend a greater share of their disposable income. One in three low-income private renters spends more than 40% of their disposable income on rental costs alone [4]. Overcrowded and poor living conditions, whether for formal or informal housing, further undermine well-being in many developing countries.
The need for renting depends on socioeconomic and demographic dynamics. Migrants from the countryside to urban areas, new job seekers who recently joined the labor market, students, divorced or separated families, may all rely at least temporarily on rental housing. For them, renting is a permanent or semi-permanent state. Rapid urbanization and the resulting population growth, both through migration and natural increase have stimulated most immigrants to new urban households initially to rent or share accommodation.
Since 2006, Ethiopia has undertaken an ambitious housing program to significantly increase the quantity of affordable urban housing, although the same challenges remain.
Lack of sufficient and affordable housing is one of the major problems in Addis Ababa. Housing affordability compatible with different income levels of the city residents is lucking. It is recognized that the prices of housing tend to increase as the demand for housing increases [5].
Due to this massive shortage and skyrocketing renting costs, most people in the city cannot afford to live there; in some cases, left homeless or forced to live in condominiums houses which also have currently become expensive relative to the income of the target class [6], others are forced to live very far from their places of work or in places with insufficient and irregular water and electricity supply.
Therefore, for some people, the best way to mitigate some these problems; especially high rent costs, is to get referrals through friends or relatives to help them find someone who is hopefully, at the right place and right time for them to rent or live with. This doesn’t work for most people, thus, the next best thing is to match you with strangers that shares similar interest, has your preferred personality, preferences, interests, location, age and budget, with you, using algorithms that our system runs to find the best potential match.
Since most shared housing applications match like-for-like questions, we decided to take a different approach to do the matching using a compatibility matching algorithm inspired by a dating site Ok-Cupid [7] but modified for our shared housing situation. This matches users based on answering questions that have predefined weights and answers which they have to choose. The users have to answer these questions in two ways: they choose their answers and they choose answers for what they expect from a match; additionally, they select a predefined weight for each question they answer, the weight they choose is based on the questions importance in their current living situation.
The general objective of this project is to design and implement a web based application that will help users search for or list shared housing such as rooms or apartments.
This project will focus on developing a web-based shared housing application that uses various matching algorithms for people leaving in expensive cities such as Addis Ababa. The system will let users post rooms or shared apartments, and users looking for rooms or shared apartments will be able to search for them. Furthermore, to minimize conflicts for people wanting to rent together, we will design and implement various matching algorithms. The first is a filter that the user sets, it filters based on date, rent price, and location. Once all these filtered results are obtained, the second algorithm is activated.
The second algorithm calculates the compatibility match percentage for each user in the filtered result. In order for this algorithm to work, during signup the user is asked a list of questions that have predefined answers and weight, the user answers the questions in two ways: first you provide your answer, then the answer you would like from your match and then you select the questions importance to the living situation; this is your compatibility data used to match you with other people.
In addition, the application will have an admin panel, here the admin will be able to manage users, site features and various application settings.
Below are the limitations of the project:
We will us Rapid Application Development (RAD) methodology for faster software delivery and continuous iterations, since waterfall doesn’t allow for continuous iterations.
RAD is a form of agile software development methodology that prioritizes rapid prototype releases and iteration. This will provide us with enhanced flexibility and adaptability as we make adjustments quickly during the development process, quick iterations that reduce development time and speed up delivery; RAD also encourages code reuse.
We choose Object Oriented Programming (OOP) for our system implementation. OOP relies on the concept of classes and objects. It is used to structure a software program into simple, reusable pieces of code, which are used to create individual instances of objects.
The advantages of this approach include: code reusability, allows for class-specific behavior through polymorphism, it models complex things as reproducible, simple structures, easier to debug and secures information through encapsulation.
Before we can deploy the application, we must prove that it works as intended and is free from defects. This requires a test plan that integrates several testing methodologies and a variety of test, each of which proves some aspect of our applications readiness for deployment. The tests include:
Currently in Ethiopia, the existing online systems don’t have roommate matching. Applications such as Astawq and Mefthe allow users to advertise rental homes or rooms, but fail to match users. Furthermore, most are not focused and tend to offer a variety of services unrelated to housing.
In Ethiopia shared housing is mostly a manual process. Most users have to talk to their friends, friends of friends, and family members in order for them to find a shared co-living space and minimize on rental costs. This process can take weeks if you are lucky, but most of the time it usually takes months to find the right place. Furthermore, if conflicts arise, you have to start the whole process again which may not guarantee you a suitable place. This manual process is time consuming and inconvenient, in addition, not everyone has a family member or friend offering a co-living space at the right place and time.
In the United States of America and other developed and developing countries, application such as Roomster, Roomi and SpareRoom USA and UK allow users to search for roommates and spare rooms, flats to share, rooms for rent and flat mates. These application offer a variety of features such as: social logins to create your profile, search for roommates based on personal interests and living preferences, in-app messaging, show recent postings by people looking for roommates, posting apartments, rooms, and sublets within the app so matches can connect with one another, verification and background check.
Although these applications from USA offer a variety of useful features, they have not dealt with some issues well enough, such as user verification - here most still have fake adverts and incomplete user profiles, some are expensive as they offer a number of in-app purchases to unlock some features and inactive user profiles still exist on searches
Shared Housing using matching algorithms is a web based application that matches people looking for shared housing and people offering shared housing in Ethiopia. It will significantly help solve the problem of high rent costs and housing shortage in cities like Addis Ababa.
Instead of being manual, the system automates the room search process, and the roommate search process. Instead of having to manually search for users or rooms the proposed system shows you potential matches with detailed relevant information on what you are looking for.
Getting referrals through a friends usually means that it is someone close to you, it usually means his personality traits are well known and you can easily tell whether you will get along or not.
There are no associated charges or advertisement in the manual process, as the users are communicated directly with other users, via phone or phase to phase.
The existing system in other countries such as the USA and UK have a variety of helpful features such as social logins to create your profile, search for roommates based on personal interests and living preferences, in-app messaging, show recent postings by people looking for roommates, posting apartments, rooms, and sublets within the app so matches can connect with one another, verification and background check.
The weaknesses of existing systems include lack of, or incomplete user verification, where most still have fake adverts and incomplete user profiles, some are expensive as they offer a number of in-app purchases to unlock some features and inactive user profiles still exist on searches. Some other weaknesses are given below:
In this chapter, we look at the functional and non-functional requirement and various analysis models that depict the application domain.
In this chapter, we look at the functional and non-functional requirement and various analysis models that depict the application domain.
The system connects users searching for a place with users listing a place to be shared. These users will be matched by the system based on the type of place and user they are looking for, and calculates to what extent they will be compatible living together based on the compatibility questions they answered
The use case identified the actors involved in an interaction and names the type of interactions. The set of use cases represents all of the possible interactions that will be descried in the system requirements. Actors in the process, who may be human or other systems are represented by the stick figures. Each class of interaction is represented as a named ellipse.
Actors in our system include: The Lister - the user who lists a shared place, The Searcher - the user who is searching for a shared place, the admin and the System.
Use Case Description is a description of each use case, it shows what the use case is and how it functions
*Due to the large number of tables showing the use case descriptions, we won't be able to show all of them here. Download the PDF version of this technical documentation to access all the use case descriptions.
A sequence diagram is a Unified Modelling Language (UML) diagram that illustrates the sequence of messages between objects in an interaction, it shows object interactions arranged in time sequence. It also depicts the objects involved in the scenario and the sequence of the messages exchanged between the objects needed to carry out the functionality of scenario.
Activity diagrams are typically used for business process modeling, they are used to model the logic captured by a single use case or usage scenario, or for modeling the detailed logic of a business rule. They are used to describe business activities and software systems' functionality.
A class diagram is the heart of UML. It represents the core purpose of UML because it separates the design elements from the coding of the system. UML was set up as a standardized model to describe an object-oriented programming approach. Since classes are the building block of object, class diagrams are the building blocks of UML.
User Interface (UI) Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions. UI brings together concepts from interaction design, visual design, and information architecture.
This chapter will introduce about proposed system design specification. It describes the system at the architectural level, including subsystems and their services, hardware mapping, data management, access control, global software control structure, and boundary conditions. The design specification documents the high-level system design and the low-level detailed design specification. The design document will be used for managing design architecture of the project.
The results of the system design process are recorded in the System Design Document. This document completely describes the system at the architecture level, including subsystems and their services, hardware mapping, data management, access control, global software control structure, and boundary conditions.
Systems It extends all the systems and sub systems of the system.
Architectural design is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability.
We used the three-tier architecture layered architecture with application logic monolithic. The layered architecture helps with separation of concerns, and we think for now a monolithic approach is preferable to a micro-service approach in the beginning since it will offer us easy and faster development.
The architectural design pattern we will use in the application is the MVC architectural pattern. MVC consists of three parts: Model, View, Controller. The Model handles data logic, the view displays the information from the model to the user, the Controller controls the data flow into a model object and updates the view whenever the data changes.
A well designed database gives users access to essential information. In our database design process, we ensured all the tables are in third normal form. Third normal form is enough for most relational databases, which is also for this case.
As we have documented our project findings above, the living costs in big cities such as Addis Ababa has been going up this has made it very difficult for most citizens to pay their rent or find living space in convenient areas. We proposed a web based system to solve this problem through shared housing using matching algorithms; the matching algorithms are very important - users are matched mainly on location, price and compatibility, this reduces the likelihood of conflict in living situations and increase convenience for the users by for example significantly reducing their rent costs and being in a suitable location. The compatibility matching algorithm matches users based on answering questions that have predefined weights and answers which they have to choose. The users have to answer these questions in two ways: they choose their answers and they choose answers for what they expect from a match; additionally, they select a predefined weight for each question they answer based on the questions importance to in their current living situation.
This system will offer detailed information relevant to a shared housing situations, such as relevant details place listings and user profiles. Other useful features include saving favorites, sending messages, sending request, real time notifications, search filters, and showing match percentages. Some features such as verification of users and places couldn't be currently fully automated, as some information needs a human to verify.
In conclusion, some important aspects of the application performance and convenience include: queued job and task scheduling. We realized that calculating compatibility match is a time consuming task that could significantly slow down the system, we therefore, used queued jobs that defer the matching processing to run in the background as the user continues to browse without any performance hit. We used task scheduling to ensure inactive users are automatically deactivated, a convenient feature to ensure active users are only matched with other active users.
Due to time constraints we weren't able to implement and fully address some features that should been documented and implemented, they include:
[1] Matsumot, T. and Crook, J., 2021. Sustainable and inclusive housing in Ethiopia: a policy assessment. Coalition for Urban Transitions. London and Washington, DC. Available at: https://urbantransitions.global/publications.
[2] United Nations, Department of Economic and Social Affairs, Population Division (2016), World Population Prospects: The 2016 Revision, Key Findings and Advance Tables.
[3] Paulos Birhanu, Study on private residential real estate development in Addis Ababa, (M.Sc. Thesis), AAiT, School of Civil and Environmental Engineering, Addis Ababa, 2011.
[4] OECD, 2021. Building for a better tomorrow: Policies to make housing affordable. Employment, Labor and Social Affairs Policy Briefs.
[5] Selam Yohannes and Abebe Dinku, Study on Housing provisions and affordability in private residential real estates in Addis Ababa, AAiT, Shool of Civil and Environmental Engineering, 2018.
[6] Assessment of affordability of condominium houses: The case of Addis Ababa housing construction project office at Tuludimitu Site. By Endale Mekonnen
[7] https://ed.ted.com/lessons/inside-okcupid-the-math-of-online-dating-christian-rudder#review