Platform

Services Helperмаркетплейс услуг

Клиенты публикуют задачи, специалисты берут их в работу

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

Services Helper — маркетплейс услуг
Задача

Клиентам нужен надёжный способ найти специалиста, специалистам — стабильный поток заказов. Платформа должна была строить доверие с обеих сторон и зарабатывать без платы за вход.

Результат

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

Ключевые функции

  • Кабинеты клиента и специалиста
  • Заказы с файлами
  • Каталог и поиск специалистов
  • Взаимные отзывы и рейтинги
  • Платное продвижение (Stripe)
  • Загрузка медиа
  • Три языка
  • Ролевой доступ

Как это построено

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

3
Роли пользователей
4
Статусы заказа
3
Тарифы подписки
UA·RU·EN
Языки

Две стороны, смоделированные раздельно

Клиент и специалист — не один пользователь с флагом роли. Общих данных у них почти нет: у специалиста профиль, портфолио, подписка и рейтинг; у клиента — заказы. Мы смоделировали их отдельными сущностями за единым уровнем сессионной авторизации.

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

Цикл маркетплейса

Сделку несут четыре статуса. Клиент публикует OPEN-заказ: категория, город, дедлайн, файлы. Специалисты присылают отклики — предложения на него. Клиент принимает одно, переводя заказ в IN_PROGRESS, далее COMPLETED или CANCELLED.

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

Обе стороны цикла, как их объясняет сам продукт

Как находят нужного специалиста

Поиск работает по осям «что» и «где». Заказы и профили привязаны к категории и городу, поэтому сантехник из Львова не появится в заказе по Одессе.

Отдельного поискового движка нет. На таком объёме каталога индексированные запросы в PostgreSQL по категории, городу и рейтингу быстрее в разработке и дешевле в эксплуатации, чем добавление Meilisearch, — и держат выдачу согласованной с данными. Тариф подписки учитывается в ранжировании: именно это делает платное продвижение стоящим денег, не давая ему перекрыть релевантность.

Поиск построен на двух осях, которые важны: услуга и город

Удержать сделку на платформе

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

Репутация в обе стороны

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

Монетизация без платы за доступ

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

Состояние подписки ведёт Stripe через webhooks — ACTIVE, PAST_DUE, UNPAID, CANCELED — и проверки доступа читают этот живой статус, поэтому неудавшийся платёж сужает охват, а не оставляет платную функцию открытой.

Три тарифа подписки, биллинг через Stripe

Чего требовал продакшен

Уведомления — это события, а не вызовы: каждое действие выпускает событие, а обработчики превращают его в запись в приложении и письмо, поэтому бизнес-логика не умеет отправлять почту. Жалобы проходят настоящую машину состояний с обработкой в админке — без модерации маркетплейс услуг наполняется спорами, которые не может решить. Рейт-лимитинг, HTTP-защита, подтверждение почты и медиа в Cloudinary были с первого деплоя.

Результат

Живой маркетплейс услуг с полным циклом — опубликовать, откликнуться, нанять, выполнить, оценить, оплатить — с монетизацией подписками, модерацией и тремя языками, в продакшене на services-helper.com.

Следующий проект
Mobile

Zapys24 Mobile

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

Смотреть кейс
Zapys24 Mobile — приложения записи для iOS и Android

Хотите что-то похожее?

Расскажите о вашем проекте и мы создадим его с таким же вниманием к деталям.

Начать проект →