Course.Tours — образовательный маркетплейс с концепцией «обучение + путешествие», офисом в Дубай и амбицией работать на трех рынках сразу: Россия, СНГ и ОАЭ. К моменту обращения в MWI у клиента уже были подписанные контракты с языковыми школами Дубая, контентная база на 30 000+ курсов и планы маркетингового запуска на осень 2025 года.
Не только платформы для реализации проекта
Первый подрядчик, индийская студия web-разработки, работала над платформой около года. После чего клиент получил сайт, который выглядел как маркетплейс, но не функционировал как маркетплейс. Пользователь мог зарегистрироваться, открыть карточку курса, выбрать тайм-слот и даже создать бронирование, но физически не мог оплатить заказ. Кнопка оплаты картой вела на разбитую интеграцию, а вторая, крипто-эквайринг, — на еще более тревожный сценарий, к которому вернемся позже. Всего мы насчитали 20+ значимых UX-сценариев, которые работали некорректно.
Клиент остановил запуск и обратился к digital-агентству MWI за независимым техническим аудитом. Через девять часов аудита разработчик составил чек-лист из 36 критических пунктов и сформулировал «диагноз»:
«Файловая структура в хаотическом состоянии. Фронтенд в крайне плохом виде: инлайн-стили, беспорядочно закомментированные блоки, ошибки JavaScript. Бэкенд приемлемого качества, явных проблем в коде не вижу. Интеграции присутствуют — авторизация через Google, фрагменты платежных модулей, экшны, — но оплатить курс невозможно. Создаю бронирование — оно появляется в кабинете, но как оплатить — не понятно».
Это точное описание разницы между фасадом и реальностью: внешне функционирующий MVP, внутри — недостроенный каркас с критическими ошибками.
Контраст между амбицией и инфраструктурой получился показательным.
С одной стороны — образовательный маркетплейс с заявкой на глобальный рынок, мультиязычностью, мультивалютностью и контрактами со школами уровня ES Dubai, Headway Institute, Eton Institute, English Way.
С другой — продукт, в котором:
По отдельности каждый пункт — обычный баг разработки. Вместе они сделали платформу убыточным предприятием, даже не запустив маркетинговые активности.
Логика этих пробелов читается из кода. Команда выполнила задачи буквально — «сделать страницу оплаты с двумя методами», — но не достроила бизнес-логику за этими страницами. Криптоэквайринг подключен только на уровне интерфейса: окно с QR-кодом, таймер, кнопка «Продолжить». Шага «проверить, что транзакция действительно прошла» в коде нет — статус «Платеж принят» устанавливается по нажатию кнопки. Так получается, когда подрядчик собирает фронтенд без проработки финансовой логики.
|
EdTech-маркетплейс Course.Tours обратился к нам за пересборкой продуктовой логики платформы с пересмотром флоу, дизайна, безопасности и архитектуры данных. С этой точки и началась 10-месячная работа команды MWI как продуктового партнера. |
С 28 мая 2025 года команда MWI вела параллельно три потока: системную аналитику и ТЗ (100 часов), бизнес-анализ с разбором восьми конкурентов (~75 часов) и полную переработку фронтенда. К июню добавилась основная интеграция верстки с бэкендом, которая заняла 624 часа работы fullstack-разработчика — около четырех месяцев фултайма на один проект.
Всего на проекте отработали 11 специалистов, суммарные трудозатраты составили 1535+ часов. Показательная деталь: блок QA занял ~541 час — больше, чем верстка и аналитика вместе взятые. Это сознательный приоритет качества над скоростью: повторный запуск продукта, который уже однажды сорвал релиз, должен проходить так, чтобы критические сценарии не приводили к новым сбоям.
У клиента был свой дизайнер, но при передаче макетов на верстку выяснилось, что у половины экранов отсутствуют состояния загрузки, ошибок, пустых данных и другие сценарии работы интерфейса. MWI привлекла своего дизайнера, собрала полноценную дизайн-систему в Figma и разработала макеты 16 страниц в 8 адаптивных брейкпоинтах* от 375 px до 1920 px. Каталог работает на AJAX без перезагрузки страницы — фильтры по режиму обучения, стране, городу, уровню, формату, языку, школе, цене и длительности применяются мгновенно. Реализовано на стеке Yii2 + Bootstrap, с делегированием событий для корректной работы JS на динамически подгруженном контенте.
Самое сложное в Course.Tours — не дизайн и не код, а продуктовая логика. Это не «онлайн-курсы как у Coursera». Это три типа курсов × две модели продажи × два формата × дополнительные туристические услуги, и каждое сочетание имеет собственный жизненный цикл:
Жизненный цикл онлайн-урока — пример того, как «простое» бронирование превращается в продукт.
Девять этапов:
На каждом этапе — статусы, нестандартные ситуации и сценарии отказа: что показать студенту, который зашел за 40 минут до начала; что делать, если запись еще обрабатывается; как поступить, если студент не явился, — ответ зависит от типа продажи.
Для офлайн-бронирования логика еще плотнее: двойная проверка вместимости (при выборе слота и повторно при подтверждении перед оплатой — защита от race condition*, когда два студента одновременно бронируют последнее место), таймаут оплаты с авто-отменой брони, хранение времени в UTC с отображением в локальной зоне, промокоды с защитой от отрицательной суммы, валидация совместимости услуг (если проживание недоступно на весь период обучения — нельзя добавить в корзину).
По сложности офлайн-бронирование на Course.Tours ближе к Booking.com или Travelata, чем к стандартной образовательной платформе. И эта сложность возникла не «потому что усложнили», а как продолжение бизнес-модели «обучение + путешествие».
Помимо двух классических ролей (студент, школа) MWI спроектировала с нуля третью — учитель-самозанятый. По объему функциональности это полноценный SaaS-продукт для фрилансера-преподавателя, сопоставимый с самостоятельными решениями вроде Skyeng Teacher Hub.
Структура из 12 модулей:
Каждый модуль описан по принципу «как есть → как надо»: пользовательские сценарии и четкие условия приемки в формате «Дано — Когда — Тогда» (Given-When-Then). Этого достаточно, чтобы разработчик писал код без лишних вопросов, а тестировщик проверял без уточнений.
Пример: кнопка «Войти» активна за 15 минут до начала занятия и 10 минут после (периоды настраиваются). А конфликт — это пересечение двух занятий преподавателя на 10 минут или больше.
Отдельная задача — мессенджер с матрицей прав на четыре роли:
Важная деталь для платформы с детской аудиторией: 1:1 чат с учителем-самозанятым открывается только после подтвержденной оплаты — это закрывает риск спама и нежелательных контактов до факта сделки.
Наиболее чувствительным вопросом, который мы решили, была финансовая проблема в крипто-эквайринге. До нашего вмешательства логика выглядела так: пользователь видел окно с адресом кошелька, QR-кодом и таймером; нажимал «Продолжить»; статус заказа менялся на «Платеж принят» без какой-либо проверки, что транзакция действительно произошла. Никаких ограничений по сумме, по курсу конвертации, по rate-limiting* на повторные попытки.
Это была уязвимость, которая фактически позволяла получать доступ к продуктам без подтвержденной оплаты. Для платформы с курсами стоимостью до $2 495 и языковыми программами за $1 685 такой сценарий означал бы прямые финансовые потери сразу после запуска.
Что было сделано:
Параллельно мы интегрировали рассрочку Tabby BNPL* (0%). Это не safety-фича, но важная для региональной специфики ОАЭ, где BNPL — популярный платежный инструмент.
Работа с базой данных и технической документацией шла параллельно: описание схемы БД, REST API с алгоритмами и корректной обработкой повторных запросов. Документация выполнена на уровне, при котором проект можно передать любой другой команде разработки без потери контекста.
Стандартная модель работы веб-агентства — «принять ТЗ → закодить → сдать». Но в случае Course.Tours этого было недостаточно: продуктовая концепция платформы еще формировалась, а многие решения требовали проработки на уровне бизнес-логики и пользовательского опыта.
Мы подключились к проекту как продуктовый партнер. Клиенту нужен был полноценный продукт, готовый к запуску и масштабированию. Поэтому часть решений мы инициировали уже сами — как продуктовый и технический партнер проекта.
Мы изучили платформы конкурентов Coursera, Udemy, Preply, Lingoda, EF Education First, GoAbroad, LanguageBookings и CourseFinders. На основе анализа подготовили более 30 рекомендаций с приоритизацией по impact/effort.
В quick wins вошли:
Среднесрочные инициативы — онбординг-квиз с персональной подборкой курсов, реферальная программа, пробные уроки и демо-ролики школ.
Долгосрочные — AI-рекомендации, геймификация, калькулятор полной стоимости обучения, чат-бот и WhatsApp-интеграция для стран UAE/MENA.
Часть быстрых улучшений попала в первый релиз, остальное оформлено в roadmap и готово к следующим итерациям.
Клиент планировал запустить реферальную программу, но не мог сформулировать какую именно. Мы собрали и описали семь моделей, работающих в EdTech:
| Модель | Вознаграждение пригласившему | Бонус рефералу | Механика | Особенности / кейсы |
|---|---|---|---|---|
| Классическая денежная | 10–20% от платежа реферала | Скидка на первый курс | Процент от покупки | Простая и прозрачная модель |
| Бесплатный доступ | Бесплатный курс или подписка (за N) | — | N приглашенных = награда | Используют Coursera, Skillbox |
| Геймификация | Баллы → курсы, мерч, сертификаты | Возможны бонусы/баллы | Накопление баллов, уровни | Статусы: Новичок → Эксперт → Амбассадор |
| Партнерская (эксперты) | До 30% от продаж | — | Продвижение курсов через партнеров | Рейтинг топ-партнеров, влияет на репутацию |
| Дружеский кэшбек | Деньги/бонусы на баланс | Скидка | Двустороннее вознаграждение | Повышает конверсию за счет выгоды для обоих |
| Виральные материалы | Доступ к контенту (гайды, уроки) | Контент/бонусы | Рефералы открывают доп. материалы | Эффективно при ограниченном бюджете |
| Корпоративная (B2B) | Оптовые скидки для компании | Доступ сотрудникам | Привлечение групп пользователей | Пример: 5 сотрудников = −20% |
Итоговая рекомендация — комбинированный подход: денежная или кэшбек как основа B2C, геймификация для удержания, корпоративная для B2B-направления. Не «одна программа на все случаи», а слоеный пирог, где каждая модель закрывает свой сегмент аудитории.
Клиент сформулировал задачу так: российские студенты должны слушать англоязычных преподавателей на русском в реальном времени. Потенциально пригодных решений оказалось больше 5, поэтому работу начали с исследования доступных технологий и сценариев использования.
Мы сравнили два класса инструментов:
В результате предложили гибридную схему: API — для перевода видео, документов и контента платформы, специализированные сервисы — для live-уроков. Клиент получил документ со сравнительной таблицей, оценкой ограничений и набором вопросов для принятия решения — от языковых пар до бюджета и кастомизации глоссариев.
Среди приоритетов клиента — бесплатные онлайн-курсы для детей из малообеспеченных семей (программирование, математика, языки). Команда MWI спроектировала отдельный флоу с требованием: ребенок должен забронировать курс самостоятельно, без помощи взрослого. Это специфический UX-вызов — упростить процесс настолько, чтобы он работал для пользователя с минимальным опытом цифровых сервисов, без потери базовой защиты от злоупотреблений.
Флоу включен в архитектуру платформы и готов к запуску одновременно с коммерческой частью.
За 10 месяцев работы клиент получил продукт, который можно полноценно использовать по назначению, монетизировать, показывать инвесторам и масштабировать на новые рынки. Что сделали:
Если статья оказалась полезной и захотелось обсудить свой проект — пишите. Мы, в MWI, делаем сложные продукты: EdTech, маркетплейсы, B2B-кабинеты, интернет-магазины «на максималках» — и всегда рады обсудить актуальные задачи. Поделимся опытом, ответим на вопросы по архитектуре или срокам, расскажем, как решали похожие задачи у себя.
* Race condition — ситуация, когда несколько процессов или пользователей одновременно пытаются выполнить одно и то же действие, из-за чего система может сработать некорректно. Например, два человека одновременно бронируют последнее место, и система подтверждает бронь обоим.
* Rate-limiting — ограничение количества запросов или попыток за определенное время. Нужен, чтобы защитить систему от перегрузки, перебора данных или автоматических атак.
* Tabby BNPL — сервис оплаты по модели Buy Now, Pay Later («покупай сейчас — плати потом»). Позволяет пользователю оформить покупку сразу, а оплату разделить на части или перенести на более поздний срок.
* Брейкпоинт (breakpoint) — это контрольная ширина экрана, при которой интерфейс сайта меняет свой вид под устройство пользователя.