← Назад к портфолио

Quantum Диагностика — AI-анализ внешности

AI-диагностика лица в Telegram за 3 минуты

Пациент загружает фото лица в Telegram-бот, проходит короткий опрос — и через 3 минуты получает персональный разбор по 120+ параметрам, визуализацию «До/После» и рекомендации клиники. Заявка на консультацию уже в вашей CRM.

⚡ Проблема

Косметологическая клиника тратит время администраторов на первичные консультации, которые ни к чему не приводят. Пациент не понимает, что ему нужно, стесняется задавать вопросы, уходит «подумать» и не возвращается. Конверсия из обращения в визит — низкая, а стоимость привлечения — высокая.

✅ Решение

Telegram-бот проводит AI-диагностику лица в автоматическом режиме: валидирует фото, собирает данные, анализирует 120+ параметров и показывает пациенту визуализацию результата «До/После». Заявка с контактами и полным разбором попадает в клинику — пациент приходит уже мотивированным.

⚙️ Что реализовано

📸

Загрузка фото с AI-валидацией

Одно фото или альбом с разных ракурсов. AI проверяет наличие лица и определяет пол. Нет лица — бот объясняет причину и просит загрузить заново. AlbumMiddleware собирает медиагруппу автоматически.

🧠

AI-анализ по 120+ параметрам

Все фото, персональные данные и ответы опроса отправляются в Gemini через OpenRouter API. Результат — персональный разбор с рекомендациями клиники и индексом эстетического потенциала 0–100.

🪞

Генерация визуализации «До/После»

AI выбирает лучшее фото из загруженных, генерирует улучшенную версию лица без изменения идентичности. Пациент видит медиагруппу «До» и «После» — мощный мотиватор для записи на приём.

📋

Пошаговый опрос с мультивыбором

Три этапа: проблемы (морщины, кожа, овал, асимметрия), желаемые результаты (омоложение, свежий вид, гармонизация) и свободный комментарий. Навигация «Назад» на каждом шаге.

📞

Запись на консультацию в один клик

После разбора — кнопка «Записаться». Номер валидируется в международном формате. Заявка с полным контекстом (имя, город, email, результат анализа) сохраняется в SQLite и отправляется на API клиники.

🛡️

Graceful Degradation на каждом шаге

AI-валидация недоступна — фото принимается без проверки. Генерация «До/После» сбоит — пациент переходит сразу к результатам. API клиники не отвечает — заявка остаётся в SQLite. Пользователь никогда не блокируется.

🏙️

Сбор контактов перед визуализацией

Город и email запрашиваются после анализа, но до генерации «До/После» — пациент уже вовлечён и охотно делится контактами. Данные сохраняются в базу до начала генерации — ничего не теряется.

📊

Индекс эстетического потенциала

AI рассчитывает числовой индекс 0–100 на основе текущего состояния и потенциала улучшений. Для пациента — понятная метрика. Для клиники — инструмент объективной оценки и мотивации к процедурам.

🔄 Путь пациента в боте

01
Приветствие и согласие
Пациент нажимает /start, видит описание бота и подтверждает согласие на обработку фото и данных. Ссылка на полные условия и политику — встроена в экран.
Telegram
02
Загрузка фото и AI-валидация
Одно фото или альбом с разных ракурсов. Первое фото проверяется AI: есть лицо — продолжаем, нет — просим переснять с объяснением причины. Фото сохраняются на диск.
AI + диск
03
Персональные данные и опрос
Имя → возраст → пол → выбор проблем (мультивыбор) → желаемые результаты (мультивыбор) → свободный комментарий. FSM-состояния управляют каждым шагом, «Назад» на всех экранах.
FSM aiogram
04
AI-анализ лица (15–30 сек)
Все фото + данные + ответы опроса отправляются в Gemini. Ответ: полный текст анализа, краткое резюме, рекомендованные услуги клиники и индекс эстетического потенциала 0–100.
OpenRouter API
05
Сбор контактов и генерация «До/После»
Город → email → сохранение в SQLite → AI выбирает лучшее фото → генерация улучшенной версии лица → медиагруппа «До» + «После» отправляется пациенту. При ошибке генерации — переход к результатам.
Gemini Image
06
Результат и запись на консультацию
Экран резюме с индексом и рекомендациями. Пять кнопок: подробный анализ, справка по индексу, запись на консультацию, связь со специалистом, возврат в меню. Заявка → SQLite + API клиники.
Конверсия

Контакты собираются в момент максимальной вовлечённости. Город и email запрашиваются после того, как AI уже проанализировал лицо — пациент видит сообщение «Генерируем визуализацию До/После» и охотно заполняет поля, чтобы увидеть результат. Конверсия в контакт — значительно выше, чем при сборе данных в начале.

🔗 Ключевые интеграции

🔵 OpenRouter + Gemini

AI-анализ и генерация изображений

  • Текстовый анализ: google/gemini-2.5-flash
  • Генерация изображений: gemini-3.1-flash-image-preview
  • Фото кодируются в base64, отправляются в multimodal-запросе
  • Retry с экспоненциальной задержкой при сбоях API
  • Markdown-ответ конвертируется в Telegram HTML
🟣 Telegram Bot API

aiogram 3 + FSM + Middleware

  • 6 роутеров: start, consent, upload, personal_data, survey, result
  • AlbumMiddleware — буферизация фото из медиагрупп
  • FSM-состояния для пошаговых процессов
  • Inline-клавиатуры с мультивыбором и навигацией «Назад»
  • Медиагруппа «До/После» — две фото в одном сообщении
