Mashakov Lab
Меню

Автоматическая генерация PDF-презентаций из CRM: кейс разработки

Разработали движок, который собирает характеристики, фотографии и планировки в PDF. Подключили CRM, фирменные шаблоны и режим white label.

Карточки данных и фотографии складываются в готовую презентацию

Проект под NDA. Название заказчика и конфиденциальные детали не раскрываются.

Мы разработали сервис автоматической генерации PDF-презентаций из данных CRM и сайта. Он получает характеристики объекта недвижимости, фотографии и планировки, проверяет материалы и собирает документ, который можно отправить клиенту. Решение поддерживает фирменное оформление и нейтральный режим white label.

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

Задача: автоматизировать подготовку презентаций

В недвижимости документы регулярно нужны для продажи, аренды, переговоров с инвесторами и работы с партнёрами. При ручной сборке сотрудник переносит характеристики из системы, обновляет цену, выбирает фотографии, размещает планировки и проверяет страницы.

Если сведения об объекте меняются, документ приходится собирать заново или редактировать вручную. Оформление может различаться в зависимости от того, кто готовил презентацию. Мы поставили задачу передавать данные в сервис и получать готовый PDF по единому шаблону, сохраняя возможность использовать документ в разных каналах работы.

Как мы построили генератор PDF-презентаций

Определили два способа получения данных

Мы предусмотрели интеграцию с сайтом и прямую работу с CRM. В первом сценарии сервис получает сведения об объекте из базы. Во втором CRM передаёт характеристики через API вместе со ссылками на изображения или загруженными файлами. Планировки могут поступать в формате PDF.

Оба сценария используют общий механизм подготовки документа. Это позволяет подключать генерацию к рабочему инструменту сотрудников и не переносить те же сведения вручную в редактор презентаций.

Разработали общий движок вёрстки

В основе решения — движок, который распределяет текст, характеристики, фотографии и планировки по страницам A4. Мы предусмотрели разные типы объектов: квартиры, жилые комплексы, дома, офисы, склады и торговые помещения. Состав документа зависит от категории недвижимости и доступных материалов.

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

Подготовили изображения и планировки

Перед генерацией сервис проверяет входные данные и оптимизирует изображения. Для обработки фотографий и PDF-планировок мы использовали Pillow и PyMuPDF. Этот этап связывает исходные материалы с требованиями итогового документа и подготавливает их к дальнейшей вёрстке.

HTML, CSS и JavaScript описывают шаблоны и размещение контента. Playwright и Chromium преобразуют подготовленную вёрстку в PDF. Такой процесс позволяет использовать один механизм сборки для разных типов презентаций.

Вынесли генерацию в очередь

Обработка изображений и выпуск PDF могут занимать время, поэтому мы реализовали фоновую генерацию. После передачи данных задача ставится в очередь. Когда документ готов, CRM может получить статус и скачать результат.

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

Фирменный шаблон и white label

Мы реализовали два режима оформления. Фирменная презентация содержит шапку, контакты, информацию о компании и QR-коды. Нейтральный режим white label сохраняет структуру и визуальный стиль документа, отключая фирменные блоки, контакты, ссылки и QR-коды.

Это позволяет использовать один движок для прямого общения с клиентом и других каналов работы, где требуется нейтральная презентация. Логика сборки данных и подготовки страниц остаётся общей.

Какие сложности мы решали

Разный состав материалов. У одного объекта много фотографий и подробное описание, у другого — небольшой набор характеристик и планировка. Мы связали состав презентации с доступными данными и типом недвижимости.

Переносы между страницами. Автоматическая генерация документов требует управления вёрсткой: текст и изображения должны распределяться по страницам последовательно. Для этого мы реализовали общий механизм размещения контента и преобразование подготовленного HTML в PDF.

Несколько источников данных. Сайт и CRM передают сведения разными способами. Общий API и этап проверки позволяют использовать единый процесс генерации для обоих сценариев.

Работа под регулярной нагрузкой. Мы отделили приём запроса от подготовки файла, добавили очередь и механизмы её восстановления. Для клиентов предусмотрели индивидуальные API-токены и разграничение доступа.

Технологический стек

API и управление генерацией мы реализовали на Python и Flask. PDF собирается из HTML-шаблонов через Playwright и Chromium, а изображения и планировки обрабатываются с помощью Pillow и PyMuPDF. Данные и готовые документы хранятся в базе данных и S3-совместимом хранилище. Генерация выполняется в фоне; серверная инфраструктура обеспечивает обработку запросов, автоматический запуск и восстановление сервиса после сбоя.

Для подключения внешних систем мы подготовили описание API в OpenAPI и примеры запросов. Это делает интеграцию самостоятельной частью решения: разработчик CRM может передать материалы, проверить состояние задачи и получить готовую презентацию.

Результат: выпуск документов из существующей системы

Мы создали работающий сервис, который формирует презентации недвижимости по единому шаблону и позволяет запускать их подготовку из CRM или сайта. Сотруднику доступен готовый PDF, а перенос характеристик и размещение материалов выполняются в процессе генерации.

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

Обсудим автоматизацию ваших документов

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

Обсудить генерацию презентаций и документов из вашей CRM

Чем можем помочь

Давайте начнём с разговора

Есть задача, которую
хочется сдвинуть с места?

Расскажите, что происходит в бизнесе и какой результат нужен.
Обсудим, чем можем помочь и какой формат подойдёт.

Написать в Telegram