Перейти к кейсам

Vladimir Trischenko

PRODUCT / DELIVERY PORTFOLIO

От продуктовых правил и бизнес-требований — до реализации, QA, приёмки и готовности к release.

END-TO-END PRODUCT DELIVERY

TicketTON

От продуктовых правил до контролируемого релиза

TicketTON — игровая платформа внутри Telegram WebApp с real-time multiplayer, Player- и Admin-приложениями, server-authoritative promo/free-play Ticket-экономикой и операционными контролями на базе PostgreSQL. Реализация продукта и его release / activation проходили через отдельные контролируемые gates.

Core platform · promo/free-play режимПоздние механики · активация под отдельным контролем

Моя зона ответственности

  • Продуктовые правила и бизнес-логика
  • Требования и scope
  • Последовательность Delivery
  • QA и критерии приёмки
  • Release и активация

Engineering реализовывал приложение, базу данных и тестовую инфраструктуру.

Продуктовые домены

PLAYER

Игры · Профиль · Миссии · Рефералы · Gifts

MULTIPLAYER

Flappy · Arena · Tanchiki · Matchmaking

ECONOMY & GROWTH

Tickets · Сезоны · Referral · Rewards

OPERATIONS

Admin · Очереди · Сессии · Reconciliation · Controls

Контекст системы

  1. Telegram WebApp
  2. React / Vite Player
  3. Fastify / Node.js API
  4. PostgreSQL
  • Player ↔ Colyseus ↔ Multiplayer
  • Admin → Fastify / PostgreSQL

Стек

  • Telegram WebApp
  • React 18
  • TypeScript
  • Vite 5
  • Node.js 22
  • Fastify 5
  • PostgreSQL 16
  • Colyseus
  • Docker
  • Nginx
  • Vitest
  • GitHub Actions
Матчи — live-витрина (видео). Экран ближайших матчей: фильтры по играм, «матч дня», ticket-вход и награды Telegram Gifts. Запись из тестового окружения.
Главный экран — Игры (видео). Основной экран TicketTON Games: сезонный статус, каталог игр и режимы входа. Запись из тестового окружения.
Кабинет и пополнение TON (видео). Личный кабинет игрока и пополнение баланса через сторонний TON-кошелёк. Запись из тестового окружения.
TicketTON Admin — Пользователи
TicketTON Admin — Пользователи. Отдельный операционный product surface: записи пользователей, балансы, сессии и модерационные действия. Среда не содержит реальных пользовательских данных.

Открыть TicketTON в Telegram

Открыть в Telegram

https://t.me/SkillWarsBot

Текущий статус среды

Тестовая среда · synthetic load testing

База очищена и не содержит реальных пользовательских данных. Сейчас продукт проходит синтетические нагрузочные и функциональные тесты: проверяются стабильность сервера, игровые комнаты, очереди, matchmaking и обработка ошибок перед следующим этапом release readiness.

Дополнительные product surfacesTON-инфраструктура в Admin
Admin — инфраструктура TON-транзакций
Admin — инфраструктура TON-транзакций. Инфраструктура TON-транзакций в Admin — операционный интерфейс, а не доказательство активной real-money экономики.

DEEP DIVE

От простой реферальной механики к управляемой бизнес-системе

TicketTON — Referral Rewards

Сам факт реферальной связи не создаёт автоматического права на награду. Финальная продуктовая модель связала reward с подтверждённой активностью, периодом maturation, проверкой состояния, атомарным начислением и отдельным контролем активации.

Цель сместилась от вознаграждения за регистрацию к вознаграждению за пользователя, который действительно начал пользоваться продуктом.

РеализованоDisabled / ClosedАктивация под контролем

Attribution ≠ Entitlement

Проблема

Простая модель

Обязательство по награде возникает от одной только регистрации.

  • Приглашение
  • Регистрация
  • Награда

Риски, которые система должна была предотвращать

Сценарии сбоя, которые должен был закрыть продуктовый контракт.

  • Низкокачественные / искусственные регистрации
  • Фарминг через повторяющихся соперников
  • Дублирующиеся начисления
  • Одностороннее начисление
  • Неконтролируемые сезонные обязательства
  • Несогласованность accounting

Это риски, под которые проектировалась система, а не заявленные production-инциденты.

Продуктовый контракт

Квалификация
  • 3 активных UTC-дня
  • 10 подходящих матчей
  • 8 уникальных реальных соперников
