Привет, Хабр! Я разработал помощника по поиску жилья HomeBro, который помог десяткам тысяч людей найти новый дом. Расскажу, с чем я облажался, а с чем – нет.

В 2019ом году я работал продактом в Яндекс.Погоде и мечтал запилить что-то свое. Начал смотреть, какие есть большие рынки и в чем их боль. Перебирая варианты, вспомнил, каким изнуряющим был для меня поиск съемного жилья. 

Странно – футболка сухая и совсем не пахнет! (с)
Странно – футболка сухая и совсем не пахнет! (с)

Каждый раз на это уходило в районе 50 часов чистого времени, а ведь у меня даже домашних животных нет. Мне приходилось бесконечно рефрешить сайты объявлений – классные квартиры уходят быстро, а уведомления срабатывали не всегда и не быстро. Каждый раз когда в моем запросе что-то менялось, нужно было по несколько раз вводить настройки поиска на разных сайтах. Я ловил дубли одних и тех же квартир, просматривал тысячи фотографий с убитыми интерьерами.

Но разве нельзя по-другому? Это же тупая рутина, которую можно автоматизировать – оперативно собирать данные и присылать подходящие объявления не куда-то, а в любимый телеграм. Может быть, я не догадался поискать, и это уже давно сделано? 

Стал гуглить. Нашел украинский телеграм-бот Arendom, который не пиарился и не имел большой аудитории, но собирал хорошие отзывы. Также увидел несколько западных чат-ботов в запрещенной синей сети. А в России… Нет, я нашел какие-то нерабочие остатки старых и очень примитивных попыток в этом направлении. Но ничего, что решало бы проблему. А ведь на дворе уже нейросети в полный рост, можно ну очень удобно все сделать. 

Чтобы проверить, что я не один ощущаю проблему острой, поговорил еще с 30 людьми, которые недавно снимали жилье. Что ж, болит не у меня одного, а почти у всех. Надо делать. Сначала думал сделать бота на модели freemium, но вскоре понял, что не хочу, чтобы бот был платным – так можно будет помочь большему количеству людей. А монетизацию уж как-нибудь придумаю, по крайней мере  рекламу точно можно будет показывать. 

Название придумал быстро – HomeBro. Оставалось сделать. Как? Вспомнить, что программирование это кайф.

Недоразработчик со стажем

Я никогда не работал программистом. Да, я кодил на pascal в школе и C# в универе. Но серьезного ничего не делал, пока в 2015ом мы с друзьями не решили сделать платформу для онлайн-видеоконкурсов. Я на тот момент был проджект-менеджером, но решил разобраться в бекенде и управлении облачной инфраструктурой. Изучил Python и Djangо. Жесткость последнего неплохо структурировала архитектуру приложения в отсутствие у меня большого опыта. 

Стартап не полетел, но мы немного подзаработали и получили тонну опыта. Ну а на сдачу я стал сертифицированным AWS Solutions Architect. 

Сдуваем пыль со змеи

После первой попытки в стартапах я пошел в Яндекс качать свои продуктовые навыки. К моменту появления идеи HomeBro я уже 3 года почти не кодил, Pornhub заметно выигрывал у Github. 

Тем не менее, я с разбега ворвался в разработку. Python решал все мои потребности – и в части бота, и в части парсинга. Да и если вкручивать в проект ML, тоже далеко ходить не надо. База данных – старина Postgres. У плохой вещи слона на лого не будет. К тому же было понятно, что придется много работать с геоданными (координаты домов и других объектов, области поиска и тд), а у Postgres для этих вещей есть замечательный модуль PostGIS.

Также показалось классным использовать AWS Lambda – сервис, который позволяет выполнить код по триггеру, и платить только за время исполнения кода. Бот работает в режиме вопрос-ответ, а в остальное время спит. Зачем серверу простаивать? Парсинг объявлений тоже запускается периодически. Да и мне в целом мне нравился serverless подход, не нужно поддерживать серваки. Из минусов – с Lambda не дружили популярные библиотеки для работы с Telegram. Ну да ладно, не так страшно завелосипедить отправку сообщений. 

