📜 ⬆️ ⬇️

What is hidden inside the car auction platform

Services for the sale of used cars are usually built on one principle: "placed an ad, called, showed the car, sold." In such projects, high technology is concentrated mainly around the site itself. But we are different. We have created a platform on which anyone can sell car dealers through the auction system their second-hand car (even an emergency one), with the technical condition checked by our specialists. Behind the seeming simplicity of the description lies a complex ecosystem of self-written and third-party software products, which we want to talk about.

image

Hello! My name is Ilya Pyatin. I am responsible for IT at CarPrice and today I want to tell you in general terms about the insides of our platform and what we are doing from it.

Our story will follow this pattern, so from time to time we will repeat it so that you don’t have to return often to the beginning:
image
')

Car reception


So, a man wants to sell his car. He visits our public site (there are closed parts of the system, more about them later), fills out a short form and signs up for a meeting in one of our branches (there are more than 45 of them in 21 cities in Russia).

Technical Reference


The Bitrix client site visible to all in the current microservice architecture is in fact one of the “fronts”. Information entered by car owners is transmitted to internal storages, analytics system, call center, marketing systems, and so on.

A calculator is also available on the public site, with which you can roughly estimate how much you can earn for a car at the CarPrice auction. Prices are calculated using an analytical algorithm based on the sales statistics for specific brands, models, technical condition, demand in various regions of the country, and so on.

After entering the data get into our call center. You call up the owner of the car, clarify additional information and warn you what documents you need to take with you.

Technical Reference


The call center is built on the Oktell / MSSQL platform and operates in our private cloud. It is integrated with CSI - an advanced user survey system, client CRM and various mailing and notification services. It also records the primary information about the owner of the car, the legal status of the car, and so on.

When a person arrives at a selected branch, our employee, a specialist in car inspection, meets him there. He checks documents using our internal system called AutoCheck. Information from PTS, JTS and passports is entered there, and AutoCheck checks information on all available bases of state services and collects data on various bans, restrictions, fines and other legal problems that may arise when selling this car.

If problems are found, we inform the owner of the car about them and explain how to solve them. If we are talking only about unpaid fines, then we can pay them for it. If everything is in order, then our colleague, the inspector, with the help of a mobile application developed by us, which we call the “Inspector application”, enters into the database all the information about the car. This is done according to a certain algorithm: he chooses the make, model, year of production, takes photos of the body, the passenger compartment, indicates damage, a complete set, and so on. The inspection algorithm is the same for all cars.

When the inspector finishes the inspection, he clicks the “OK” button in the application, and all the information goes online to our online platform.

image

The main features of the application:


Technical Reference


The application architecture is built on the MVVM pattern using RxJava, Dagger , Retrofit 2 , Realm , Amazon SDK, and so on.

For sale


When the inspector has finished his work, the data collected by him is turned into a lot at auction: aggregated and displayed in a readable form. And dealers who may be interested in this car are notified. By the way, the neural network is partially responsible for notifying dealers, analyzing their behavior and past purchases.

In fact, dealers do not see the car itself. They are available only card in the auction system, with the result of the inspection and photographs taken by our inspector. At this time, the car is in one of our offices.

Another explanation: when the results of the inspection get into our system, in order not to dump the dealers hundreds of items, the data is aggregated and brought to the point system - the car receives the "stars". Only four criteria, each of which can be up to 5 stars:


Why did we decide to introduce "stars"? The fact is that the checklist of the inspection application consists of more than 1000 items. Each item has its own weight. In addition, the list is regularly reviewed: something is added, something is removed. Therefore, the "stars" are vital, so that dealers can quickly get an idea of ​​the condition of the car, as well as to formulate a warranty policy for this car.

After the card enters the auction system, the owner of the car waits 30 minutes. He can watch all the current trades in real time on a separate TV - dashboard, sees how dealers make bets on his car, from which cities they are, how much time is left until the end of the auction. Most watch the auction with great excitement. If the time is almost over and a new bid has arrived, the platform extends the auction for a while more. And such extensions can occur several times so that the owner can sell their car more profitably if there is demand for it.

image

Technical Reference


Dashboard is a SPA on Vue.js and push notifications. In essence, this is a page that receives partial information about all bids and in a compact form displays data from current auctions for the branch in which the client is located.