🟢 SQLite + aiosqlite

Хранение данных и заявок

  • Таблица personal_data: имя, возраст, пол, город, email
  • Таблица consultations: заявки с полным контекстом анализа
  • Каждая заявка — новая строка, история не перезаписывается
  • Автосоздание БД и таблиц при старте приложения
  • Полностью асинхронный доступ через aiosqlite
🟡 API клиники

quantum-clinic.ru

  • POST-запрос с Bearer-авторизацией
  • Поля: name, phone, age, gender, city, email, message
  • Retry до 3 раз с экспоненциальной задержкой
  • При недоступности API — заявка остаётся в SQLite
  • Graceful Degradation — пациент не блокируется
🔗

Заявка содержит полный контекст диагностики. В API клиники и SQLite попадает не просто номер телефона, а весь результат: резюме AI-анализа, индекс эстетического потенциала, рекомендованные процедуры, персональные данные. Администратор видит полную картину и может подготовиться к визиту заранее.

📊 Ключевые показатели

120+
Параметров лица анализирует AI
3–5 мин
От первого фото до результата с визуализацией
0–100
Индекс эстетического потенциала
6
Роутеров aiogram с FSM-навигацией
До/После
AI-генерация улучшенного лица без потери идентичности
SOLID
Архитектура с DI через конструкторы

🏗️ Архитектурные особенности

🧱
Слоёная архитектура с чётким разделением
Handlers → Keyboards → Services → Clients → Models → Config. Каждый слой знает только о слое ниже. Обратных зависимостей нет. Хэндлеры не знают о деталях API — работают через сервисы.
💉
Dependency Injection через фабрики
Каждый роутер создаётся фабричной функцией: create_upload_router(photo_service, ai_service). Единственное место сборки зависимостей — create_bot.py. Роутеры получают только те сервисы, которые реально используют.
🔄
FSM-машина для управления сценарием
4 группы состояний: загрузка фото, персональные данные, опрос, запись на консультацию. Навигация «Назад» на каждом шаге. Состояния waiting_city и waiting_email обрабатываются в роутере survey — там доступен AI-сервис для генерации.
🛡️
Graceful Degradation на всех уровнях
AI-валидация, генерация изображений, отправка на API клиники — каждая точка интеграции обёрнута в обработку ошибок. Пользователь всегда доходит до результата, даже если часть сервисов недоступна.
📝
JSON-логирование с trace_id
Каждая запись: timestamp, level, message, logger, trace_id, context. Ротация 10 МБ × 5 копий. Отдельные логгеры для сервисов, хэндлеров и внешних API. Полная прослеживаемость каждой сессии диагностики.
🧩
AlbumMiddleware для медиагрупп
Telegram отправляет каждое фото альбома отдельным сообщением. Middleware буферизирует их, собирает в единый список и передаёт хэндлеру одним вызовом — без дубликатов и потерь.
📦

Адаптация под любую клинику за дни, а не месяцы. Промпты AI-анализа, список процедур, контакты клиники, текст согласия — всё вынесено в конфигурацию. Подключение к другой CRM — новый клиент по интерфейсу ClinicApiClient. Смена AI-модели — одна переменная в .env.

🛡️

Данные пациентов защищены. Фото хранятся локально в структуре data/user_{id}/, не передаются третьим сторонам кроме AI-модели для анализа. Согласие на обработку запрашивается до загрузки первого фото. Все операции — асинхронные, бот не блокируется при нагрузке.

🛠️ Технологии

Python 3.11+ aiogram 3.15 aiohttp aiosqlite SQLite OpenRouter API Gemini 2.5 Flash Gemini 3.1 Image asyncio dataclasses FSM systemd ruff mypy strict pre-commit pytest

✅ Подойдёт вам, если

  • У вас косметологическая клиника или салон красоты — и вы хотите автоматизировать первичную консультацию, чтобы пациент приходил уже мотивированным и с пониманием, что ему нужно
  • Вам нужно увеличить конверсию из обращения в визит — визуализация «До/После» и персональный разбор AI мотивируют записаться значительно лучше, чем текстовое описание услуг
  • Вы хотите собирать контакты потенциальных пациентов с полным контекстом — не просто номер телефона, а результат диагностики, проблемы, пожелания и индекс эстетического потенциала
  • Вам важна интеграция с существующей CRM или системой учёта — бот отправляет заявки на ваш API с Bearer-авторизацией, формат настраивается
  • Нужен инструмент, который работает 24/7 без участия администратора — бот проводит диагностику, собирает данные и записывает на консультацию автоматически, в любое время дня и ночи

Раньше пациенты звонили «просто узнать» — и администратор тратил 15–20 минут на каждый такой звонок, а до приёма доходили единицы. Сейчас мы отправляем ссылку на бот, пациент сам проходит диагностику, видит свой разбор и визуализацию результата — и записывается уже с чётким пониманием, зачем идёт. Конверсия в запись выросла вдвое, а администраторы занимаются реальной работой.

— Руководитель клиники эстетической медицины, Москва

Нужен Telegram-бот с AI-диагностикой для вашей клиники?

Разработаю бот с персональным анализом, визуализацией результата и интеграцией с вашей CRM — под специфику вашего бизнеса

Обсудить проект →