Maturation
  • 7 полных дней
Reward
  • +150 Tickets приглашённому
  • +250 Tickets пригласившему
Ограничение
  • Не более 5 оплаченных referral-пар на inviter за origin season

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

Дисциплина release

STATE MACHINE

Логика начисления реферальной награды

  1. 01
    ATTRIBUTED / Привязан
  2. 02
    Наблюдение

    3 активных дня · 10 подходящих матчей · 8 уникальных реальных соперников

  3. 03
    Квалифицирован
  4. 04
    Maturation

    7 полных дней

  5. 05
    Готов к начислению
  6. 06
    Атомарное начисление
  7. 07
    Награда начислена

Боковые / конечные состояния

HOLDЗАБЛОКИРОВАНИСТЁКЛИМИТ ИСЧЕРПАН

Attribution входит в машину состояний; награда начисляется только после квалификации, maturation и атомарного начисления.

Риск → Продуктовый контроль

  • Искусственная / низкокачественная регистрация

    Пороги квалификации: активные дни, подходящие матчи и уникальные реальные соперники

  • Повторяющийся фарминг / неоднозначное поведение

    Окно maturation + HOLD / ручная проверка

  • Дублирующееся / частичное начисление

    Идемпотентная атомарная пара наград

  • Неограниченные обязательства по наградам

    Сезонный лимит + отсутствие переноса между сезонами

Доказательства приёмки

44

Обязательные acceptance-проверки

Evidence принимается только при полном прохождении набора проверок.

21

Категорий критических противоречий reconciliation

Негативный acceptance-кейс

Ожидалось
+150
Намеренно создано
+149
Результат
RECONCILIATION FAIL
После удаления противоречия
PASS
Примеры reconciliation-проверок5 примеров из 21 критической категории
  • неверная сумма
  • односторонняя пара
  • дублирующаяся награда
  • награда до окончания maturation
  • расхождение в ledger
Обоснование негативной приёмкиСоздано +149 вместо +150

Acceptance harness намеренно создавал ошибочную сумму, чтобы доказать: экономическая несогласованность должна переводить reconciliation в FAIL.

Дополнительные доказательства

Бизнес-правилаЗафиксированный продуктовый контракт
  • Первая принятая attribution
  • Attribution неизменяема
  • Самореферал запрещён
  • Нет ретроактивной attribution с правом на награду
  • Квалификация до награды
  • Maturation до награды
  • Пути HOLD / BLOCKED
  • Нулевой перенос между сезонами
  • Отсутствие побочных эффектов Gift
  • Парная награда как одна атомарная бизнес-транзакция
  • Активация под контролем владельца
Edge casesAttribution · Квалификация · Награда · Риски / Сезон

Attribution

  • Побеждает первая принятая attribution
  • После принятия attribution неизменяема
  • Самореферал отклоняется
  • Нет ретроактивной attribution с правом на награду

Квалификация

  • Подсчёт активных дней по границам UTC
  • Определение подходящего матча исключает неквалифицирующие сессии
  • Подсчёт уникальных реальных соперников
  • Квалификация должна завершиться до старта maturation

Награда

  • Парная награда — одна атомарная бизнес-транзакция
  • Идемпотентное начисление — без дублирующих строк ledger
  • Односторонняя пара невозможна
  • Отсутствие побочных эффектов Gift

Риски / Сезон

  • Пути HOLD и BLOCKED останавливают прогресс
  • Сезонный лимит оплаченных пар на inviter / origin season
  • Нулевой перенос между сезонами
  • Истечение при невыполненной квалификации
Приёмка и reconciliationEvidence принимается только при полном прохождении
  • 44 обязательные acceptance-проверки по продуктовым правилам и accounting
  • 21 категория критических противоречий reconciliation
  • Негативная приёмка: +149 вместо +150 обязано переводить reconciliation в FAIL
  • Количество строк ledger и суммы сходятся точно
Синтетический PostgreSQL acceptance-сценарий6 синтетических рефералов · 5 оплачены · 1 лимит исчерпан
  1. 6 синтетических рефералов
  2. 5 оплачены · 1 лимит исчерпан
  • 750 Tickets приглашённым
  • 1 250 Tickets пригласившим
  • 10 точных строк ledger по наградам
  • 0 операций с односторонней парой
  • 0 побочных эффектов Gift

Синтетический сценарий приёмки — это не пользовательская или конверсионная аналитика.

