Марсель Шарипов · Портфолио

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

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

Бизнес-аналитик / Проджект-менеджер · SportsBase/Rustat · Казань, Россия

01 Платформа скаутинга

InStat Basketball

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

PostgreSQLNode.jsReact
Открыть кейс →
02 Внутренний инструмент

Data Editor

Внутренняя система, на которой работает команда данных и продакшена — управление сущностями, автоматические граберы и API-пайплайны за простым интерфейсом.

MySQLPHP
Открыть кейс →
03 Платформа скаутинга

SportsBase Handball

Новая платформа скаутинга, построенная с нуля на современном стеке — карты бросков, типы атак и видео через HLS-стриминг, привязанные к каждому событию.

PostgreSQLClickHousePython
Открыть кейс →
04 Внутренний инструмент

CRM

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

PostgreSQLPythonAnt Design
Открыть кейс →
05 В процессе

Следующий кейс

Ещё один разбор уже готовится — загляни позже.

Скоро

Практика Data Analyst

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

01

Анализ посещений страниц

PostgreSQL → Pandas → Tableau: кластеризация пользователей по тому, насколько активно они пользуются платформой.

Открыть →
← Все проекты InStat Basketball
Платформа видео-скаутинга · Кейс

Читать игру
по одному клипу за раз.

InStat Basketball превращает сырые записи матчей в структурированные скаутинговые данные — статистику, покадровые события и видеоклипы, привязанные к каждому событию, для команд, тренеров и скаутов.

Вступление

Зачем этот проект

Портфолио проджект-менеджера собрать непросто — редко есть чёткие KPI, на которые можно указать, большая часть работы неосязаема, а доступ к продукту пропадает в тот момент, когда уходишь из компании. Этот кейс разбирает один из самых полных проектов, над которым я работал: платформу, на которую реально опираются тренеры и скауты при подготовке к матчам.

База данных
PostgreSQLMongoDB
Бэкенд
Node.jsPythonRuby on Rails
Фронтенд
ReactRuby
Страница игрока · 01

Вкладка Overview

Страница игрока собирает паспортные данные, статистику, историю карьеры и карты бросков в одном месте. Overview — вид по умолчанию.

  • Статистика по сезону и результаты во всех турнирах, в которых участвовал игрок.
  • Актуальный список матчей, сильные стороны игрока показаны прямо на вкладке.
  • Один клик — и генерируется скачиваемый PDF-отчёт, сделанный специально под задачи скаутинга.
Страница игрока · 02

Вкладка Games

Статистика по каждому матчу с видео-хайлайтами, встроенными прямо в таблицу.

  • Продвинутый выбор матчей — можно фильтровать и комбинировать любой набор игр.
  • Панель настроек позволяет выбрать, какие именно параметры показывать в таблице.
  • Итоги, средние за игру или средние за владение — одна таблица, один переключатель.
  • Всё выгружается напрямую в XLS.
Страница игрока · 03

Броски & Pick'n'Roll

Каждый бросок с точкой на площадке и типом розыгрыша за ним.

  • Точка броска на площадке с фильтрами по типу броска, ассисту или сопернику.
  • Можно выбрать диапазон матчей и сразу собрать подходящие броски в плейлист.
Страница игрока · 04

Карьера, сравнение и типы атак

Три вкладки, три вопроса: где играл этот игрок, как он смотрится на фоне других и в чём он реально силён.

  • Карьера — полная статистическая история по сезонам, турнирам и командам.
  • Сравнение — статистика нескольких игроков бок о бок за выбранный период, сильные стороны выделены.
  • Типы атак — эффективность по стилю игры, показывает сильнейшую роль игрока на площадке.
05

Страница матча

У каждого матча — свой полный разбор.

  • Статистика игроков, покадровые события, типы атак и составы на игру для одного матча.
  • Кнопка экспорта в XML забирает данные для использования в других инструментах или офлайн.
06

Видеоплеер и инструменты

Здесь данные встречаются с видео — часть, где тренеры проводят больше всего времени.

  • Рисунки — можно аннотировать любой клип, затем посмотреть, отправить по почте или скачать для презентации.
  • Теги — отмечать моменты во время просмотра плейлиста кнопкой или горячей клавишей, чтобы быстро вернуться к ним позже.
  • Сохранение эпизода и настройка границ — вырезать, обрезать или удлинить клипы и собрать их в плейлист, который может редактировать весь тренерский штаб вместе.
