P2P-маркетплейсы услуг — Profi.ru, YouDo, TaskRabbit — выросли в миллиардные бизнесы на простой механике: исполнители показывают навыки, заказчики ставят задачи, платформа берёт комиссию и гарантирует сделку. Telegram — естественная среда для такого продукта: миллиарды юзеров, нативные платежи в Stars, лёгкая авторизация.
Разберём, как собрать P2P-сервис в Telegram, как реализовать эскроу, рейтинги и разрешение споров, и какие юридические риски ждут владельца платформы.
Базовая модель
Игроки:
- Заказчик — публикует задачу.
- Исполнитель — откликается и выполняет.
- Платформа — соединяет, принимает оплату, разруливает споры.
Деньги:
- Заказчик платит платформе при создании заказа (эскроу).
- Платформа удерживает 10–25% комиссии и переводит остаток исполнителю после подтверждения работы.
Архитектура
[Mini App: каталог + чат + сделки]
↓
[Backend: Postgres + Redis + S3]
↘ Платежи: ЮKassa (карта) или TON (крипта)
↘ Антифрод: ML на текстах + правила
↘ Spotter: модерация контента
↘ Bot API: пуши, поддержка
Ядро — таблицы users, offers, orders, messages, payments, disputes.
Профиль исполнителя
Минимум для доверия:
- Имя, фото, верификация телефона.
- Описание услуг, портфолио (5–10 работ).
- Цена (фикс или от/до).
- Гео (Mini App с PostGIS).
- Рейтинг, число отзывов.
- Telegram Passport — опциональная KYC.
Чем подробнее заполнен профиль, тем выше CR в заказ.
CREATE TABLE specialists (
user_id BIGINT PRIMARY KEY,
name TEXT, avatar_url TEXT,
bio TEXT,
services TEXT[], -- ['ремонт', 'плитка']
price_from INT, price_to INT,
location GEOGRAPHY(POINT),
rating NUMERIC(3,2) DEFAULT 0,
reviews_count INT DEFAULT 0,
is_verified BOOLEAN DEFAULT FALSE,
is_premium BOOLEAN DEFAULT FALSE
);
Размещение задачи
Заказчик в боте описывает задачу: категория → описание → бюджет → срок → гео. Mini App-форма даёт лучший UX, чем диалог в чате.
class CreateOrder(BaseModel):
category: str
title: str
description: str
budget_min: int
budget_max: int
location: tuple[float, float] | None
deadline: date
@api.post("/orders")
async def create_order(order: CreateOrder, user=Depends(auth)):
o = await db.create_order(user.id, **order.dict())
await match_specialists(o.id)
return o
Матчинг и отклики
После публикации бот рассылает уведомления подходящим исполнителям (по категории + гео + цене). Исполнители оставляют отклики с предложением и ценой.
SELECT s.user_id, s.rating, s.reviews_count
FROM specialists s
WHERE s.services && ARRAY[$category]
AND ST_DWithin(s.location, $loc, $radius)
AND s.is_verified
AND $budget BETWEEN s.price_from AND s.price_to
ORDER BY s.rating DESC, s.reviews_count DESC
LIMIT 30;
Заказчик видит первых 5–10 откликов в Mini App, выбирает одного.
Эскроу
Логика: заказчик платит при выборе исполнителя, деньги «зависают» на платформе, исполнитель видит пометку «оплачено» и приступает. После подтверждения работы (или истечения срока без споров) — выплата исполнителю.
async def confirm_order(order_id: int, customer_id: int):
o = await orders.get(order_id)
if o.customer_id != customer_id:
raise HTTPException(403)
if o.status != "in_progress":
raise HTTPException(400, "wrong status")
fee = int(o.amount * COMMISSION_RATE)
payout = o.amount - fee
await payouts.queue(specialist_id=o.specialist_id, amount=payout)
await orders.set_status(order_id, "completed")
await reviews.request(order_id)
Выплаты в РФ — через ЮKassa выплаты или СБП P2P. За границу — TON или USDT TRC-20 (но это уже зона серого).
Споры
Если стороны не договорились, заказчик нажимает «Открыть спор». Алгоритм:
- Заказ замораживается (никаких выплат).
- Обе стороны прикладывают доказательства (фото, переписка, документы).
- Модератор платформы изучает (SLA 24 часа).
- Решение: возврат заказчику / выплата исполнителю / частичный возврат.
@router.callback_query(F.data.startswith("dispute:open:"))
async def open_dispute(cb: CallbackQuery):
order_id = int(cb.data.split(":")[2])
dispute = await disputes.create(order_id=order_id, opened_by=cb.from_user.id)
await notify_moderators(dispute.id)
await cb.answer("Спор открыт. Соберите доказательства в течение 48 часов.")
Модераторам нужно отдельное mini-app или дашборд для разбора споров.
Рейтинги и отзывы
После завершения сделки — взаимные отзывы заказчик ↔ исполнитель. Двусторонний рейтинг защищает от хамских заказчиков:
async def submit_review(order_id: int, from_id: int, to_id: int, rating: int, text: str):
await reviews.insert(order_id, from_id, to_id, rating, text)
await update_aggregate(to_id)
Рейтинг считается как взвешенное среднее последних 50 отзывов (свежие весомее).
Антифрод
Главные угрозы:
- Развод на «оплати вне платформы» — исполнитель просит деньги в обход эскроу.
- Фейковые заказы для накрутки рейтинга.
- Кардинг — оплата ворованной картой и моментальный отзыв.
Защита:
| Угроза | Решение |
|---|---|
| Обход эскроу | автодетект упоминания карт/счетов в чате, бан |
| Накрутка | тот же IP/устройство у заказчика и исполнителя — блок |
| Кардинг | hold 7 дней до выплаты |
| Multi-acc | KYC через Passport, лимит профилей на телефон |
Юридика
P2P-сервис — самая сложная юридическая модель в Telegram:
- 115-ФЗ: при обороте >600 тыс. ₽ — обязательный финмониторинг.
- Платформа — не сторона сделки, а агент. Но удержание комиссии = доход с НДС.
- Самозанятые исполнители: автоматический чек через API ФНС после выплаты.
- Ст. 9 152-ФЗ: согласие обеих сторон на передачу контактов.
- Защита прав потребителей: спор может уйти в Роспотребнадзор.
Лучше с самого начала закладывать в комиссию юриста-эскалатора.
Топ-5 ошибок
- Не делают эскроу → процветает обход в личке, платформа теряет комиссию.
- Запускают без модераторов → споры не разрешаются, NPS падает.
- Не верифицируют исполнителей → много кидков → отрицательный reputation.
- Не считают экономику с учётом возвратов и споров (10–15% сделок) → планируют маржу 25%, получают 10%.
- Игнорируют 115-ФЗ → блокировка счёта банком при первой проверке.
Итого
P2P-маркетплейс в Telegram — амбициозный проект на 8–12 месяцев и 5–15 млн рублей до окупаемости. Технически собирается из стандартных кубиков (Mini App + бот + эскроу + споры), но 80% сложности — операционные (модерация, антифрод, юрлица). Ниша работает в категориях с высоким чеком (ремонт, услуги фрилансеров от 10к ₽) и плохо масштабируется на дешёвые задачи (комиссия не покрывает расходов на поддержку).
Частые вопросы
Какая комиссия оптимальна?
В Profi.ru — 25–35%, в YouDo — 10%, в нишевых b2b — 15–20%. Слишком высокая комиссия мотивирует уходить мимо платформы, слишком низкая не покрывает поддержку и модерацию. Оптимум — 15–20% с возможностью уменьшения для топ-исполнителей (динамическая комиссия).
Как удержать сделки от ухода мимо платформы?
Эскроу + ценность платформы (рейтинг, гарантии, споры). В чате блокируйте упоминания карт, телефонов, мессенджеров — детектор регулярками + ML. Делайте удобные инструменты внутри (счета, документы, уведомления), чтобы вне платформы было хуже. Полностью предотвратить нельзя — закладывайте 15–20% утечек в финмодель.
Нужна ли лицензия на P2P-платежи?
В РФ агрегатор платежей нуждается в банковской лицензии или партнёрстве с лицензированным провайдером (ЮKassa, ЮМани, CloudPayments). Прямые P2P-переводы между юзерами без банка — серая зона. Большинство платформ работает через юрлицо: «вы переводите нам, мы переводим исполнителю».
Как защититься от негативных отзывов конкурентов?
Привязка отзыва к завершённой сделке (нет сделки = нет отзыва). Модерация подозрительных отзывов: если у исполнителя 30 положительных и вдруг 5 негативных за день, это аномалия. Жалобы исполнителя на отзыв — отдельный workflow с проверкой переписки в платформе.
Можно ли запустить нишевый P2P (только репетиторы или только клининг)?
Да, и часто это выгоднее, чем универсальный. В нише проще таргетировать, дешевле CAC, выше LTV (повторные заказы). Минус — потолок рынка ниже. Хороший тест: ниша должна давать минимум 100 тысяч заказов в год в выбранном гео — иначе не окупится.
Какие сервера нужны на старте?
Один VPS на 4 vCPU / 8 GB / 100 GB SSD ($40/мес) выдерживает до 5000 DAU. Postgres + Redis + Bot API + Mini App backend в Docker. Дальше — отдельные машины под Postgres (managed: Yandex Cloud, Selectel) и автоскейлинг для API. До 50k DAU — $300–500/мес.
Сколько модераторов нужно?
На 10 000 активных сделок в месяц нужен 1 модератор full-time + 1 саппорт. На спорах не экономьте — это критичный пользовательский опыт. SLA на спор должен быть < 48 часов, иначе репутация платформы рушится.