Машинное обучение на Python · работает в браузере
Аналитика отзывов с маркетплейсов
На трёх площадках сотни отзывов в неделю, и про партию с треснувшими клапанами узнают, когда рейтинг уже упал. Здесь Python-пакет неделю за неделей собирает отзывы обжарочной «Зерно» через API продавца трёх маркетплейсов, сам размечает тональность и аспекты — вкус, помол, упаковку, доставку, цену — и сравнивает каждую неделю с предыдущими. Звёздам он не верит: «пять звёзд, но пачка пришла рваная» — это жалоба на упаковку. А жалобу, о которой модель не знала, он находит как новую тему.
Сценарий: Обжарочная «Зерно» — вымышленная, та же, что в квизе и хабе заявок: десять позиций кофе, посуды и оборудования на трёх маркетплейсах. Отзывы за полгода сгенерированы, в них спрятаны пять инцидентов — от подорожания до недовеса.

Открыть демо
Первый запуск скачивает около 35 МБ — Python, numpy, scipy и scikit-learn — и обучает модели за несколько секунд, дальше всё из кеша. Удобнее с компьютера: таблица аспектов и графики шире.
Приложение работает в браузере: на сервер ничего не отправляется.
Что показывает демо
Как попробовать
Посмотрите обзор
При запуске модели обучаются, а история за восемь недель собирается сама. На вкладке «Модель» — насколько модель точнее звёзд и на какие слова опирается.
Соберите следующие недели
«Собрать следующую неделю →» — с десятой начнутся жалобы на цену, с четырнадцатой — треснувшие клапаны на Wildberries и Ozon. Тревога появится в первую же неделю, «Показать отзывы →» откроет их.
Поправьте модель
Нажмите «Почему так?» под отзывом, а если модель ошиблась — исправьте метку. Модель дообучится, тревоги и темы пересчитаются.
Ответьте и найдите новое
Во вкладке «Ответы» опубликуйте черновик через API площадки. Нажмите «До конца» — на вкладке «Темы» появится недовес, о котором модель не знала. Скачайте Excel.
Без платных нейросетей
«Зерно» и отзывы вымышлены. Ответы API Wildberries, Ozon и Яндекс Маркета — статические файлы на этом же сервере, по папке на каждую из 26 недель; форматы, пагинация и публикация ответа повторяют документацию площадок. Модели — настоящий scikit-learn в WebAssembly-сборке Pyodide, без платных нейросетей: черновики ответов собираются из шаблонов. Тот же пакет проверяется тестами pytest на обычном Python и запускается на сервере одной командой.
Демо работает без API-ключей OpenAI, YandexGPT или GigaChat. Там, где рабочая система обращается к модели, стоит локальная заглушка с тем же интерфейсом — поэтому демо бесплатно, всегда доступно и ничего не выдумывает.
Что будет в рабочем проекте
- Сбор по расписанию на сервере с токенами продавца, история в PostgreSQL
- Модель дообучается на разметке менеджеров, качество проверяется в CI на контрольной выборке
- Тревоги в Telegram с кнопками: открыть отзывы, взять в работу, передать производству или логистике
- Черновики ответов от языковой модели по вашим правилам, публикация после одобрения
- Еженедельный отчёт в Excel на почту и дашборд по товарам и площадкам
Стек
- Все демо по стеку:
- Python
- React
- TypeScript
- Python 3.14
- scikit-learn
- pandas
- openpyxl
- pytest
- Pyodide
- WebAssembly
- Web Worker
- Comlink
- React 19
- TypeScript
- Recharts
- Zustand
Основано на
Книги и дисциплины, идеи из которых работают в этом демо.
Книга · Д. М. Кольцов
Python на примерах. Практика, практика и только практика
У каждой площадки — свой класс источника с общим методом сбора, поэтому Wildberries, Ozon и Яндекс Маркет обрабатываются одним кодом; тональность и аспекты — на scikit-learn.
Книга · Алексей Васильев
Программирование на Python в примерах и задачах
Отзывы с Wildberries, Ozon и Яндекс Маркета собираются одновременно, у каждой площадки — своя пагинация.
Дисциплина · ВМК МГУ
Операционные системы
Python через Pyodide запускается в отдельном Web Worker: модели обучаются, не блокируя страницу.
Комментарий от разработчика
Антон Гончаров
Разработчик ИИ-систем · Python
Для бизнеса
- Всплеск жалоб виден в первую же неделю — до того, как упадёт рейтинг карточки.
- Звёздам верить нельзя: модель находит жалобу в отзыве на пять звёзд и похвалу в отзыве на три.
- Проблемы, о которых никто не думал, всплывают сами — как недовес в этом демо.
Для разработчиков
- scikit-learn в браузере через Pyodide: TF-IDF по основам слов с учётом «не» и символьным n-граммам, логистическая регрессия, аспекты — один против всех.
- Тревоги — биномиальный z-score по неделе, площадке и товару против шести недель до неё, для узких срезов порог выше.
- Качество проверяется на отдельной выборке: macro-F1 0,88 против 0,72 у правила по звёздам. Тот же пакет проходит pytest в CI.
Советы
Совет 01
Сравнивайте модель с простым правилом: если она его не обходит, она не нужна.
Совет 02
Для тревог считайте статистическую значимость, а не проценты: на маленьких числах проценты врут.
Нужен такой же для вашего бизнеса?
Расскажите о задаче — отвечу, что из демо подойдёт вам, сколько это займёт и что понадобится с вашей стороны.
Другие демо в этом разделе
Все демо- работает
Веб-приложение · распознавание речи · нейросеть в браузере
Голосовая заявка
Клиент наговаривает заявку голосом, а менеджер получает готовую карточку: имя, компания, телефон, бюджет, сроки, задача и оценка — горячий лид или нет. Речь распознаёт Whisper прямо в браузере.
- React
- TypeScript
- Нейросеть в браузере
- работает
Веб-приложение · звонок в браузере · распознавание и синтез речи
Голосовой оператор доставки
Робот принимает заказы по телефону вместо администратора: слушает, переспрашивает, проверяет адрес по зонам доставки, считает сумму и читает заказ перед подтверждением. Звонок идёт прямо в браузере — кнопка «Позвонить», без номера телефона.
- React
- TypeScript
- Нейросеть в браузере
- работает
Веб-приложение · распознавание речи · контроль отдела продаж
Речевая аналитика звонков
Звонок отдела продаж превращается в расшифровку по ролям, оценку по скрипту и заполненную карточку сделки: клиент, контакты, интерес, озвученная цена, следующий шаг и задача менеджеру. Речь распознаёт Whisper прямо в браузере.
- React
- TypeScript
- Нейросеть в браузере
- работает
Веб-приложение · документы · DOCX и PDF
Генератор КП и договора
Менеджер заполняет анкету сделки — покупатель, товары, скидка, НДС, — а коммерческое предложение, договор поставки и счёт собираются на листе A4 на глазах. На выходе — Word, PDF или JSON.
- React
- TypeScript
- работает
Веб-приложение · B2B · КП в PDF
Конфигуратор цены
Менеджер собирает заказ на все окна квартиры: тип, размер, створки на схеме, профиль, стеклопакет и цвет. Правила производства проверяются сразу, скидки и рассрочка считаются сами, КП с номером уходит в PDF.
- React
- TypeScript
- работает
Веб-приложение · финансы · сравнение
Ипотечный калькулятор
Пять программ банков на одном экране: какие подходят клиенту и почему остальные нет. Льготная ставка от застройщика, дифференцированный платёж, досрочное погашение, нагрузка на доход и налоговый вычет.
- React
- TypeScript
- работает
Веб-приложение · смета · PDF
Калькулятор сметы ремонта
Размеры комнат превращаются в площади пола, стен и потолка, а те — в работы по этапам. Работа и материалы отдельно, срок по выработке бригады, график оплаты и версии сметы для торга с клиентом.
- React
- TypeScript
- работает
Веб-приложение · витрина · чекаут · заказы
SPA-каталог на React
Магазин целиком в браузере: поиск с подсказками и исправлением раскладки, фасеты с живыми счётчиками, ссылки на любой фильтр, избранное, корзина с промокодом и чекаут с выбором слота доставки. Заказы видны в «Моих заказах» со статусами, их можно повторить или отменить.
- React
- TypeScript
- работает
Виджет для сайта · нативный JS · одна строка
Виджет AI-консультанта
Консультант для любого сайта, который ставится одной строкой: отвечает по базе знаний со ссылкой на источник, собирает заявку и зовёт оператора. Написан на чистом JavaScript без фреймворков — весь виджет 21 КБ в gzip.
- Нативный JS
- работает
Виджет для сайта · нативный JS · заявки
Квиз-форма заявки
Квиз вместо длинной формы: шесть вопросов с ветвлением, в конце — расчёт по прайсу. Менеджер получает заявку с оценкой «горячая / тёплая / холодная» и источником рекламы, а вкладка «Аналитика» показывает, на каком шаге уходят люди.
- Нативный JS
- работает
Backend на Python · вебхуки → amoCRM и Битрикс24
Интеграционный хаб заявок
Заявки с сайта, из рекламы, звонков, почты и ботов приходят на вебхуки, приводятся к одному виду, проверяются на дубли, распределяются по менеджерам и доставляются в amoCRM и Битрикс24 — с повторами, когда CRM недоступна.
- Python
- React
- TypeScript
