Medicine moves to the web, chat rooms and mobile applications. Conversation with BestDoctor
There is a strange word “telemedicine”, and I associate it only with Kashpirovsky’s sessions on TV and charging water from the screen. This is actually just a term for technologies that can make medicine remote.
This is a huge field in which IT will develop very seriously when all sorts of formalities are settled, such as legal delays, areas of responsibility and disputes over personal data. Well, when we agree to entrust technology startups and corporations to analyze our organisms and offer treatment programs in the same way as we now trust in ordinary hospitals.
In the meantime, medical tech startups are doing things relatively simpler. For example, they make services for consultations and records in clinics. BestDoctor - our current interlocutors - offers such a service to companies instead of the classic VHI. About what it is, how difficult it is to develop a medical product and hire people for it, we were told by CTO Filipp Kuznetsov and HR Polina Rusakova.
Traditionally, we will tell you about the assessment of the company at My Circle: BestDoctor was included in our rating of the best employers in IT (in the category of small companies) with an average rating of 4.6 . Employees appreciate him for his excellent relations in the team, the scope for professional growth and the modernity of the technologies used, but above all - for the fact that BestDoctor makes the world a better place.
How does the VHI alternative work?
- How is your system different from regular VHI?
- Philip Kuznetsov: When you take the classic VHI, you immediately give the entire amount for the policy. The insurance will earn on what remains between the cost of the insurance policy and payments to clinics for treatment. It turns out that the insurance company is interested in paying as little as possible in order to earn more. And if you spent less on medicine than you paid for the policy, then this money will not be returned.
In our system, you pay for services that were provided upon. For example, a thousand people work for you. Some of them found a thousand rubles, some ten thousand, someone never even went to the doctor. You do not need to pay the same policies for everyone. There is a predicted overall medical budget from which money is deducted as employees seek help.
At the same time, you should not immediately lay out the amount for the year ahead, but make a deposit for the quarter. Unspent money is returned back or carried over to the next service period. For example, we predicted that the team will need 20 million. But the year was good, and the employees were little sick. You can take back the saved money or spend it on expanding the program. And for those who are afraid of overtraining, we have a risk agreement.
We earn from a fixed commission for each attached employee. This is a fee for the service - a mobile application, a personal account, maintenance, for the base of clinics and the workflow that we provide. We tell where it is better to go, we advise when people do not know what to do. For example, I received a pack of tests, but it is not clear where to carry them.
That is, we are focusing on serviceability. The patient can call us at three in the morning, because the child has a pimple on his nose, and we will tell you whether it is worth worrying. Even if the child is not insured with us, we still advise. Therefore, we are not interested in the fact that employees will be provided with as few services as possible and as cheaply as possible. We will only have a headache from this.
- And why still do not go away from the usual VHI?
- FC: Nobody is doing this in Russia yet. When we, the three founders of a startup unknown to anyone, came to the company and said that we would now make a cheap, cool system that worked for sure, and there was no catch in it, the company thought about choosing a reliable, well-known insurance or young no-name project. This is one of the main problems that we have encountered - it is very difficult to get a credit of trust.
- Were there any such problems with the clinics?
- FC : No, for clinics we work the same way as insurance, under almost the same contracts. We send patient lists, letters of guarantee. They bill us, we pay them.
- Polina Rusakova: We have one of the key departments, constantly communicating with clinics in order to maintain quality and wholesale prices. If popular clinics give high prices, it will be harder for us. Clinics are interested in the flow. If you give them a stream, everything is fine. If you ask for a contract and say that there will be one patient per month, of course this is not beneficial for them.
- Who helps with the consultations? Clinics or your specialists?
- FC : We have our own doctors, people with medical education.
- OL: Our founders were originally doctors. Therefore, we take selection very seriously. BestDoctor for our doctors is not the main place of work. We hire only those who have constant medical practice. This allows them to constantly be in focus, in the know about changes and best practices.
How the product brings together doctors, patients, and ML models
“What are you doing from a grocery point of view?”
- FC : Previously, it was just a personal account for patients on the web. There you could leave a request for an appointment with the clinic and see the treatment program. There was a back office that processed recording applications and a call center. We also had a statistical algorithm that allowed us to calculate the budget. It was our internal tool for scoring, selection of clinics and programs for clients.
Then the functionality of the HR cabinet was added. This is a system where eychars can manage employees connected to the system, attach new ones, see how much money was spent on medicine in which month, check accounting documents and so on (the personal medical data of employees is, of course, hidden). Now there is still a mobile application that duplicates the functions of your personal account in terms of program and recording, but there is still a chat with our doctors and a call center.
There is also a co-payment, which is also called a franchise. This is similar to insurance companies, but not quite. We have co-payment - this is a percentage of the service that the employee pays for himself. For example, an appointment with a therapist costs 1000 rubles. If the co-payment is 10%, then he pays 100 rubles himself, 900 rubles - the employer.
We charge directly from the patient’s bank card to reduce the burden on client’s bookkeeping. Plus we make co-payment depending on the type of service, for example, only for dentistry or a doctor’s call at home. Or for each specific clinic.
- I read that somewhere among all this there is machine learning. Where?
- FC : Yes, in the scoring model, which allows you to predict customer budgets. When we first started, we had statistics for decades. We built the initial model on them. Now we enrich it with our data.
We have to invent models ourselves, because no one uses them.
And yet, in order to correctly remove co-payment, you need to understand what the service refers to - dentistry, clinic. To do this, we compare the price lists of different clinics. Here a problem arises: for example, in one price list it says “primary appointment with the therapist”, in another “primary reception with the therapist”. But it is necessary that it was automatically understood that this is one and the same.
That is, the services are the same everywhere, but are called differently, and we can translate their names into our internal language. To do this, we have written a model that can compare the price lists of different clinics and classify their services according to our internal price list. We can compare and find out where what service is provided, where not. We can rank clinics by price in order to optimize pricing policy.
Doing it manually will be expensive. Now the work of the model is checked by one person, and for manual marking we would need at least a dozen of them, because every month a new registry of services comes.
- Does the model give a lot of mistakes?
- FC: When we use it on the price list, the accuracy is about 80%. And when on entire registries, there are almost 100%.
- All these are own developments?
- FC: Yes. Of the third-party, we use only the chat platform. But we will either develop our own, or use another, more flexible framework. We do not have our own telephony, but we added our own analytics for it, digging a bit in the structure of the database.
How to learn Python and build a business at the same time
- Who is working on all this?
- PR : The whole team is sitting in one office in Moscow, there are 74 of us now. Some of the guys work remotely. Three product managers are currently involved in the product, each responsible for its own direction. The design team consists of two people: one is responsible for graphic design and illustrations, the second is engaged in product design. There are 12 people in the development department, but now we are expanding. Everything is standard there. Backend, frontend, testers and devops on a remote site.
- Does such a small team cope?
- FC : There are always not enough developers. No matter how big the teams are, there will always be tasks that you can put more developers on. Naturally, I would like to do some things faster. But the team copes with its tasks.
- I read in Vedomosti your story from a business point of view. Tell the same about the development history?
- FC: In August 2015, we had one developer who could not develop. For the year we made MVP, just that personal account with a treatment program. We chose the easiest entry stack - Python. They took the most popular Django framework, and they began to saw the product on it.
The whole first year we had one developer. In the second year of work, we began to expand the team. First, another back-end came, then the front-end appeared. Then came the products. We began to gradually switch to other technologies.
From a regular template application, we began to remake in SaaS with a REST-API (in fact, we immediately switched to GraphQL). We have a person who is responsible for Data Science, a devopa has appeared. We shocked our architecture, did everything like people. Normal CI and deploy, because before that deployed via git push-git pull. Then we got a mobile developer. We began to write on React Native immediately under two platforms.
Now we have what we have - a team of 12 people, and each is engaged in its own piece.
- I just did not quite understand: as a developer who could not do anything, worked on the product for two years?
- FC: Everything is very simple, I was this developer. I am a biophysicist by education.
“So you learned Python and wrote on the go?”
- FC: Yes, I had to.
- And when they started to recruit a team, did you modify yours or did you throw everything out and start writing from scratch?
- FC: Refined. I don’t remember that we were throwing something directly. Unless pieces that were not used at all. The stack also did not change. As Django and Python have started to use since then, we use it. And on the frontend of TypeScript and React. We took Typescript because I am a fan of static typing.
In Python, we also switched to a version that supports type annotation in order to take advantage of static typing - albeit not in such an explicit form as in truly statically typed languages.
- Wasn't it better to abandon Python and still take a truly typed one?
- FC : Sometimes I thought it was worth rewriting on something else. I looked at C # and sometimes even at Java (with people it happens that you look inexplicably where, it is unclear why). It is potentially possible that we will switch to another stack. But this is due to the fact that we need specialized things. For example, if we understand that Python doesn’t stretch any parts of our cookie in performance, we just take it and write it on Go. Or if you suddenly need asynchronism, and we realize that we don’t want to do it on Python - we will take in the last resort “Noda” or some Elixir.
But all the problems that I encountered in Python were not unsolvable. We just have a service product, not rocket science. We have no tasks with wild highload and complex algorithms. We do not need a specialized language, like "Pros" or the same Elixir. We need a general language.
In this language, you can quickly find good specialists for little money. Python is now very popular, and it seems to me that its popularity will only grow, because there ML, Data Science, Web. Someone even makes mobile toys on it.
- It seems to me that Python is popular with non-developers. They study it in addition to their main occupations. For example, you are a biophysicist ...
- FC: Yes, I agree, many experts study it in order to independently automate their main tasks. The same testers learn Python to write autotests.
But if a person can do well in Python and web development, then I do not care for what reasons he began to study it. The main thing is that he can at the interview answer the question that I will ask him, and then - show the result. The background is not important, I have before my eyes my own example, so I treat such people normally. There are people who are learning Python seriously - just like developers. There are also quite a few of them.
- Did you also write models for machine learning while studying on the go?
- FC: When we had only statistics, and there was no machine learning, the three of us composed the algorithm - with the other founders. And I did the software implementation. When machine learning models appeared, we already had a data scientist.
How to recruit people in a risky startup
- How did you recruit the team?
- PR : It was probably the most difficult period. When I came here, the company had 23 people. Few people knew about BestDoctor in the IT market, but this is a problem for all small companies.
Our problem was that few people believed in the project. At first, people came because they wanted to work in a socially significant project, but then they went to work in a bank. Our offers were often refused. Our deadlines were on, but in the end we put together a really cool team. Now we have no turnover. Over the past six months, 1-2 people have left.
Startups need to grow fast, but you can grow only if new people come. Most techies came through My Circle or Telegram, plus we talked a lot on the recommendations. At that moment I lifted all the developers I knew to the ears.
- It sounds as if they were ready to take any people, but did they need to be filtered by skills somehow?
- OL: Of course, we filtered, and not only by technical skills. Taking a person who doesn’t really suit you is a huge risk. Sooner or later, either he will refuse you, or you will reject him. Therefore, to pull ourselves together and say “no, we will look further” is a rather complicated decision. When we understood that the man was not ours, we looked further.
- Why a person may not be yours?
- PR : Either people didn’t technically suit us, or we didn’t. At the start, the project was not as interesting and global as it is now. Now it is developing, and a year ago there was a completely different story.
And it happens that they simply did not fit the corporate culture.
- What is it?
- OL: Not everyone is ready to work in a startup, it has its own atmosphere and energy. A startup is a place where many people think they want to go. But when you speak frankly about the pros and cons in an interview, people really think about whether they want this.
Startups and companies where there is an active interaction with the user always live in the “do it as quickly as possible” format. Something might happen around two in the morning, and you should be ready to turn on.
Well, if just a person wants to work on projects that bring money and nothing more, we probably will not agree. Our goal is to make people healthy and prolong life. Most of the people on the team really got into the idea of changing a system that is far from ideal. Many people themselves faced imperfections and now want to work for improvement.
“But how did you understand that a person is a good developer?”
- PR: We immediately looked for middle and senior, because in our conditions it is difficult to work with juniors. In competency testing, everything is pretty standard. Like any company, we look at self-learning. There will be no courses arranged, you need to constantly learn new things yourself.
Flexibility is needed to work as a team. A startup is a place where you can only go side by side through difficult times. If one turns away, the whole team experiences stress. It is important to be in close contact, monitor changes.
- FC: On the technical side, I asked the most basic things, which show that a person is really middle or senior, and has actually been engaged in Python for many years. Standard questions: “what is a context manager”, “how does an iterator differ from a generator”, “what magic methods do you know” and so on. Basic syntax questions that I myself have encountered in three years of work. And if I know, then a person should definitely know. This eliminated most of the candidates: the person says that he is a middle-pythonist, but cannot answer basic simple questions.
When the “lice test” was over, we moved on to the tasks. One was to test the algorithms, but there was no problem to solve in the most optimal way. The goal was to make a working solution, and then talk about how to optimize it.
The second task is to work with memory. Here it was important to see how broadly a person can think, circumvent restrictions. Will he remember that you can use writing to disk or some other thing related to working with the network.
Since we worked with Django, things went a little more complicated: make an internal view for the admin panel, redefine methods, or write a function that uses PostgreSQL.
- PR : We rejected the test tasks for a long time on purpose. When a startup without a name gives a voluminous test, the already small chance of getting a person becomes almost zero. There were certain risks, and we consciously took them.
- Have you ever encountered the fact that lice tests can weed out good people?
- FC: Yes, I know such a thought. But I did not require clear definitions from books. I was waiting for an answer to questions that a person definitely should have faced if he has been developing for several years. If you are a pythonist, you should definitely know what a generator is. At least how it works and how it differs from the list. You definitely need to know what a context manager is and what a decorator is.
If you have not come across this or immersed yourself, you either have experience that is not at all relevant, or you did very specific things. This is also good, also experience, but it does not suit us.
- Really there were people who fell into this?
- FC:Yes very many. Honestly, I myself was very surprised. I asked friends of the pythonists how they generally interview people, and they said that a large number of people fall off precisely on these issues. I was skeptical then. But then he himself began to interview and ofigel how many people are wallowing on simple questions.
- You didn’t have such that you yourself didn’t have enough skill for interviews?
- FC : There were a couple of times when people came more skillful than me. If a person tells me things that I don’t know, then I thank him. It is impossible to know everything. Whatever STO you are, there will always be a person who knows more.
- Interviews are one thing. And in the work you did not come across the fact that you still need a lot of knowledge to work the service station.
- FC: There are times when you feel that you need to tighten something. Ok - read, talk and solve the problem. I have a friend of the service station from a friendly company, I always consult with him on obscure issues. It is important when there is anyone to ask for advice.
- There was no desire to hire a technical director of a very, very powerful developer, but to go to the management yourself?
- FC : It was, yes. We even tried to do it. But at that moment we did not have time for a person to be involved in all processes and subtleties. And we decided that it would be better for the team if I myself reach the required level. Because I, as the founder, am the most motivated person.
We are looking for new members to our column! If you want to make your company a hero of this issue - write to us at hr@tmtm.ru marked "Where to work in IT."