← Все статьи

Менеджер пишет боту «собери фид для Циана» — и фид собирается сам. Как мы поделили работу между кодом и нейросетью

Кейс Take&Make: AI-автоматизация выгрузки объявлений недвижимости на площадки для сервиса 6feeds

У 6feeds выгрузка на классифайды и без нас была отлажена как часы: база, конвертер, готовый XML на площадку — процесс, который у большинства на рынке до сих пор наполовину ручной, здесь работал как отлаженный конвейер. Оставался, однако, один участок, который этот конвейер обходил стороной, — и на нём по-прежнему сидел живой человек.

Работа, которую тянул на себе фидолог

Каждая площадка — Циан, Авито, Яндекс Недвижимость, ДомКлик — принимает объявления в собственном XML-формате. Свои теги, свои допустимые значения, свои маппинги, свои обязательные поля, которых у одного только Циана под новостройки — многие десятки. И у каждого поля свой характер: где-то нужен ID застройщика, где-то координаты, метро, материал стен, паркинг, сроки сдачи, этажность.

Собрать такой фид и поддерживать его — работа фидолога: специалиста, который вручную сопоставляет колонки клиентской выгрузки с тегами каждой площадки. Работа кропотливая, требующая экспертизы и почти не прощающая ошибок: один тег молча уехал мимо схемы — и объявления либо не встали, либо встали криво. Автоматизировать это в лоб мешало одно: понять, что клиент имеет в виду под очередной строкой выгрузки, — задача не для регулярного выражения.

Что мы, собственно, сделали

Мы построили для 6feeds надстройку, в которой фид создаётся из обычного разговора. Риелтор пишет телеграм-боту человеческим языком — «сделай фид по новостройкам для Циана вот с этого источника», добавляет по ходу правки — а система сама собирает выгрузку под требования площадки.

Звучит просто. Но, как водится, за простотой на входе прячется довольно строгая внутренняя дисциплина.

Главный принцип: код и нейросеть занимаются разными вещами

С самого начала мы провели черту, которую в проекте не переступает никто — ни разработчик, ни сам бот.

Понимание намерения — только за нейросетью. Что именно хочет пользователь и какой тег он имеет в виду, решает исключительно Claude. Никаких regex и словарей ключевых слов для разбора живой речи — принципиально. Детерминированный разбор естественного языка хрупок и незаметно расходится с тем, что человек имел в виду; а здесь цена расхождения — кривой фид. Если из фразы непонятно, о каком теге речь, бот не угадывает, а переспрашивает.

Проверяемые операции — только за кодом. Разобрать XML, провалидировать URL, вытащить числовой ID, сверить колонку источника со схемой площадки — это работа кода, и здесь как раз уместен жёсткий детерминизм. Простая иллюстрация из практики: со страницы застройщика cian.ru/zastroishchik-ikon-development-8229/ код детерминированно достаёт ID 8229 — тут угадывать нечего и незачем.

Одной строкой: нейросеть понимает и выбирает, код проверяет и исполняет. Каждый занят тем, что умеет лучше, — и не лезет на чужую территорию.

Как это работает по шагам

  1. Диалог и scope. Бот сперва собирает рамку задачи — площадку, тип сделки, тип недвижимости. Без неё pipeline не стартует: это защита от случайного запуска на полуфразе.
  2. Импорт источника. Клиентская выгрузка подтягивается в рабочую таблицу, чтобы систему можно было анализировать без бесконечных обращений к источнику.
  3. Умное сопоставление колонок. Здесь Claude сопоставляет колонки клиента с тегами площадки — не по точному совпадению названий, а по смыслу, опираясь в том числе на официальную документацию тега. Причём результат принимается только при высокой уверенности; там, где модель сомневается, тег честно помечается как ненайденный, а не заполняется наугад.
  4. Добор недостающего. Значения, которых в выгрузке клиента попросту нет (тот самый ID застройщика, координаты, метро), система добывает сама — через правила резолва и веб-поиск. Не нашла — так и напишет, а не сочинит.
  5. Правки на человеческом языке. «Увеличь площадь на 20%» превращается в формулу =ROUND({TotalArea}*1.2;2). «Скрой лоты со статусом Продан» — в фильтр, который уберёт их из выгрузки. Пользователь говорит, что нужно; во что это превратить технически — забота системы.
  6. Сначала превью, потом запись. Финальный фид не пишется, пока человек не подтвердил превью. Никаких необратимых действий втихую.

Дисциплина доверия

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

Сбой нейросети, кривой ответ, невалидный JSON — ничто из этого не роняет весь процесс: проблемный тег помечается как требующий внимания, остальное едет дальше. Угаданное с низкой уверенностью в фид не попадает. А в служебные логи не утекают ни токены, ни сырые ответы внешних API — только обезличенная диагностика. Скучно? Возможно. Зато ночью спится спокойно.

Что в итоге

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

А главное — за красивой простотой «напиши боту, и всё соберётся» стоит честное разделение труда: нейросеть думает, код проверяет. Каждому, как говорится, своё.

Нужно внедрить ИИ в свой бизнес?

Запросить брифинг →