The client wanted to create a product that would be useful for companies and owners of various real estate objects, including land plots, as well as to increase the speed of calculations involved.
Initially, the customer wanted to get a parser of aggregator websites for listings, which would create archives with data and media files.
The objective of the app was to compare an item with another one and calculate the price with adjustments.
With time, the tasked us also with the creation of calculations in XLSX format and the option to sell access to the app content.
We created a web-based app and segmented all of its functions into separate services. The database, parser, ad processing service, and image downloading and processing service all operate independently.
Search results are presented in a table. After calling about the listings, the client can make adjustments and additions to the data.
Real estate value calculations are presented in Excel tables.
We’ve also implemented a personal account feature. The client can provide customers paid access to the app, so that they can keep their own databases of similar properties and private calculations.
The client reached to us in July 2018. There were no clear ToRs, because the customer preferred more flexibility. They had a lot of ideas, and the ToRs would always be obsolete. We would take a small pool of tasks and execute it, while welcoming and discussing any new ideas. Although this approach slowed down the development process, there was a lot of freedom for unconventional solutions.
The client came to us wanting to simplify the aggregation of ads from various websites. Our task was to create an app that would parse ads from aggregator sites according to the given criteria and store the data in an archive. In the end, it would be possible to estimate the price of an individual property item with an algorithm that uses the prices of similar properties with adjustments.
We started the development from scratch. First we created a parser with no additional features. It surfed the websites with ads, collected them in one place, downloaded the images, made them nice-looking and readable, and sent them as an archive to the client.
Then there was a proposal to create a database of similar properties based on ad parsing, with an opportunity to edit the data by the company’s employees.
Then came the idea of generating an XLSX file with calculations for individual properties. For the calculations, we introduced adjustments for the parameters of similar properties.
Then it was decided to create a personal account for external users with no relation to the company. The app user is given access to the personal account where they can add their own items for calculations and upload listings of similar properties, in case there are not enough similar properties in the general database. Detailed calculations are only visible to the person who has uploaded the item to their personal account.
The client can also add their own similar items to the general database. The app owner calls the sellers, verifies the accuracy of the information in the listings, and adds their item to the database.
The end user receives an XLSX document with a full report: information about the property, photos, details on the analogues, a large summary table with ratios, and screenshots of the references the adjustments were based on.
Testing was mostly done by the client, as they did not set clear ToRs and relied on their own ideas about each feature.
The hardest part was speeding up calculations. The app looked through the items that fit the parameters (3 to 3,000 items). Each parameter involved in the calculations was included in the form with adjustments. We had to calculate each adjustment for each field of each item, then use a formula to find the ones that fit the criteria. This was a very resource-intensive process that needed to be faster.
We had to redo the calculations about ten times. Eventually, we created a separate class with a calculator for each adjustment. It takes the project, analyzes the adjustments involved, creates a common calculator from those classes and runs the item through all the parameters. This improved the calculation speed.
We also used a microservices architecture: each task is handled by a separate service, whether it’s a parser or an ad processing service. The processes work simultaneously without referencing each other, which also speeds up their work.
“The customer is very happy. Before it could take a day or two to calculate everything for one item. Now it takes just about one hour, and you get the required fields filled.
The project still has room for improvement. We need to separate calculations, divide the front and the back ends, and make it so that as many operations as possible could be performed in advance. At the moment, the client wants to finalize the product itself, and then start working on the improvements.“
We’ve reduced the calculation time from one or two days to one hour thanks to the microservices architecture and optimization of calculation algorithms. We’ve added the option to upload information to an XLSX document, and a personal account that provides paid access to the app’s functions.
The customer has been actively using the product since the very start of development and is very happy with its progress. We are now finalizing the calculations of land plots.
We split the task into services. All the processes were put into abstractions, separate services, modules etc., so the team could work simultaneously on different sub-tasks. This approach to the services resulted in faster calculations.