Для вызова Lambda-функций подключил такой же бессерверный API GateWay. Разве что для базы данных сделал обычный RDS-сервер, который уменьшает головняк с бекапированием и прочим. Хотел сначала поднять бессерверную RDS Aurora PostgreSQL, но ловил какие-то ошибки и в итоге просто забил на эту идею.

В целом за эти стартовые решения мне до сих пор не стыдно. Но вот что выглядит как деменция – то, что я начисто забыл про существование ORM. Начал писать все SQL-запросы к базе данных тупо текстом. Просто рукалицо. Забегая вперед, через пару месяцев я опомнился, вкрутил SQLAlchemy (популярная ORM на Python) и зажил как нормальный человек. А вскоре появился первый персонаж, который попытался дропнуть нашу таблицу с пользователями SQL-инъекцией =D

Первая версия сервиса появилась за месяц плотной работы. Бот присылал новые объявления только с ЦИАНа, было всего несколько фильтров – цена, кол-во комнат, метро. 

В качестве стартового полигона была выбрана небезызвестная группа Flats for friends. Откровенно говоря, я не думал, что 74% пользователей запустят поиск. Для этого нужно было ответить на 4 вопроса бота, включая ручной ввод станций метро – это не пару кнопок нажать. Какая мотивация!

Но самое главное – люди начали советовать Бро друзьям и присылать донаты. Я постарался сделать бота “живым” и это дало эффект.

Нагрянули и риелторы, причем некоторые даже предложили купить мой проект. Я не был готов стать богатым так быстро, поэтому отказался.

Люди, которым не зашло, тоже были, но появление фанатов вселило оптимизм. Я увидел, что продукт полюбили.

Доработки

Я начал докручивать функциональность. Добавил еще несколько сайтов – Авито, Яндекс.Недвижимость и Домофонд. Последнее было лишним – не сразу понял, что Домофонд принадлежит Авито, и туда просто дублируются все объявления =/

При появлении нескольких сайтов еще острее встала проблема дубликатов. Одна и та же квартира бывает представлена на одном сайте несколько раз, разные объявления от разных агентов. А когда собираешь несколько площадок начинается просто адок. И ладно бы везде данные были идентичные, но нет – меняют цену, площадь и так далее. Поэтому потребовалось сделать кластеризацию, чтобы выявлять группы объявлений с похожими параметрами. Порадовался, что не зря в универе все это проходили. И самое классное – выявляя дубликаты мы можем показывать пользователю, что есть не только свежее объявление от агента, но и объявление без комиссии про эту же квартиру, даже если оно было размещено некоторое время назад. Начали экономить людям не только время, но и денежки. 

Также я быстренько запилил второго бота, который присылал объявления с продажей жилья.

Вот так выглядел бот после первой серии доработок:

Если достали ковры на стенах, пора натравить на них нейросеть

Большинство съемщиков не готовы жить в квартире с бабушкиным ремонтом. Есть и обратное – на покупку нередко ищут убитую квартиру, чтобы купить дешевле и сделать ремонт под себя. Выявить такие варианты – отличная задача для нейросети.

Мне давно было интересно потрогать руками машинное обучение, а вот и повод нашелся. Начал с прохождения бесплатного курса по нейросетям от Google. Оказалось, что не нужно тренировать сеть с нуля – гораздо лучше взять существующую классную нейросеть и дообучить ее под свою задачу.

Для определения типа ремонта я скормил сети тысячи фотографий как очень симпатичных, так и откровенно печальных квартир.

Чтобы не покупать дорогущие сервера, надо было найти решение, которое при обработке сотен тысяч изображений в день будет одновременно быстрым, качественным и экономным по железу. Поэтому взял за основу сеть MobileNetV2, которая изначально задумана для применения на мобильных устройствах с ограниченными ресурсами.

Так в боте появился фильтр «не бабушкин ремонт». А через месяц после запуска фильтра хайпанула статья Петра Бондаренко про похожую нейросеть для просмотра ЦИАНа. Было обидно, что в фокус внимания попал не мой проект, но это стало лишним доказательством того, как у людей наболело. Ну и вывод:

Если сделал хороший продукт, не тормози с пиаром.

И проверяй спрос, проверяй спрос

