Кейс EdTech-маркетплейса Course.Tours × MWI: реанимация проекта за 10 месяцев

Course.Tours — образовательный маркетплейс с концепцией «обучение + путешествие», офисом в Дубай и амбицией работать на трех рынках сразу: Россия, СНГ и ОАЭ. К моменту обращения в MWI у клиента уже были подписанные контракты с языковыми школами Дубая, контентная база на 30 000+ курсов и планы маркетингового запуска на осень 2025 года.

Не только платформы для реализации проекта

Первый подрядчик, индийская студия web-разработки, работала над платформой около года. После чего клиент получил сайт, который выглядел как маркетплейс, но не функционировал как маркетплейс. Пользователь мог зарегистрироваться, открыть карточку курса, выбрать тайм-слот и даже создать бронирование, но физически не мог оплатить заказ. Кнопка оплаты картой вела на разбитую интеграцию, а вторая, крипто-эквайринг, — на еще более тревожный сценарий, к которому вернемся позже. Всего мы насчитали 20+ значимых UX-сценариев, которые работали некорректно.

Клиент остановил запуск и обратился к digital-агентству MWI за независимым техническим аудитом. Через девять часов аудита разработчик составил чек-лист из 36 критических пунктов и сформулировал «диагноз»:

«Файловая структура в хаотическом состоянии. Фронтенд в крайне плохом виде: инлайн-стили, беспорядочно закомментированные блоки, ошибки JavaScript. Бэкенд приемлемого качества, явных проблем в коде не вижу. Интеграции присутствуют — авторизация через Google, фрагменты платежных модулей, экшны, — но оплатить курс невозможно. Создаю бронирование — оно появляется в кабинете, но как оплатить — не понятно».

Это точное описание разницы между фасадом и реальностью: внешне функционирующий MVP, внутри — недостроенный каркас с критическими ошибками.

Парадокс масштаба

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

С одной стороны — образовательный маркетплейс с заявкой на глобальный рынок, мультиязычностью, мультивалютностью и контрактами со школами уровня ES Dubai, Headway Institute, Eton Institute, English Way.

С другой — продукт, в котором:

  • крипто-платеж засчитывался по нажатию кнопки «Продолжить» без проверки фактического поступления средств — любой пользователь мог получить курс бесплатно;
  • ссылка на онлайн-урок оставалась активной после окончания занятия — студент мог заниматься бесконечно, без новой оплаты;
  • двойной клик на «Забронировать» создавал два одинаковых заказа: rate-limiting* отсутствовал;
  • NowPayments отклонял крипто-платежи на сумму менее $2, но пользователь видел немотивированную ошибку без объяснения причины;
  • AWS S3 был подключен, но запись уроков фактически не велась;
  • email-уведомления, статусы оплаты и протоколы для службы поддержки не были описаны;
  • сайт не открывался из России в Chrome из-за неверно настроенной Cloudflare-фильтрации, хотя в Safari и через VPN работал.

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

Почему так получилось

Логика этих пробелов читается из кода. Команда выполнила задачи буквально — «сделать страницу оплаты с двумя методами», — но не достроила бизнес-логику за этими страницами. Криптоэквайринг подключен только на уровне интерфейса: окно с QR-кодом, таймер, кнопка «Продолжить». Шага «проверить, что транзакция действительно прошла» в коде нет — статус «Платеж принят» устанавливается по нажатию кнопки. Так получается, когда подрядчик собирает фронтенд без проработки финансовой логики.

EdTech-маркетплейс Course.Tours обратился к нам за пересборкой продуктовой логики платформы с пересмотром флоу, дизайна, безопасности и архитектуры данных. С этой точки и началась 10-месячная работа команды MWI как продуктового партнера.

01

1 535 часов работы: что мы переделали в маркетплейсе Course.Tours

С 28 мая 2025 года команда MWI вела параллельно три потока: системную аналитику и ТЗ (100 часов), бизнес-анализ с разбором восьми конкурентов (~75 часов) и полную переработку фронтенда. К июню добавилась основная интеграция верстки с бэкендом, которая заняла 624 часа работы fullstack-разработчика — около четырех месяцев фултайма на один проект.

Всего на проекте отработали 11 специалистов, суммарные трудозатраты составили 1535+ часов. Показательная деталь: блок QA занял ~541 час — больше, чем верстка и аналитика вместе взятые. Это сознательный приоритет качества над скоростью: повторный запуск продукта, который уже однажды сорвал релиз, должен проходить так, чтобы критические сценарии не приводили к новым сбоям.

Дизайн и бэкенд