The main part of the platform is written in PHP, but we did some of the most critical components for speed and load on Golang: accepting bids, robots bargaining for a dealer, and so on. The system of sending notifications - one of the very important components for us - is implemented on Slanger . This is an open source protocol-based notification system from Pusher with an intermediate repository in Redis.

From the auction platform, data is sent to the logistic, statistical and marketing systems (used, among other things, for A / B testing). For the sales department created a separate interface on the guns to monitor the progress of auctions.

image

Dealers and auction


Dealers can enter the auction either through a browser or through a mobile application. Many of them do not sit in the office, but constantly go to meetings, watch cars, so the application is more relevant for them. If a company is large, then, on the contrary, it often allocates an individual employee who sits and deliberately buys cars on CarPrice that meet certain criteria voiced by him.

image

Choosing a car of interest to the car, the dealer can look through the photos, see the equipment, assess the damage:

image

A card made on the React + Redux bundle displays a timer showing how much is left until the end of trading on this lot, and you can make a bet. If you participated in online auctions, for example, on eBay, then you can well imagine how in the last seconds the struggle between dealers for “tasty” cars has flared up.

By the way, we implemented a service “auto deliveries” for dealers on Go. In fact, these are robots that can say: “Bargain for this car up to such a sum,” and go watch other lots. As soon as your bid is outbid, the bot will automatically place a higher bid.

The dealer need not just win the auction, he needs to offer a price for which the owner agrees to sell his car . After all, if one of the dealers wins the auction with the highest bid, but it does not suit the owner, he may simply refuse and leave. By the way, for the owner of the car the whole procedure for evaluating the car and its auctioning is completely free, regardless of its final decision.

But the dealer is also in an advantageous position: he has not paid anything yet, but at the same time he receives the goods with our technical expertise, with high-quality photos, no need to go somewhere and communicate with someone. By the way, now we are implementing an algorithm that automatically determines the level of photo quality, which the inspector made when inspecting accepted cars, to inform him of the need to revise it if the picture turned out to be “not very”.

imageimage

Main features of the dealer application:


Warehouses and logistics


Suppose someone from a dealer in a hot fight won, won the bid, and the proposed amount suited the car owner. In this case, we immediately give him the full amount, draw up the documents, and happy, now the former owner is leaving to celebrate the deal.

The car is temporarily with us - we have already paid for it and now we want to give it to the winner. For example, at the moment we own more than 1000 cars. Naturally, such a geographically distributed fleet with a constant “turnover” requires strict accounting. We did not find a suitable third-party solution and wrote our own warehouse system with which all branches work. It also allows you to track all the cars moved between the branches, plan the freight of car carriers and so on.

image

Technical Reference


This is a private service on Laravel / MySQL / Vue with a bunch of external integrations.

image

QA


So, the dealer won the auction for some lot, and the car arrived at the warehouse of the respective city. Here he passes the inspection procedure - QA, you all know the quality assurance. Only in this case it is not about checking a new feature in the product, but about re-assessing the condition of the car. Was the assessment sufficiently accurate at acceptance? Are there any missed defects?

QA employees also have their mobile app with a checklist, in which the results of the first acceptance inspection are uploaded. Since the machines are not inspected in greenhouse conditions with Wi-Fi connection, but in warehouses, parking lots, and often “far from civilization”, we adapted the application to work in conditions of a low level of communication. It is in cities with a million people good coverage of LTE or 4G, and even then not in all. And in smaller cities, and even on the outskirts, and Edge may be rare. Before the inspection, the employee loads in the office data on the cars that will be inspected - and this is up to 500 MB of data and photos for each car, and goes to the fields. There he makes corrections to the information, and when a connection appears, an automatic synchronization with the platform is performed.

image

The main features of QA applications:


Technical Reference


The application is made on MVP with Retrofit 2, EventBus, Realm, Amazon SDK, JobQuery and so on.

Car delivery to dealers


Each dealer has a personal account with an online booking system. In it you can sign up separately for inspection and for the issuance of cars.