Когда дневная аудитория бота приблизилась к 1000, я решил добавить в игру владельцев жилья. Арендаторам предлагалось прислать небольшой рассказ о себе со ссылкой на соцсети в обмен на спецпредложения от собственников. А хозяева получили возможность еще до знакомства узнать о заинтересованных жильцах и выбрать подходящих.

До начала работ я проверил интерес со стороны хозяев, но не опросил арендаторов. Для них это казалось очевидно полезной функцией (стоит вообще забыть слово «очевидно»). В итоге уже после запуска стало понятно, что откликнувшихся квартиросъемщиков недостаточно.

Несколько недель напряженной работы насмарку.

В качестве бонуса получил мини-исследование аудитории Бро – за время эксперимента сотни пользователей бота рассказали мне о себе. Да и сервис для владельцев жилья еще получит второй шанс в будущем.

Второе рождение проекта

Я понял, что бот требует все больше и больше внимания, мне дико интересно его развивать, а еще мне очень хочется спать. В будни я кодил вечером и ночью, выходные тоже были посвящены Бро. Поэтому сначала перешел в Яндексе на парт-тайм, а вскоре и вовсе ушел из компании. 

За первые 9 месяцев я привлек 8000 пользователей бота, потратив на это 42 тысячи рублей. 30 тысяч вернулись в виде донатов, а рекламу в HomeBro я еще не продавал. Да и запросов, честно говоря, на нее тогда еще не было.

Решил рассказать про Бро на vc.ru. Долго не решался, т.к. считал, что бот еще недостаточно хорош и его захейтят. Но в итоге случился настоящий взрыв – материал завирусился и стал одним их самых популярных в истории площадки. В комментариях люди активно делились впечатлениями от работы с плохими риелторами . 

Стоит отметить, что отчасти успех статьи был обеспечен друзьями Бро. Я разослал ссылку пользователям бота и попросил поделиться обратной связью, они откликнулись и помогли статье выйти в популярное.

Следующие две недели я не вылезал со встреч, одна из них закончилась привлечением в проект инвестиций. В общем, очень жалко, что тогда я не написал статью еще и на Хабре. Вот только сейчас исправляюсь =) Но все в один лонгрид не запихнешь, поэтому продолжение истории я расскажу в следующий раз. Подписывайтесь на наш блог, если будет интересно почитать.

Для удобства еще раз ссылочка на бота. Поделитесь, как вам? 