У клиента был свой дизайнер, но при передаче макетов на верстку выяснилось, что у половины экранов отсутствуют состояния загрузки, ошибок, пустых данных и другие сценарии работы интерфейса. MWI привлекла своего дизайнера, собрала полноценную дизайн-систему в Figma и разработала макеты 16 страниц в 8 адаптивных брейкпоинтах* от 375 px до 1920 px. Каталог работает на AJAX без перезагрузки страницы — фильтры по режиму обучения, стране, городу, уровню, формату, языку, школе, цене и длительности применяются мгновенно. Реализовано на стеке Yii2 + Bootstrap, с делегированием событий для корректной работы JS на динамически подгруженном контенте.


Продуктовая логика: три типа курсов, восемь этапов урока и SaaS для учителей

Самое сложное в Course.Tours — не дизайн и не код, а продуктовая логика. Это не «онлайн-курсы как у Coursera». Это три типа курсов × две модели продажи × два формата × дополнительные туристические услуги, и каждое сочетание имеет собственный жизненный цикл:

  • Онлайн-курсы. Две модели оплаты: «за занятие» (студент выбирает конкретный тайм-слот) и «за курс» (фиксированная длительность в днях или неделях). Индивидуальные (после покупки слот закрывается) и групповые (с лимитом участников). Логика выходных: сб/вс по умолчанию + праздники, с авто-сдвигом на первый рабочий день после окончания курса.
  • Офлайн-курсы. Четыре формата: неделя, месяц, курс, академическая программа. К курсу можно прикрутить проживание с автоподбором дат, трансфер, визовую поддержку, развлечения от школы.
  • Языковые лагеря. Отдельный тип карточки с 12 контентными блоками: пакеты, недельные расписания, проживание, транспорт, отзывы, FAQ, карта кампуса, галерея, похожие курсы, сайдбар бронирования с динамическим расчетом стоимости.

Жизненный цикл онлайн-урока — пример того, как «простое» бронирование превращается в продукт.

Девять этапов:

  1. просмотр карточки
  2. выбор слота
  3. создание брони
  4. оплата
  5. подтверждение с уведомлениями
  6. push-напоминание за 30 минут
  7. урок с автозавершением
  8. доступ к видеозаписи 14 дней
  9. деактивация

На каждом этапе — статусы, нестандартные ситуации и сценарии отказа: что показать студенту, который зашел за 40 минут до начала; что делать, если запись еще обрабатывается; как поступить, если студент не явился, — ответ зависит от типа продажи.

Для офлайн-бронирования логика еще плотнее: двойная проверка вместимости (при выборе слота и повторно при подтверждении перед оплатой — защита от race condition*, когда два студента одновременно бронируют последнее место), таймаут оплаты с авто-отменой брони, хранение времени в UTC с отображением в локальной зоне, промокоды с защитой от отрицательной суммы, валидация совместимости услуг (если проживание недоступно на весь период обучения — нельзя добавить в корзину).

По сложности офлайн-бронирование на Course.Tours ближе к Booking.com или Travelata, чем к стандартной образовательной платформе. И эта сложность возникла не «потому что усложнили», а как продолжение бизнес-модели «обучение + путешествие».

ЛК учителя-самозанятого как самостоятельный SaaS

Помимо двух классических ролей (студент, школа) MWI спроектировала с нуля третью — учитель-самозанятый. По объему функциональности это полноценный SaaS-продукт для фрилансера-преподавателя, сопоставимый с самостоятельными решениями вроде Skyeng Teacher Hub.

Структура из 12 модулей:

  1. дашборд,
  2. профиль,
  3. курсы (черновик → модерация → опубликован → архив),
  4. группы+ученики,
  5. расписание (буфер, контроль конфликтов ≥10 мин),
  6. заявки+заказы,
  7. чаты,
  8. библиотека (теги, версии),
  9. финансы+выплаты (экспорт),
  10. отчеты,
  11. поддержка,
  12. поиск.

Каждый модуль описан по принципу «как есть → как надо»: пользовательские сценарии и четкие условия приемки в формате «Дано — Когда — Тогда» (Given-When-Then). Этого достаточно, чтобы разработчик писал код без лишних вопросов, а тестировщик проверял без уточнений.

Пример: кнопка «Войти» активна за 15 минут до начала занятия и 10 минут после (периоды настраиваются). А конфликт — это пересечение двух занятий преподавателя на 10 минут или больше.

Отдельная задача — мессенджер с матрицей прав на четыре роли:

  • три категории чатов (1:1, групповые, read-only каналы объявлений);
  • контекстные действия (прикрепить курс, урок или домашнее задание прямо в сообщение);
  • редактирование в течение 15 минут с пометкой «изменено»;
  • статусы доставки и прочтения, упоминания, бан и кик.