← Все проекты Data Editor
Внутренний инструмент · Кейс

Один интерфейс,
любой спорт, любой источник.

Data Editor — внутренняя система, на которой строится день команды данных и продакшена: простые экраны снаружи, а всю тяжёлую работу внутри делают автоматические граберы, API-пайплайны и логика валидации.

Вступление

Что это делает

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

База данных
MySQL
Бэкенд
PHP
Фронтенд
PHP
01

Главная страница

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

Главная страница навигации Data Editor
  • У каждого вида спорта, который поддерживает компания, — свой набор инструментов, доступный из одного места.
  • Новые сотрудники ориентируются сначала по спорту, потом по инструменту — так же, как бизнес на самом деле думает о данных.
02

Инструменты отдела данных

Ядро системы: создание сущностей для каждого вида спорта, автоматизация их наполнения и поддержание порядка. Ещё один поток данных приходит через запланированные API-запросы — та же автоматизация, благодаря которой небольшая команда данных обслуживает всю систему.

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

Граберы данных

Автоматические задачи, которые подтягивают новые сущности или обновляют существующие из сторонних источников, чтобы никто вручную не перепечатывал то, что источник уже опубликовал.

Скриншот инструментов Data API

Инструменты Data API

Второй, API-путь для того же рода автоматических обновлений — запланированные запросы, которые держат записи актуальными без ручного ввода.

03

Инструменты продакшена

Команда продакшена тоже ведёт здесь свою повседневную работу: следит за очередями, мониторит загрузки и планирует наперёд. Здесь же результат работы каждого разборщика проверяется и превращается в расчёт зарплаты.

Скриншот очередей продакшена

Очереди продакшена

Очереди для анализа матчей и операционных процессов, чтобы команда видела, что дальше и что ещё в работе, одним взглядом.

Скриншот просмотров

Просмотры

Мониторинг загрузок видео и работы разборщиков — те же данные, что идут в расчёт зарплаты команды.

← Все проекты SportsBase Handball
Платформа видео-скаутинга · Кейс

Сделано с нуля,
сделано быстрым.

SportsBase Handball — платформа скаутинга, построенная с нуля, а не переделка старого продукта. Статистика, покадровые события и видео, привязанные к каждому событию, на стеке, пересобранном заново ради скорости.

Вступление

Новая платформа, а не редизайн

Вместо того чтобы натягивать старую кодовую базу на новый вид спорта, платформу собрали с нуля на современном стеке: бэкенд на Python, PostgreSQL вместе с ClickHouse для аналитики по большому объёму событийных данных, и видео через HLS вместо обычных файлов. В итоге платформа заметно быстрее на каждом шаге — от загрузки страницы до перемотки внутри клипа.

База данных
PostgreSQLClickHouse
Бэкенд
Python
Доставка видео
HLS-стриминг
01

Страница игрока

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

  • Паспортные данные, статистика по сезону и полная история карьеры по командам и турнирам — сначала главное.
  • ClickHouse обрабатывает аналитические запросы на уровне событий, на которых обычное строковое хранилище захлебнулось бы при таком объёме.
  • Видео идёт через HLS с адаптивным битрейтом — клипы стартуют быстро и плавно перематываются вместо ожидания полной загрузки.

Overview и карьера

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

Матчи и типы атак

Разбивка по броскам, передачам, потерям и удалениям за каждый матч, плюс эффективность по типу атаки: быстрый отрыв, позиционное нападение или пустые ворота.

02

Страница команды

Статистика по всей команде и карты бросков, со сравнением с другими командами бок о бок.

  • Журнал игр, статистика по всей команде и карты бросков в одном месте.
  • Команды можно сравнивать бок о бок — на том же слое ClickHouse, что и карта бросков.

Страница матча

Полная детализация одного матча — покадровые события, составы и статистика вратаря — с экспортом для использования в другом месте.

03

Видеоплеер и инструменты