Корректирующий цикл приёмкиPhase 8 → 137 → 138 → 20/20
  1. Основа Phase 8
  2. Миграция 137
  3. Forward-only корректирующая приёмка 138
  4. Валидация
  5. 20/20 проверок на PostgreSQL 16 пройдено

Закоммиченная реализация не считалась принятым scope; referral-основа прошла forward-only корректирующий цикл приёмки до продолжения работ.

Затронутые поверхности Delivery

  • Player UI
  • Backend-правила
  • Состояние PostgreSQL
  • Ledger
  • Миграции
  • Временная логика
  • Reconciliation
  • Автоматическая приёмка

0→1 PRODUCT DEFINITION

HeyLocal

Сначала продуктовая модель, потом алгоритм подбора

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

До реализации matcher я сравнил разные продуктовые модели, отказался от удобных, но неверных shortcut-решений, ограничил MVP и зафиксировал domain rules, которым должна следовать техническая реализация.

Persisted product foundation реализованаСпецификация в процессеПрототип

Решение по продуктовой модели

  • Traveler → Tour ListingОтклонено
  • Traveler → GuideОтклонено
  • Traveler ↔ Experience Proposal ↔ GuideВыбрано

Static Tour Listing не является core domain entity.

MATCHING MODEL

Модель матчинга

Traveler

  • дата / время
  • язык
  • группа
  • интересы
  • желаемый результат
  • предпочтение по ходьбе
  • бюджет

Guide

  • доступность
  • языки
  • возможности
  • экспертиза
  • стиль
  • guest fit
  • working terms
  • места
Жёсткие ограниченияотсеивают нереализуемые пары
Мягкое соответствиеранжирует оставшихся кандидатов
Diversity rerankисключает почти одинаковые результаты

3 разных Experience Proposals

Жёсткие ограниченияОтсеивающие критерии
  • гид подтверждён / доступен для матчинга
  • язык
  • дата
  • временной интервал
  • доступность
  • длительность
  • размер группы
  • транспорт / возможности
  • заказ в тот же день
  • минимальный срок уведомления
  • бюджет
Критерии мягкого соответствияСигналы ранжирования
  • интересы
  • выведенные предпочтения
  • экспертиза
  • аффинити к местам
  • личность / стиль
  • желаемый результат
  • предпочтение по ходьбе
  • guest fit
  • география
Границы MVP и детали реализацииAvailability · pricing · продуктовая коррекция

Traveler Taste × Guide Capability × Places × Logistics × Real-Time Availability

  1. 04

    Ограниченная availability вместо универсального calendar engine.

    7 дней недели · 4 временных интервала по Риму · переопределения по датам · 2ч / 3ч / 4ч

  2. 05

    Pricing сейчас — payments позже.

    Pricing нужен для оценки реализуемости. Полная платёжная инфраструктура пока не нужна.

    Сейчас

    • минимальная выплата гиду
    • каноническая цена для путешественника
    • 10% комиссия платформы
    • целые центы / BigInt

    Позже

    • НДС / налоги
    • моделирование комиссий Stripe
    • возвраты
    • жизненный цикл платежей и выплат
  1. Прототип существовал
  2. Fixture-логика рекомендаций выглядела пригодной
  3. Соблазнительный shortcut: постепенно перевести её в production
  4. Продуктовое решение: не позволять прототипной логике рекомендаций стать domain contract
  5. Определить реальный matcher на основе реальных данных Guide и Traveler, операционных ограничений и канонического pricing

Deterministic Matching v1 — жёсткие ограничения отсеивают, мягкое соответствие ранжирует, diversity rerank исключает почти одинаковые результаты.

Продуктовые решения

  1. 01

    Experience Proposal вместо статичного listing / direct Guide model.

  2. 02

    Deterministic Matching v1.

    Без LLM matcher.

  3. 03

    Без winner и без «98% match».

    Возвращаем три содержательно разных рекомендации.

Текущий статус: persisted foundation реализована; Deterministic Matching v1 находится на стадии product/domain specification. Recommendation UI в последнем подтверждённом состоянии остаётся fixture-based прототипом.

Стек

  • TanStack Start
  • React 19
  • TypeScript
  • TanStack Query
  • Cloudflare Workers
  • Supabase
  • PostgreSQL
  • Supabase Auth
  • Resend
  • Bun 1.3.14

Matching v1 — детерминированный, без LLM в runtime.

