Понимайте реальную цену покупок, а не только ценник.
PriceCheck помогает ответить на вопрос: действительно ли покупка выгодна?
Сервис анализирует чеки, нормализует товарные позиции, сравнивает цены между сетями и формирует понятные для пользователя выводы.
Этот репозиторий создан как публичная презентация продукта и моего подхода к разработке:
- как системного аналитика,
- как бизнес-аналитика и продуктового менеджера.
- как backend-инженера.
PriceCheck превращает сырые чеки (фото, PDF с текстовым слоем или растром, текст, QR-ссылки на «короткие» и электронные чеки) в структурированные данные и отвечает на практические вопросы:
- покупка была действительно выгодной;
- как цена отличается между торговыми сетями и что показывает межсетевой индекс переплат по выбранным сетям;
- насколько «скидка» соответствует рыночной картине;
- какие паттерны трат формируются у пользователя, в том числе устойчивость во времени и нейтральные подсказки об уровне цен выбранных сетей относительно референса.
Фокус продукта: прозрачность потребительских цен, повышение финансовой осознанности и data-driven решения для B2C/B2B сценариев.
- Проверка честности скидок по историческим и агрегированным данным.
- Сравнение стоимости одинаковых или сопоставимых товаров между сетями.
- История чеков и аналитика, которая помогает планировать бюджет.
- Понятный интерфейс через Telegram-бот как референсный клиентский канал.
- API-first подход для интеграции в финтех, ритейл и программы лояльности.
- Нормализация и аналитика товарных данных как сервисный слой для партнёров.
- Корпоративный контур оплаты: сценарий
paymentCheckс корпоративным Bearer, идемпотентностью по внешнему идентификатору платежа и одноразовой валидацией токена активации — удобно вшивать подписку в кассу партнёра без «двойных» списаний квоты при повторных запросах. - Агрегированные выгрузки с порогом k-anonymity: при малом размере когорты детальные строки не отдаются, чтобы снизить риск реидентификации в партнёрских отчётах.
- Административный контур для операционного управления без ручной правки кода.
- Архитектура, рассчитанная на масштабирование и white-label сценарии.
- Backend и API: FastAPI, доменная логика, валидация контрактов.
- Данные: PostgreSQL + SQLAlchemy, миграции Alembic.
- Фоновые процессы: Celery + Redis для асинхронных задач.
- Файловый контур: S3-совместимое хранилище (MinIO) для чеков и артефактов.
- Наблюдаемость: метрики продукта и пайплайна на
/metrics, дашборды и SLO-ориентированные правила (Prometheus/Grafana). - Безопасность: fail-closed rate limiting (без bypass при деградации Redis), CSRF + rate limit для mutating-операций в админке, SSRF-защита webhook/QR fetch с повторной валидацией каждого redirect-hop.
- AI в управляемом контуре: проверка схем ответов, fallback-сценарии и контроль качества данных на этапе распознавания и аналитики.
Есть распространённое мнение, что Telegram-боты "простые".
В этом проекте бот — это лёгкая клиентская оболочка (thin client) над сложным backend-ядром:
- бот отвечает за UX, сценарии и навигацию;
- бизнес-логика, аналитика, нормализация, контроль качества данных, права доступа, лимиты, кэширование и расчёты живут в сервисном слое API.
Именно поэтому функциональность бота масштабируется без "разрастания" хендлеров: новые возможности добавляются в ядро и подключаются в UI-слой.
- Онбординг и legal-compliance:
/start, согласие на обработку ПД, ссылки на политику/условия, повторная активация после отзыва согласия. - Загрузка чеков: приём фото и PDF/изображений документом, валидация форматов, постановка в асинхронную обработку, корректная работа с пакетной загрузкой.
- Лимиты и подписка в рантайме: показ остатка распознаваний, сценарий исчерпания лимита, переход к экрану подписки и восстановлению квоты.
- История чеков: список "Мои чеки" с пагинацией, карточки результатов, удаление, возврат на нужную страницу, изменение даты чека из бота.
- Карточка результата распознавания: магазин, сумма, дата, список нормализованных позиций, отклонения от рыночной цены по каждой позиции, итог "экономия/переплата", опциональная LLM-сводка.
- Аналитика в боте (отдельный модуль):
- сравнение по торговым сетям с индексом переплат по сетям в тех же отчётах, где это уместно по данным;
- топ расходов;
- профиль покупателя (в т.ч. блок о ценовом паттерне покупок относительно выбранных сетей, в нейтральных формулировках);
- переплата/выгода по позициям;
- структура расходов;
- сравнение структуры с когортой;
- сравнение с эталоном питания;
- «Мои любимые торговые сети»: доли трат по сетям и тот же контур индекса, где данные доступны;
- поиск товара по нормализованному каталогу;
- разбор последнего чека.
- Профиль и data-subject rights: "Мои данные", достижения (в т.ч. вехи реферальной программы для пригласивших), удаление аккаунта, отзыв согласия, отображение статуса тарифа/плана.
- Подписка и платежи: экран тарифов, Telegram Stars invoice flow (pre-checkout + post-payment), активация/отмена подписки.
- Обратная связь: отдельный сценарий сбора feedback с rate limit и сохранением тикета.
Админ-панель в проекте — это не "просмотр таблиц", а рабочая система управления продуктом и эксплуатацией.
- Безопасный доступ и роли: логин/логаут, смена пароля, управление админ-аккаунтами (роли, блокировки, удаление), разделение прав.
- Управление пользователями: просмотр пользователей, смена роли/подписки, бан/разбан, удаление, операции с системным пользователем.
- Операции с чеками: список чеков, просмотр связанных LLM-запросов, редактирование/копирование/удаление.
- Контур распознавания: настройки распознавания, управление JSON-схемой ответа, сервисные настройки инструментов и моделей.
- Каталог нормализованных товаров: поиск и редактирование, ручной merge, dedup-процессы (light/full), вспомогательные инструменты сравнения и автодополнения.
- История цен: просмотр и редактирование ценовых записей по товарам.
- Prompt/контент-управление: переменные промптов, редактирование бот-текстов, управление продуктовым copy без деплоя кода.
- Роли и продуктовые лимиты: редактирование role settings, лимитов и доступности аналитических инструментов по планам.
- Достижения и Telegram emoji-каталог: CRUD достижений, пересчёт, синхронизация наборов кастомных emoji и биндингов.
- B2B-контур: управление корпоративными API-ключами, корпоративный Swagger/OpenAPI внутри админки.
- Торговые сети и индекс переплат: пересчёт снимков индекса, merge/архив сетей, согласованность с бот-отчётами по валюте и окну.
- Обратная связь пользователей: список обращений из бота, роли с разделением чтения/записи, выгрузка в файл для поддержки.
- Качество растровых чеков (операционный KPI): сводка по эвристикам качества фото-чеков для сопоставления с жалобами и настройкой препроцесса.
- Эксплуатация и поддержка: backup/restore БД и аудит операций, cleanup-инструменты, просмотр журнала LLM-запросов и служебных панелей.
- Проектирование backend-архитектуры и API-контрактов.
- Реализация и поддержка бизнес-логики распознавания и аналитики.
- Настройка инфраструктурных компонентов и эксплуатационного контура.
- Поддержка качества через тесты, миграции и технические регламенты.
- Формализация требований в спецификации продукта (PRD).
- Декомпозиция функционала на задачи с трассируемостью решений.
- Проработка интеграционных сценариев и ограничений.
- Управление изменениями требований без потери консистентности архитектуры.
- Контрактный подход к интеграциям: API-first, явные входы/выходы, ограничения и обработка ошибок.
- Описание бизнес-правил и edge-cases до реализации (роли, лимиты, статусы подписки, доступ к функциям).
- Формализация семантики событий и KPI для воспроизводимой продуктовой аналитики.
- Формирование ценностного предложения для B2C и B2B сегментов.
- Приоритизация backlog по бизнес-эффекту и рискам.
- Определение метрик продукта и критериев успеха инициатив.
- Связка стратегических целей продукта с технической реализацией.
- Связка аналитических инструментов с измеримой пользовательской ценностью (экономия/переплата, сравнение сетей, структура трат).
Текущий этап: MVP / alpha.
Репозиторий отражает рабочий процесс продуктовой и инженерной разработки: от гипотез и требований до реализации, эксплуатации и улучшений.
Открыт к обсуждению:
- пилотов и партнёрств,
- B2B-интеграций,
- продуктовых и технических консультаций,
- ролей на стыке engineering + system/business analysis.