Пересобран вокруг HLS-стриминга — сам плеер быстрее и легче, чем подход с обычными файлами, который он заменил.

  • Рисунки и шаринг — аннотируй любой клип рисунками и текстом, затем смотри, отправляй по почте или скачивай для презентации.
  • Теги и плейлисты — отмечай моменты во время просмотра кнопкой или горячей клавишей, затем вырезай, обрезай или удлиняй эпизоды в плейлист, который может редактировать весь тренерский штаб вместе.
  • Каждый клип идёт через HLS для почти мгновенного воспроизведения, даже при перемотке туда-обратно.
← Все проекты CRM
Внутренний инструмент · Кейс

Клиенты, контракты
и денежный поток в одном месте.

Внутренняя CRM, на которой держатся отношения с клиентами от начала до конца — от первого контракта компании через инвойсы и комиссии до баллов производственной команды, из которых складывается чья-то зарплата.

Вступление

Что это делает

Одна система закрывает обе стороны бизнеса: работу с клиентами (клиенты, контакты, контракты) и следующую за ней финансово-производственную работу — выставление счетов, комиссии, конвертацию валют и подсчёт баллов аналитиков, от которых зависит вся платформа.

База данных
PostgreSQL
Бэкенд
Python
Фронтенд
Ant Design
01

Персоны

Учёт людей за каждым клиентом — и собственных сотрудников компании.

Скриншот страницы персон
  • Создание и ведение контактов клиентов и сотрудников компании в одном списке.
  • Проверка личных данных и того, к каким именно платформам у человека есть доступ.
  • Статистика по отправленным этому человеку отчётам, плюс посещения страниц и число авторизаций — быстрый взгляд на реальную активность.
02

Клиенты

Карточка компании за каждым контрактом.

Скриншот страницы клиентов
  • Регистрация и ведение компаний-клиентов — клубов, академий, агентств и частных клиентов.
  • С одного взгляда видно, есть ли у клиента активный контракт.
  • Назначение видов спорта, которые покрывает клиент, и привязка его спортивных клубов прямо к карточке.
03

Контракты

Где именно открывается доступ к продуктам компании.

Скриншот списка контрактов
  • Все контракты в одном сортируемом списке — спорт, клиент, статус подтверждения, срок действия, менеджеры.
  • Статус подтверждения отслеживается явно, чтобы ничего не запускалось наполовину настроенным.
Скриншот детальной страницы контракта
  • Открывает клиенту доступ к продуктам компании в рамках конкретного спорта, платформы и формы контракта.
  • Настройка автоматической отправки отчётов на весь срок действия контракта.
  • Финансовые детали прямо на контракте: сумма, НДС, оплачено/должно, полный график платежей с номерами инвойсов.
  • Назначение менеджеров и прикрепление файлов — как со стороны финансов, так и со стороны продаж.
04

Платежи

Денежный поток по всем контрактам в одной таблице.

Скриншот таблицы платежей
  • Все инвойсы и комиссии по клиентам и платформам с фильтром по плановой дате платежа.
  • Встроенная конвертация валют по выбираемой дате курса центробанка.
  • Комиссии менеджеров и агентов отслеживаются рядом с суммой самого инвойса.
05

Баллы

Производственная сторона той же системы — подсчёт баллов людей, которые непосредственно размечают матчи.

Скриншот баллов по дням
  • Дневные суммы баллов по каждому разборщику, свёрнутые в недельные и периодные итоги.
  • Фильтр по спорту, диапазону дат, разборщику и стране — те же цифры, что идут в расчёт зарплаты.
← Все проекты Анализ посещений страниц
Практика Data Analyst · Кейс по OSEMN

Кластеризация пользователей
по сырым логам посещений.

Самостоятельное упражнение, не продакшн-работа: взять сырой лог событий посещения страниц и превратить его в реальный ответ — какие страницы важны, чем отличаются domestic и global платформы, и какие вообще бывают пользователи.

Бриф

Датасет

Стартап внедряет базовый трекинг активности пользователей по двум продуктам: платформа для домашнего рынка в Восточной Европе и глобальная платформа, которая работает по всему миру. Каждое посещение страницы логируется с одинаковым набором полей. Названия платформ и полей ниже изменены из соображений приватности — сами данные настоящие.

Что трекается при визите