Важная деталь для платформы с детской аудиторией: 1:1 чат с учителем-самозанятым открывается только после подтвержденной оплаты — это закрывает риск спама и нежелательных контактов до факта сделки.

Безопасность: закрыли уязвимость, через которую можно было получать курсы бесплатно

Наиболее чувствительным вопросом, который мы решили, была финансовая проблема в крипто-эквайринге. До нашего вмешательства логика выглядела так: пользователь видел окно с адресом кошелька, QR-кодом и таймером; нажимал «Продолжить»; статус заказа менялся на «Платеж принят» без какой-либо проверки, что транзакция действительно произошла. Никаких ограничений по сумме, по курсу конвертации, по rate-limiting* на повторные попытки.

Это была уязвимость, которая фактически позволяла получать доступ к продуктам без подтвержденной оплаты. Для платформы с курсами стоимостью до $2 495 и языковыми программами за $1 685 такой сценарий означал бы прямые финансовые потери сразу после запуска.

Что было сделано:

  • внедрена реальная верификация крипто-платежей — система проверяет фактическое поступление средств на адрес, фиксирует курс конвертации на момент создания заказа, корректно обрабатывает недоплату, переплату и частичную оплату;
  • кнопка переименована из «Продолжить» в осмысленную семантику и закрыта подтверждающим окном «Вы точно отправили средства?»;
  • ссылка на онлайн-урок Zego Cloud токенизируется (привязывается к пользователю) и деактивируется после автозавершения — попытка перейти по старой ссылке возвращает «Урок завершен, ссылка неактивна»;
  • блокировка кнопки после первого клика и индикатор ожидания защищают от дубликата заказа;
  • AWS S3 настроен для записи уроков с одноразовыми ссылками ограниченного действия и логированием всех попыток скачивания;
  • при сумме крипто-платежа < $2 пользователь видит понятное сообщение «оплата возможна только картой» вместо немотивированной ошибки NowPayments;
  • диагностирована и решена проблема доступности сайта из России в Chrome (Cloudflare-фильтрация).

Параллельно мы интегрировали рассрочку Tabby BNPL* (0%). Это не safety-фича, но важная для региональной специфики ОАЭ, где BNPL — популярный платежный инструмент.

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

02

Сверх ТЗ: 8 платформ-конкурентов, 7 реферальных моделей и исследование AI-перевода

Стандартная модель работы веб-агентства — «принять ТЗ → закодить → сдать». Но в случае Course.Tours этого было недостаточно: продуктовая концепция платформы еще формировалась, а многие решения требовали проработки на уровне бизнес-логики и пользовательского опыта.

Мы подключились к проекту как продуктовый партнер. Клиенту нужен был полноценный продукт, готовый к запуску и масштабированию. Поэтому часть решений мы инициировали уже сами — как продуктовый и технический партнер проекта.

Конкурентный анализ: 8 платформ, 30+ рекомендаций

Мы изучили платформы конкурентов Coursera, Udemy, Preply, Lingoda, EF Education First, GoAbroad, LanguageBookings и CourseFinders. На основе анализа подготовили более 30 рекомендаций с приоритизацией по impact/effort.

В quick wins вошли:

  • рейтинги,
  • счетчики активности пользователей,
  • lazy loading изображений
  • и structured data для SEO.

Среднесрочные инициативы — онбординг-квиз с персональной подборкой курсов, реферальная программа, пробные уроки и демо-ролики школ.
Долгосрочные — AI-рекомендации, геймификация, калькулятор полной стоимости обучения, чат-бот и WhatsApp-интеграция для стран UAE/MENA.

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

7 моделей реферальных программ

Клиент планировал запустить реферальную программу, но не мог сформулировать какую именно. Мы собрали и описали семь моделей, работающих в EdTech:

Модель Вознаграждение пригласившему Бонус рефералу Механика Особенности / кейсы
Классическая денежная 10–20% от платежа реферала Скидка на первый курс Процент от покупки Простая и прозрачная модель
Бесплатный доступ Бесплатный курс или подписка (за N) N приглашенных = награда Используют Coursera, Skillbox
Геймификация Баллы → курсы, мерч, сертификаты Возможны бонусы/баллы Накопление баллов, уровни Статусы: Новичок → Эксперт → Амбассадор
Партнерская (эксперты) До 30% от продаж Продвижение курсов через партнеров Рейтинг топ-партнеров, влияет на репутацию
Дружеский кэшбек Деньги/бонусы на баланс Скидка Двустороннее вознаграждение Повышает конверсию за счет выгоды для обоих
Виральные материалы Доступ к контенту (гайды, уроки) Контент/бонусы Рефералы открывают доп. материалы Эффективно при ограниченном бюджете
Корпоративная (B2B) Оптовые скидки для компании Доступ сотрудникам Привлечение групп пользователей Пример: 5 сотрудников = −20%

