Все кейсы
Сервис для брокеров и застройщиков

Агентство недвижимости: AI-ассистент подбора объектов

Telegram-бот для агентов: подбор объектов на естественном языке + профиль клиента как CRM + готовые аргументы для продаж.

Масштаб
~15 000 объектов, Новосибирск
Этап
2 этапа сданы
Сдан
сентябрь 2025

TL;DR. 2 этапа: MVP на n8n → Python-бэкенд с персонализацией. Агент пишет в Telegram «двушка до 9 млн в Октябрьском», бот находит объекты, помнит профиль каждого клиента и выдаёт готовые аргументы для закрытия возражений.

Ситуация

Агенты по продаже новостроек вручную ищут подходящие объекты на сайтах застройщиков. Пока ищут — клиент остывает. Отработка возражений («дорого», «далеко», «подождём скидок») полностью зависит от опыта конкретного агента. Контекст по клиенту — бюджет, приоритеты, история — нигде не хранится: агент держит всё в голове или теряет.

Задача

  1. Автоматизировать первичный подбор объектов по запросу на естественном языке.
  2. Синхронизировать базу объектов по всем крупным застройщикам в реальном времени.
  3. Дать агентам инструмент персонализированного подбора с профилями клиентов и готовыми аргументами для продаж.

Что сделали

Этап 1 — MVP. n8n + Supabase (PostgreSQL) + LLM + Telegram Bot API. Синхронизация из XML-фида застройщиков раз в час через n8n-воркфлоу с Upsert в базу (~15 000 объектов). На входящее сообщение агента: LLM извлекает параметры из текста (комнатность, цена, площадь, город) и возвращает типизированный JSON, который подставляется напрямую в SQL-запрос с фильтром 'Свободно'. Бот отвечает до 5 карточек с планировкой, площадью и ценой.

Этап 2 — персонализация. Переезд с n8n на единый Python-бэкенд: синхронизация, логика бота, оркестрация LLM — один сервис. Источник данных сменился с XML-фида на Realty API: сервис тянет 7 сущностей — застройщики, проекты, дома, теги, акции, ипотека, объекты (Units). Sweep-функция удаляет из БД записи, которых больше нет в API.

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

Персонализированное ранжирование: выдача пересортируется под приоритеты профиля, к карточкам подмешиваются 1–2 факта УТП из акций и тегов ЖК.

Отработка возражений: бот классифицирует возражение и выдаёт 2–3 готовые формулировки в трёх стилях — мягкий, экспертный, жёсткий — с фактами из акций и альтернативами.

Карточка объекта в Telegram-боте: планировка, площадь и параметры ЖК по запросу агента на естественном языке
Telegram-бот: карточка объекта с планировкой по запросу «двушка в Новосибирске до 12 млн»

Результат

Ключевые технические решения

  1. LLM как типизированный парсер запросов. Вместо жёстких фильтров агент пишет обычным языком. LLM возвращает строго типизированный JSON (rooms, price_max, area_min, city), который подставляется напрямую в SQL — без промежуточного слоя трансляции.
  2. Sweep-функция. При каждой синхронизации записи, которых больше нет в Realty API, удаляются из БД. Без этого устаревшие объекты накапливались бы и агент получал недоступные квартиры в выдаче.
  3. Профиль клиента как контекст, а не отдельная система. Бюджет, приоритеты и возражения клиента хранятся как контекст того же Telegram-диалога, в котором работает агент — без переключения между инструментами.

Частые вопросы

Почему Telegram, а не отдельное приложение для агентов?

Агенты уже работают в Telegram весь день. Отдельное приложение требует установки, обучения и переключения — а подбор объекта нужен в момент разговора с клиентом, а не после него.

Что мешает боту выдать объект, который уже продан?

Sweep-функция: при каждой синхронизации записи, которых больше нет в Realty API, удаляются из базы. Плюс фильтр по статусу в самом запросе. Без этого устаревшие объекты накапливаются, и агент теряет доверие к выдаче после первой же недоступной квартиры.

Бот сам общается с клиентом?

Нет. Инструмент для агента: подбор, профиль клиента и формулировки для возражений выдаются агенту, а он решает, что и как сказать. Три стиля аргументов — мягкий, экспертный, жёсткий — это варианты на выбор, а не автоответ клиенту.

Зачем переехали с n8n на Python-бэкенд?

n8n подошёл для MVP — быстро проверить, что подбор на естественном языке вообще работает. Персонализация, профили клиентов и 7 сущностей из Realty API уже требуют нормального кода с тестами: логика перестала укладываться в связку нод.

Что было бы дальше

Естественное продолжение — автоматическая квалификация входящих обращений, AI-скоринг лидов по приоритетам профиля, аналитика паттернов возражений по базе диалогов.

Если у вас похожая задача — отдел продаж, который работает на скорости реакции, или агенты, которые каждый раз начинают с нуля — обсудим за 30 минут.

Стек

  • Python
  • Telegram Bot API
  • LLM
  • PostgreSQL
  • Supabase
  • n8n
  • pytest

Похожие кейсы

Похожий процесс в вашей компании? Cortex IT делает письменный мини-аудит за 2-3 дня — бесплатно.

Запросить мини-аудит