Данные вместо интуиции. Как выбрать район в незнакомом городе за 10 минут, а не за 3 месяца.

Основатели Relocarta сами через это прошли. Переезд в другой город — стресс, который усиливается от отсутствия нормальной информации. Форумы дают противоречивые мнения. Риелторы продают то, что им выгодно. Статистика в открытом доступе есть, но она разрознена по десяткам источников и не структурирована для принятия решений.
Идея простая: взять всё это, нормализовать, посчитать скоринг по параметрам, которые важны конкретному человеку (у кого-то это школы, у кого-то — тишина и воздух), и показать на карте. Без риелторов, без рекламы, только данные.
К нам пришли с прототипом в Figma и хорошо описанными требованиями. У основателей был технический бэкграунд, поэтому нам не пришлось объяснять, зачем нужен ClickHouse рядом с PostgreSQL. Согласовали архитектуру за одну встречу.

Режим сравнения: два района рядом, все параметры в одной таблице
Провели инвентаризацию 15+ открытых источников: OpenStreetMap, Росстат, API сервисов с расписаниями транспорта, государственные базы школ и поликлиник, парсинг объявлений о недвижимости. Определили, какие данные актуальны, а какие — мусор.
Python-скрипты нормализуют адреса (одна улица в разных источниках пишется по-разному), геокодируют объекты и кладут всё в PostgreSQL. Сверху — алгоритм скоринга: каждый район получает оценку по 50+ параметрам, которые можно взвесить под свои приоритеты.
Next.js App Router с серверными компонентами для SEO. Карта на Mapbox GL JS с кастомными векторными тайлами — районы подсвечиваются по выбранным параметрам. Режим сравнения: выбрал два района, видишь таблицу по всем показателям.
Node.js API Gateway перед PostgreSQL и ClickHouse. Структурированные данные — в PG, аналитические запросы (агрегаты, тренды стоимости аренды за период) — в ClickHouse. Среднее время ответа: 80 мс. Кеш горячих запросов в Redis.
React Native (Expo) с режимом "полевой разведки": сканируешь QR-код на точке в районе, получаешь карточку с полным скорингом. Офлайн-режим для базового просмотра сохранённых районов. Бета-тестирование, исправление обратной связи, запуск.
Нормализация адресов. Одна и та же улица в разных источниках выглядит как «ул. Ленина», «Ленина ул.», «Lenin str.» и «Улица Ленина». Без нормализации скоринг ломается: школа "не попадает" в нужный район. Написали собственный нормализатор поверх дедупликации с fuzzy matching.
Весовые коэффициенты скоринга. Универсальных весов нет: для семьи с детьми важны школы и безопасность, для молодого специалиста — транспорт и стоимость аренды. Сделали настраиваемые профили: пользователь сдвигает слайдеры под себя, карта перекрашивается в реальном времени.
Производительность карты на мобильном. GeoJSON с границами районов весил 8 МБ. На телефоне первая загрузка занимала 6 секунд. Решение: конвертация в Mapbox Vector Tiles и раздача через CDN. Итог: 0.4 сек на первую отрисовку карты.


Переезд — это не только цифры. Нужно физически приехать в район, погулять, почувствовать. React Native-приложение закрывает этот момент: прийти в район, открыть приложение, получить полную карточку со скорингом прямо здесь и сейчас.
QR-метки можно было расклеить в ключевых точках района (кафе, метро, парки) — предложение от основателей, которое мы поддержали технически. Сканируешь QR → мгновенно видишь карточку района без поиска.
Офлайн-режим: районы, которые ты добавил в избранное, кешируются локально. Данные за 6 часов — актуальные, старше — помечаются как устаревшие.
Ни одного рубля на рекламу. Первые пользователи пришли через Telegram-каналы и Product Hunt. Bounce rate 31% — вдвое ниже среднего по SaaS-продуктам в нише релокации.