MVP — traveler flow (видео). Запись MVP-прохождения на стороне путешественника: без оплаты и личного кабинета.
MVP — guide side (видео). Личный кабинет гида в MVP: пустое состояние без событий. Регистрационный flow в записи не показан.

PRODUCT CONCEPT · UX · PROTOTYPING

Yerten

Групповой заказ без группового координатора

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

Полноценный интерактивный прототипОбратная связь от целевых пользователей

Групповой заказ работал. Ручная координация — нет.

Было

1 координатор

  • собирает выбор
  • собирает переводы
  • напоминает коллегам
  • обрабатывает изменения

Yerten

Сотрудник

  • выбирает
  • оплачивает сам

Company workspace

  • агрегирует заказ
  • отслеживает минимальную сумму

Yerten

  • планирует приготовление
  • объединяет доставку по офисам
Workspace компании / команда
Workspace компании / команда. Company workspace — сотрудники заказывают индивидуально, а общий заказ и прогресс компании остаются видимыми всей команде.

Продуктовые правила

  • 4-символьный код компании
  • Индивидуальная оплата каждым сотрудником
  • Минимальная сумма заказа компании: 10 000 ₸
  • Отмена возможна до закрытия окна заказов

01ПОДКЛЮЧИТЬСЯ

Подключение к компании по коду
Подключение к компании по коду. Короткий код связывает сотрудника с workspace компании.

02ВЫБРАТЬ

Карточка блюда
Карточка блюда. Фото, состав, БЖУ и цена вместо неструктурированного меню в мессенджере.

03ОПЛАТИТЬ

Корзина / оформление
Корзина / оформление. Каждый сотрудник формирует и оплачивает свой заказ самостоятельно.

Обратная связь от целевых пользователей

Прототип показывался бывшим коллегам из целевой аудитории.

Изменения

  • Добавлена новая категория еды
  • Улучшены controls количества
  • Добавлены состав, калорийность и БЖУ

Качественная обратная связь по прототипу, не формальное исследование.

Дополнительные продуктовые деталиРасширенные правила · операционная модель · механика привлечения · статус · scope

Расширенные правила

  • Существующий заказ нельзя редактировать; можно оформить дополнительный заказ
  • Количество бесплатных приборов ограничено правилами заказа
  • Если минимальная сумма компании не набрана, заказ отменяется, средства должны быть возвращены
  • Часы приёма заказов оставались приблизительными операционными границами

Операционная модель

  • Предзаказ на следующий день — осознанный операционный выбор
  • Знание спроса заранее должно было поддержать batch-приготовление и кластерную доставку по офисам
  • Измеренная экономия и снижение отходов не заявляются

Планируемая механика привлечения

  • Планируемый бонус 3 000 ₸ за создание новой компании
  • Виральный рост не заявляется как доказанный

Статус реализации

  • Полноценный интерактивный прототип
  • Попытка разработки с внешней командой не достигла приемлемого уровня реализации

Scope / инструменты

Figma · IA · User flows · Wireframes · UI · Component system · Interactive prototype

COMMERCIAL DELIVERY

Коммерческие digital-проекты

Разные бизнесы. Одинаковый принцип ownership.

Два реализованных коммерческих веб-проекта: один — потребительский, второй — промышленный. Оба прошли один и тот же end-to-end путь: от понимания бизнеса до запуска.

Публичные коммерческие сайты

QARAQURT

B2C / E-commerce

Коммерческий B2C / e-commerce проект. Я напрямую работал с бизнесом, выявлял потребности, проектировал структуру и самостоятельно реализовал сайт. Tilda была сознательно выбрана ради быстрого time-to-market и возможности бизнеса самостоятельно управлять сайтом после запуска.

QARAQURT — публичный сайт (запись экрана). Запись экрана работающего сайта: структура каталога, подача товара и точки входа в покупку.

CBS PromTech

B2B / Industrial

Коммерческий B2B industrial-проект. Главной задачей было превратить широкое и технически сложное предложение компании в понятную information architecture и customer-facing digital structure. Я работал с бизнесом, структурировал предложение и самостоятельно реализовал сайт на Tilda.

CBS PromTech — публичный сайт — Каталог оборудования с фильтрами по бренду и типу — information architecture для широкой промышленной номенклатуры.
01 / 03
CBS PromTech — публичный сайт. Каталог оборудования с фильтрами по бренду и типу — information architecture для широкой промышленной номенклатуры.