Why separately? Dealers are businessmen. Before you pay, they want to first see the product, make sure that it matches the description from the lot card. After all, cars are not cheap thing, the risks are quite high. The dealer examines the car with our employee, and the results of the inspection are recorded in the application QA. If the dealer has no complaints, then the document management system bills him for payment. After that, he pays it and can sign up for the issue in order to pick up his purchase.

This concludes our main business chain.

image

Technical Reference


The document management system is a separate module for 1C: Bitrix. It generates packages of documents for each transaction, taking into account all sorts of conditions.

Long auction


It so happens that a car arrived at the auction, which for some reason didn’t attract the attention of dealers for half an hour or the amount offered for it was too low, and we understand that the owner will not agree to it. But at the same time, we know that there are those in our customer base who may be interested in the car, or who are ready to offer more for it, they just could not participate now. In this case, we call our "internal dealer", we ask him to take risks and buy the car, offering the owner a larger amount than dealers. After the paperwork, we put the car on the so-called long auction, which does not have a limit of 30 minutes. By the way, many dealers prefer just such lots, because there is no need to rush, you can safely evaluate the car, come to the parking lot, look, think.

How do we know how much to offer the owner? Why do we think that the car will be bought back from us? Our specialists are responsible for this, focusing on an analytical system that reviews the history of trading in similar vehicles, analyzes demand and the customer base and, based on many criteria, selects dealers who have not yet seen this lot, but may be interested in it. Today there are about 30,000 dealers in our customer base, and not all of them use smartphones and computers: there are quite a few who still walk with push-button telephones. Call them regularly, telling about interesting lots - there will not be enough call centers. Nevertheless, these are successful businessmen who can regularly send digests with potentially interesting lots from a long auction.

We also implemented an automatic recommendation system. The neural network analyzes all lots, and not just those for which there are no bids or too little offered. This allows you to target the auction to those dealers who are most interested in a particular car.

image

Technical Reference


The neural network was first modeled in MATLAB, and then ported to Tensorflow, there are places on the NumPy . All this works as a separate microservice that collects information about specific lots and selects from the database of dealers those who may be interested in these lots. She analyzes the dealers' past behavior: who, when and what lots watched, for which cars was being traded, won or didn’t win, how many cars are bought, whether any bills are waiting for payment.

Based on many hundreds of criteria describing a car, a neural network identifies those cars that may be of interest to a particular dealer. Moreover, based on the history of dealers' behavior, a neuronet can highlight preferences that the dealer has not formulated for itself. For example, she may guess that the dealer is not interested in cars that have more than two owners of the TCP or salon is not made of leather. And another dealer often looks at the right-hand drive Japanese cars, he needs to show them first.

Summing up the above, long-term auctions help to offer the car owner a fair price, and then find a dealer who is willing to pay a decent amount for it.

Why all this dealers?


Perhaps you have long had a question, why should dealers buy used cars, competing with each other at an auction and raising the price? Everything is very simple: we only carry out a technical assessment of cars, but do not carry out any technical work. All these dealers do later: repair, replace, clean, paint, riht. In general, they increase the value of a car and prepare it for it to acquire a new owner, and then sell it at a premium. Thus, with our help, they save on the selection and purchase stage.

Other developments


Already released personal online account for car owners on React / Redux. When a person decides to sell the car and registers with CarPrice, useful information appears in his personal account about what documents to prepare, how to check for unpaid fines, how best to prepare the car for sale, how to get to the nearest CarPrice office and much more.

image

The results of all systems are aggregated into the BI system for subsequent in-depth analytics. As the company grows, analytics begins to play an increasingly important role in a variety of business processes and decision making, so now we have a whole department dedicated to analyzing our own data.

Technology


The stack of core technologies used in CarPrice looks like this:

image

In addition to the above-mentioned applications and systems, we have created quite a few other IT products, and also integrated third-party solutions that help us develop faster: Huginn , Zapier , Exponea .

All data exchange between services and systems is performed directly through internal APIs protected by jwt-tokens. All key services run on RabbitMQ queues.

The load on the services is regulated by nginx-balancers, and, of course, all key systems are protected by an anti-DDoS-umbrella.

We have a lot of interesting things, and we plan on quietly telling about the used solutions. It will be cool if you mark in the comments what you should tell first of all.

Thank!

Source: https://habr.com/ru/post/329424/


All Articles