AI / ML · Полный цикл

ОКО-СКАН 3.0

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

АО «Лигрес» · 2025, 2026
Product Engineer · Технический лидер · DevOps

Задача

Создать с нуля платформу, которая автоматизирует подготовку документов для подачи в суд. На входе — файлы с заранее неизвестным содержимым, на выходе — регламентированный комплект документов.

Система распознаёт текст, определяет типы и границы документов, извлекает реквизиты и формирует итоговый комплект.

От прототипа до эксплуатации

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

После запуска сформировал команду из 3–5 разработчиков и продолжил развитие продукта как технический лидер и разработчик ключевых компонентов.

Результат

По состоянию на лето 2026 года продуктом пользуются один крупный банк, агентство взыскания и несколько МФО. Через платформу обрабатывают до 5 000 документов в день.

Мой вклад

  • Многошаговые сценарии обработки документов на языковых и мультимодальных моделях.
  • Оркестрационный слой с сохранением прогресса и перезапуском обработки с нужного этапа.
  • Внутренний продукт для ручной корректировки ошибок и сбора обратной связи.
  • Инфраструктура инференса в закрытом контуре и управление GPU-ресурсами.
  • Наблюдаемость, продуктовая аналитика, контроль расходов и оценка качества ML-сервисов.
  • Frontend, UX, декомпозиция задач, архитектурное и кодовое ревью.
Технические подробности

LLM-инженерия

Разработал многошаговые сценарии обработки документов на языковых моделях размером 3B–30B. Для устойчивой работы разделял сложные задачи на специализированные проходы, отбирал значимые данные, исключал лишний контекст и добавлял точечные уточняющие запросы.

Решал проблемы следования инструкциям, галлюцинаций и зависимости ответа от состава и порядка контекста. Для структурированных ответов использовал guided decoding и JSON Schema, для оценки уверенности — logprobs.

В стек моделей и инференса входили PyTorch, Transformers, vLLM, olmOCR, ONNX и OpenVINO Model Server.

Оркестрация

Разработал собственный оркестрационный слой на Django, Celery, RabbitMQ, PostgreSQL и S3. Он управляет общим контекстом и состоянием запусков, сохраняет прогресс и позволяет перезапускать обработку с нужного этапа.

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

Ручная обработка

Спроектировал отдельный внутренний продукт для корректировки ошибок и сбора обратной связи: очередь заданий, просмотр документов, исправление структуры, классов и атрибутов. Отвечал за требования, UX, backend и frontend.

Модуль работает на Event Sourcing. Ошибки автоматизированно анализируются и выгружаются в трекер задач с учётом специфики работы конвейера документов.

Инференс и Kubernetes

Настроил GitOps на базе FluxCD и непрерывную доставку через GitLab CI/CD. Построил инфраструктуру инференса в полностью закрытом контуре.

Разработал Kubernetes-контроллеры на Go для интеграции внешних GPU-провайдеров через Virtual Kubelet и масштабирования с учётом нагрузки, холодного старта и тарификации. Каждый элемент системы развёртывается из собственного Helm-чарта и включает наблюдаемость.

Реализовал политики управления GPU-пулами с учётом границ оплаченных часов и ограничений на развёртывание новых реплик. Это позволило контролировать расходы при переменной нагрузке. В инфраструктуре также использовались Crossplane, OCI registry, Docker, devpi, Poetry и uv.

Наблюдаемость и экономика

Спроектировал наблюдаемость на уровне инфраструктуры, ML-сервисов и продуктовых процессов: метрики, централизованные логи, трассировку и диагностику ошибок. Использовал Prometheus, Grafana, Loki, Alertmanager и Sentry; Langfuse — для анализа LLM-вызовов, промптов и ответов моделей.

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

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

Data Science и оценка качества

Проводил прикладные исследования полного цикла: постановка задачи и ограничений, обзор и отбор моделей, тестирование на реальных данных портфелей, оценка precision, recall, F1 и latency, рекомендации и план внедрения.

Разработал общий eval-фреймворк для ML-сервисов: эталонные наборы, воспроизводимые прогоны, сохранение предсказаний, метрики и отчёты. С его помощью проверял изменения моделей, промптов и обработки данных на регрессии.

Frontend и руководство

Разработал веб-интерфейс постановки задач, мониторинга обработки и проверки результатов на TypeScript, React и Reatom с использованием Mantine. Проектировал сценарии просмотра документов и исправления структуры, классов и извлечённых атрибутов под предметную область.

Управлял командой из 3–5 разработчиков: декомпозиция, приоритизация, архитектурное и кодовое ревью. Ввёл общие стандарты разработки, тестирования, документации и межсервисных контрактов.

Backend-стек включал Python, Django / DRF, FastAPI, Pydantic, Redis и S3 / MinIO. Для проверки использовались pytest, pytest-bdd, Vitest, Playwright и playwright-bdd.