/
Vinson

Developed a Web-Based App to Calculate Real Estate Value

Vinson is a web app that calculates a property’s value based on the prices of similar properties with some adjustments. It can also aggregate listings in its database of similar properties based on the given parameters.

1.5 years of web development

30 times faster calculation

Задача

Task

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.

Решение

Solution

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.

Development Process

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

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.

How we solved these tasks

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.

Yurij Egorov

Project manager

“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.“

Technology Stack

Docker
CI/CD
Microservices architecture
PHP
Node JS
Nginx
Puppeteer
Rabbit MQ
Postgresql
Postgres GIS
ImageMagick
Tor Proxy
Push Notification
PhpSpreadshee

Results

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.

Microservices architecture

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.

Let’s discuss your project!

It is free. We will tell you how the application will solve your problems.

Similar projects

Events

2020