Итоговая рекомендация — комбинированный подход: денежная или кэшбек как основа B2C, геймификация для удержания, корпоративная для B2B-направления. Не «одна программа на все случаи», а слоеный пирог, где каждая модель закрывает свой сегмент аудитории.

AI-переводчик: исследование вместо «давайте интегрируем»

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

Мы сравнили два класса инструментов:

  • Облачные переводчики API — Google Cloud Translation, DeepL, Microsoft Translator, Amazon Translate, Yandex. 100+ языков, простая интеграция, оплата по объему. Слабая сторона — синхронный перевод.
  • Платформы для онлайн-общения — Interprefy, KUDO, Interactio, плагины для Zoom и Teams. Хорошо работают для синхронного перевода вебинаров, но поддерживают только 10–30 языков и предлагают исключительно подписочную модель, которая не подходила заказчику.

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

Социальная миссия: бесплатные курсы для детей

Среди приоритетов клиента — бесплатные онлайн-курсы для детей из малообеспеченных семей (программирование, математика, языки). Команда MWI спроектировала отдельный флоу с требованием: ребенок должен забронировать курс самостоятельно, без помощи взрослого. Это специфический UX-вызов — упростить процесс настолько, чтобы он работал для пользователя с минимальным опытом цифровых сервисов, без потери базовой защиты от злоупотреблений.

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

03

Что в итоге: EdTech-маркетплейс с выстроенной архитектурой и фундаментом для глобального масштабирования

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

  • Работающий маркетплейс в продакшнеCourse.tours. Реальные курсы школ Дубая и Рас-аль-Хаймы, цены от $48/неделю до $2 495/курс, языковые лагеря $196–$1 685 для возраста 5–17 лет. Подключены ES Dubai, Headway Institute, Eton Institute и другие.
  • 15+ страниц публичной части в 8 адаптивных брейкпоинтах, AJAX-фильтрация без перезагрузки, 6+ интеграций — Stripe, NowPayments, Tabby, Zego Cloud, AWS S3, Google Maps, Booking.com.
  • 12 модулей ЛК учителя-самозанятого — самостоятельный SaaS внутри маркетплейса, с дашбордом, расписанием, финансами, мессенджером.
  • Закрытая финансовая уязвимость в крипто-эквайринге + системные защиты: токенизация ссылок, rate-limiting, ограничение повторных запросов, защита от race condition при бронировании.
  • Документация уровня передачи проекта — REST API с алгоритмами, user stories Given-When-Then, описание БД, спецификации всех модулей. Любая команда разработки может подхватить проект без потери контекста.
  • Roadmap на 2–3 года — микрообучение, AR/VR-классы, AI-рекомендации, чат-боты, геймификация, подписочная модель, B2B-программы. Заложен архитектурно, готов к включению в следующие итерации.
  • B2B-модель школ и университетов — публичная страница с галереей, картой и Booking.com-интеграцией; ЛК школы с финансами и аналитикой; процесс подключения от заявки до публикации. На старте — ручное добавление 15–20 школ ОАЭ, далее — самостоятельная регистрация.

Похожий проект на старте?

Если статья оказалась полезной и захотелось обсудить свой проект — пишите. Мы, в MWI, делаем сложные продукты: EdTech, маркетплейсы, B2B-кабинеты, интернет-магазины «на максималках» — и всегда рады обсудить актуальные задачи. Поделимся опытом, ответим на вопросы по архитектуре или срокам, расскажем, как решали похожие задачи у себя.

Никаких брифов и форм заполнять не нужно — просто напишите.



04

Термины и сноски

* Race condition — ситуация, когда несколько процессов или пользователей одновременно пытаются выполнить одно и то же действие, из-за чего система может сработать некорректно. Например, два человека одновременно бронируют последнее место, и система подтверждает бронь обоим.

* Rate-limiting — ограничение количества запросов или попыток за определенное время. Нужен, чтобы защитить систему от перегрузки, перебора данных или автоматических атак.

* Tabby BNPL — сервис оплаты по модели Buy Now, Pay Later («покупай сейчас — плати потом»). Позволяет пользователю оформить покупку сразу, а оплату разделить на части или перенести на более поздний срок.

* Брейкпоинт (breakpoint) — это контрольная ширина экрана, при которой интерфейс сайта меняет свой вид под устройство пользователя.

Дизайн-макеты

Да, evibi.ru —
классный сайт
Мы подошли к его проектированию и
разработке особенно тщательно.
Давайте расскажу и пришлю вам
расчет на подобный проект?
Расскажи
img