Комментарии (42)


  1. exTvr
    24.05.2023 09:07

    О, я как раз летом собираюсь сменить одну съёмную конуру на другую и устал уже разглядывать лохотроны на авито. Опробую вашего бота.


    1. liontalks Автор
      24.05.2023 09:07
      +4

      Пусть вам повезет) Не могу сказать, что мы отсекаем весь лохотрон, но работаем в этом направлении.

      Пока что сделали прототип нейронки, которая предсказывает цену и если в объявлении сильно ниже, то баним такое. Так ловим только совсем неадекватные цены, чтобы не отсечь выгодные варианты.

      Также по жалобам тоже баним авторов объявлений. Любые идеи как еще лучше находить мошенников горячо приветствуются


    1. Kopilov
      24.05.2023 09:07
      +2

      Мне очень нравится Яндекс-Аренда (не реклама, но нахожусь по другую сторону товарно-денежных отношений — в смысле, сдаю)


      1. vsheg
        24.05.2023 09:07

        Снимаю через Яндекс Аренду, поддержка там очень плохая, всё по скрипту и без мозгов. Не решили ни одной моей возникшей проблемы, не рекомендую


        1. Kopilov
          24.05.2023 09:07

          А какие проблемы и как пробовали их решить? Просто интересно, как это выглядит с другой стороны.
          Ну и в договоре должны быть прямые контакты собственника — общались ли, и как он сам на это смотрит?

          Из моей практики, второй (и пока последний) жилец в анкете написал, что очень неудобная входная дверь (это действительно так, за год до этого делал косметический ремонт после ухода деда с бабушкой, на дверь средств не хватило) — связались, я заказал и оплатил установку новой, он принял мастеров.


  1. gorbatkomark0
    24.05.2023 09:07
    +1

    Я тоже сдаю и думаю что сейчас эта разработка реально поможет многим!


    1. liontalks Автор
      24.05.2023 09:07

      Спасибо за добрые слова! Нам нужно придумать что-то полезное для тех, кто сдает. Спрос на аренду заметно упал – пора помогать хозяевам квартир.

      Ну и на покупку через нас можно искать варианты.


      1. DGN
        24.05.2023 09:07

        Лакомный кусок, посуточная аренда на курорте. Зазывале платят дневную ставку арендодатели.

        Что могла бы делать система:

        Проверять актуальность и условия. Арендодатель выкладывает адрес, фотки, прайс (который он может править, если еще не бронь), платит за это примерно трехдневную аренду, сервис нанимает проверял из пула, примерно как на толоке. Прийти, посмотреть, точно ли на карте, адекватны ли фото, если плохие - отснять лучше.

        Бронировать. Часто сложно найти на день-два, как арендовать, так и сдать "дырку".

        Отзывы. Только тех кто заехал, или не заехал по жалобе.

        Возможно это уже есть, я об этом лет 15 назад задумывался.

        По вашему проекту - не понравилось, что бот отправляет обратно на веб для настройки. Не понравилось, что бот будучи удален сам себя добавил снова.


        1. liontalks Автор
          24.05.2023 09:07

          Сейчас неплохо вырос сервис sutochno.ru. Вроде неплохо закрывает вопрос.

          По поводу веб-настроек – это единственное, что позволяет делать интерактивные фильтры. Раньше все было через диалог, но потом мы ушли на веб. Рано или поздно настройки перейдут в формат телеграм вебаппа, тогда переход станет менее заметен. Пока не делали это, тк вебаппы не поддерживаются в старых версиях телеграма + шторку с вебаппом иногда можно случайно закрыть. Но сейчас дали возможность ее фиксировать, будем пробовать.

          Про то, что бот вернул себя сам. Если вы просто удалили чат с ботом, телеграм об этом бот никак не уведомляет, и бот может продолжать писать. Чтобы гарантированно остановить бота в телеграме есть кнопка «Блокировать». Но можно просто сказать нашему боту, что вам не интересно продолжать настройки поиска или остановить поиск, если он запущен. И он перестанет писать, разве что иногда будет присылать новости проекта.


  1. SuperKozel
    24.05.2023 09:07
    +2

    есть очень большая проблема - как заставить арендодателей работать без агента. Самые ленивые просто дают агенту сдавать квартиру. А 1-2 месяца комиссию отдаешь ты, потому что людям лень самим показывать. Самые жадные - берут комиссию себе. Ситуация совершенно ненормальная, когда кто-то зарабатывает на мелкой лени. А однажды я снимал квартиру с очень неочевидным недостатком - по выходным она воняла. Там какие-то коллекторы в районе м.Коломенское, и почему-то именно на выходных начиналась ароматизация.


    1. liontalks Автор
      24.05.2023 09:07

      ахххах, забавная история с вонью, если бы не было так неприятно.

      По поводу комиссии – в Японии, например, и вовсе традиция дарить хозяину квартиры дополнительный денежный подарок за то, что он сдал ее именно тебе =)


    1. konst90
      24.05.2023 09:07
      +8

      Ну да, мелкая. Либо в середине рабочего дня, теряя в зарплате, либо вечером по пробкам ехать показывать квартиру - оно им зачем, если можно поручить это специально обученному человеку? Вы готовы заплатить за потраченное время, если квартира не понравится, или считаете нормальным заставить человека работать бесплатно?


      1. Didimus
        24.05.2023 09:07

        Показывальщик тратит на это условно 1 час, а денег хочет поднять как за месяц работы кассира в пятерочке


        1. konst90
          24.05.2023 09:07

          Сначала приехать и сделать фотографии. Потом раскидать объявления по сайтам (это не везде бесплатно, кстати). Потом сколько-то времени на то, чтобы отвечать на звонки (а звонят в любое времяв). Поездки на показы - далеко не всегда первый же кандидат снимет квартиру. Причём поездки в основном по вечерам и в выходные/праздники - арендаторы имеют свойство в рабочее время работать.

          А так да, всего один час. Правда, почему-то арендодатели не стремятся сами потратить этот час и заработать 1/2 месячной зарплаты кассира - а ведь взять с арендатора половину от запроса риэлтора (или не брать вообще ничего и сдать квартиру быстрее) было бы конкурентным преимуществом перед риэлторами.


    1. acsent1
      24.05.2023 09:07
      +1

      Зависит от того, кого больше: покупателей или продавцов. Пока покупателей больше, то смысла сдавать без комиссии агентам нет


    1. andrey-orlouv
      24.05.2023 09:07
      +4

      Я сдаю квартиру через агента уже много лет (много раз). Не хочется лишний раз общаться со съемщиками, особенно, если их довольно много ходит. И да, ездить на другой конец города для того, чтобы, прождав 1-2 часа, понять, что никто смотреть квартиру не приедет - это такое себе - на это тратит время свое агент. Агент еще выполняет работу по отсеиванию неадекватных, посоветовавшись со мной, конечно. Его работу оплачиваю я из первого платежа за квартиру. Съемщик ничего не теряет. Пока удавалось избежать проблем со съемщиками - всех, что находили, расставались чуть ли не друзьями.


      1. liontalks Автор
        24.05.2023 09:07
        +1

        Круто видеть таких осознанных собственников, которые понимают, чтто агент работает на них, и они сами оплачивают его услуги) во многих странах именно такая практика – норма


    1. DGN
      24.05.2023 09:07
      +1

      Никак не заставить. Они просто сдают дешевле в итоге, ну или быстрее.

      Но, часто именно проблемные квартиры сдает собственник. Он знает когда воняет, когда пьянка с дракой у соседей и прочие моменты.


    1. iig
      24.05.2023 09:07
      +2

      Ситуация совершенно ненормальная, когда кто-то зарабатывает на мелкой лени

      Совершенно нормально.


    1. engine9
      24.05.2023 09:07

      >Ситуация совершенно ненормальная, когда кто-то зарабатывает на мелкой лени.

      По-моему это краеугольный камень сферы услуг, не?


  1. AndreyYu
    24.05.2023 09:07
    +1

    Добавьте фильтр "Без мебели", пожалуйста.
    PS: Отличная проект. Работает чудесно


    1. liontalks Автор
      24.05.2023 09:07

      Большое спасибо =)

      По поводу фильтров – у нас пока не хватает определенных фильтров по специфическим техническим и не очень очевидным для пользователей причинам. Но мы постараемся это исправить. Не обещаю, что совсем скоро, но постараемся


    1. andrey-orlouv
      24.05.2023 09:07
      +1

      Без мебели - это тема :) Только встроенные шкафы никуда не денешь


  1. Zivaka
    24.05.2023 09:07
    +2

    Благодаря вашему боту пару лет назад смог арендовать отличную квартиру в нужной локации и с классным ремонтом. Долго тогда сидел на Авито, но на показах был уже 3-4-5, а нормальные варианты уходили быстро. Подключив бота смог оказаться первым, кто позвонил уже через минуту после публикации, арендодатель даже не ожидал такой стремительности)


    1. liontalks Автор
      24.05.2023 09:07
      +2

      Отдельное удовольствие встречать в комментариях старых друзей бро ???? Спасибо за вашу историю)


  1. amirboisov
    24.05.2023 09:07

    Очень удобный бот)Быстро нашел нужные варианты квартир


    1. liontalks Автор
      24.05.2023 09:07

      Спасибо, всегда рады помочь)


  1. sanderu
    24.05.2023 09:07
    +3

    Щупал этого бота больше года назад, а так же пару месяцев назад заходил, что бы снять квартиру.
    К сожалению, за год бот никак по моим ощущениям не прогрессировал и в моем случае совсем не применим, хотя фидбек я вам присылал дважды :(

    Так и не появилось в нем базовых фильтров, которые есть практически на любой площадке, включая конечно Циан и Яндекс аренду.
    Нет критичного для меня параметра фильтрации по наличию балкона / лоджии. Нет фильтра по удобствам (Кондер, посудомйка, стиральная машина и так далее), нельзя выбрать дома с парковкой. Такая роскошь как возможность фильтровать по типу, серии дома, мебелированности и высоте потолков конечно уже не в каждом агрегаторе имеется (хотя есть в самых популярных - Циане и Яндексе), но без этого тоже не очень.

    Получается, у вас только два преимущества:
    1) Это бот, и он присылает нужные тебе варианты каждый день. Очень удобная фича (могла бы быть).
    2) Нейронка, которая отсеивает бабушкин ремонт. Но его можно косвенно откинуть и так, поставив фильтры на евро/дизайнерский ремонт, либо выбрав цены по рынку в конкретном районе. Так что этот пункт сомнителен..

    В итоге как пользователь я не понял, какой вообще смысл в продукте, если в ввиду отсутствия фильтров на отсев вариантов через бот уходит куда больше времени, чем в условном циане :)

    Но задумка хорошая и на первый взгляд действительно удобно выглядит, надеюсь вы в итоге разоврётесь.


    1. liontalks Автор
      24.05.2023 09:07

      Действительно, за последний год с пользовательской точки зрения поменялось очень мало. Мы были плотно заняты различными критичными моментами по инфраструктуре, монетизации и др. Один только переезд на kubernetes вылился для нас в целую сагу - напишем на хабре отдельно об этом. Но уже в ближайшем будущем готовим серию мощных продуктовых апдейтов.

      По поводу отсутствующих фильтров – постараемся исправиться. Увы, это не так просто, как может показаться на первый взгляд.

      Из преимуществ есть еще важное – то, что он присылает сразу с нескольких источников.

      Спасибо большое за пожелания, постараемся порадовать вас.


      1. SomeAnonimCoder
        24.05.2023 09:07

        то, что он присылает сразу с нескольких источников

        ... не приводит к дубликатам? Вы как-то с ними боретесь?


        1. liontalks Автор
          24.05.2023 09:07

          В статье писал, мы используем кластеризацию. Дубликаты даже в пределах одного источника встречаются


  1. WondeRu
    24.05.2023 09:07
    +1

    Мне интересно, что в головах у инвесторов? Насколько я понимаю, официального соглашения с цианом нет, а это прямая угроза проекту, т.к. могут закрыть доступ или технически, или юридически.

    Циан и Авито тратят миллионы на привлечение пользователей, ваш проект без них не взлетит.


    1. liontalks Автор
      24.05.2023 09:07
      +2

      У стартапов всегда есть риски. Наличие инвестиций лишь показывает, что кому-то показался убедительным наш план по их преодолению.


  1. kova7ev
    24.05.2023 09:07

    Других-то причин видимо у менеджера нет (уйти из яндекса), и спится хорошо...


  1. ilmarinnen
    24.05.2023 09:07

    С сегодня начну пробовать, благо есть вероятность что мои нынешние хоромы арендодатель скоро продаст.


    1. liontalks Автор
      24.05.2023 09:07

      Успехов! Поделитесь потом честными впечатлениями)


  1. MaxFall
    24.05.2023 09:07

    Интересно как вы организовали парсинг, использовали ли какие-то продвинутые механики чтобы минимизировать время актуализации данных с площадок. И кстати, неужели площадки никак на данный момент не мешают вам собирать данные, и что будете делать если начнут, например история с honeypots?


    1. liontalks Автор
      24.05.2023 09:07

      К сожалению, этой стороной технической реализации проекта делиться не можем.

      Глобально мы просто делаем все для того, чтобы площадкам хотелось у нас размещаться. Мы для них источник трафика. Человек, подписанный на бота, начинает заходить к ним гораздо чаще.


  1. metalchinchilla
    24.05.2023 09:07

    Отличный бот, сама пользовалась при съеме жилья. Залогинилась, чтобы сказать спасибо!:)


    1. liontalks Автор
      24.05.2023 09:07

      От души, спасибо ????


  1. Rinat
    24.05.2023 09:07
    +1

    Добавьте еще галочку «хорошая звукоизоляция», чтобы ни я не слышал соседей, ни они меня


    1. liontalks Автор
      24.05.2023 09:07
      +1

      Да, было бы хорошо. Только с данными по этой тематике непросто. Подумаем