User ID, Entity ID (команда / игрок / матч), Page Type, Tab Type, Timestamp, Platform ID (Domestic / Global), Sport Type.

Почему это важно

Один лог событий связывает воедино, кто, что и где сделал и на какой платформе — этого достаточно, чтобы ответить на реальные продуктовые вопросы, если правильно его запросить.

01

S.M.A.R.T.-вопросы

Первый подход к совершенно новому датасету — фиксированной гипотезы ещё нет, поэтому цель была в том, чтобы исследовать, классифицировать и кластеризовать данные, прежде чем сужать фокус. Работу задавали четыре вопроса:

  • Какие страницы и вкладки самые популярные среди пользователей?
  • В чём ключевые различия между domestic и global платформами?
  • Сколько посещений страниц было за последний месяц?
  • Какие паттерны использования платформ есть по всему миру?
02

Сбор и очистка (Obtain & Scrub)

Данные трекинга лежат в PostgreSQL. Рамки: только футбол, данные за июль, внутренние ID сотрудников исключены, чтобы не искажать поведение клиентов.

Сумма посещений страниц по типу страницы и вкладке
select
  t.name as page,
  b.name as tab,
  count(*) FILTER (WHERE v.c_platform = 1) as domestic,
  count(*) FILTER (WHERE v.c_platform = 2) as global
from crm.oidc_user_log.f_visit v
left join crm.oidc_user_log.c_page_type t on t.id = v.c_page_type
left join crm.oidc_user_log.c_tab_type b on b.id = v.c_tab_type
where v.c_sport = 1
  and v.c_oidc_user not in (754, 127, 231, 135)
  and v.ts between '2024-07-01' and '2024-08-01'
group by page, tab
Агрегированные посещения и число пользователей по часам
select
  to_char(v.ts, 'HH24:MM') as hour,
  count(*) FILTER (WHERE v.c_platform = 1) as domestic,
  count(*) FILTER (WHERE v.c_platform = 2) as global,
  count(distinct v.c_oidc_user) FILTER (WHERE v.c_platform = 1) as domestic_users,
  count(distinct v.c_oidc_user) FILTER (WHERE v.c_platform = 2) as global_users
from crm.oidc_user_log.f_visit v
where v.c_sport = 1
  and v.c_oidc_user not in (754, 127, 231, 135)
  and v.ts between '2024-07-01' and '2024-08-01'
group by hour

Результаты запросов выгружены в Google Sheets для следующего этапа.

Таблица анализа данных

Открыть Google Sheet ↗

03

Разведка и модель (Explore & Model)

Три инструмента, три угла на одну и ту же выгрузку: быстрая статистическая визуализация на Python, дашборд для шаринга в Looker Studio и кластеризация в Tableau.

Базовые визуализации на Pandas и Matplotlib
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
########
df = pd.read_csv("PageVisits.csv")
########
print(df.info())
########
sns.pairplot(df)
plt.show()
########
df.plot.hist(alpha=0.5)
plt.show()
########
df.plot.box()
plt.show()
########
Визуализация посещений страниц на Pandas/Matplotlib
  • Быстрый pairplot и гистограмма по общему числу посещений — достаточно, чтобы проверить распределение на здравый смысл перед дальнейшим моделированием.

Те же данные легли в основу дашборда Looker Studio для более удобного шаринга.

Дашборд Looker Studio

Открыть дашборд ↗

Кластеризация в Tableau. Пользователи кластеризованы по общему числу посещений страниц за июль, отображены на логарифмическом scatter-плоте для наглядности — получилось четыре группы:

Scatter-плот кластеризации пользователей в Tableau
  • Regular users — 83% пользователей, до 200–300 посещённых страниц за июль.
  • Advanced users — 13%, 300–1 000 страниц.
  • Fans и super fans — вместе менее 4% пользователей, но до 4 000 страниц.

Посмотреть на Tableau Public ↗

04

Выводы (Interpret & conclusions)

Сильный первый заход на ограниченном срезе данных: понятная картина самых популярных страниц и вкладок на обеих платформах, часы пиковой нагрузки и первое разделение поведения domestic и global. Кластеризация пользователей по числу визитов даёт отправную точку для анализа вовлечённости — большая база «обычных пользователей» против маленького, но очень активного ядра фанатов.

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