1. Почему баунти лучше, чем «кто хочет помочь?»
Призывы к волонтерству получают разовые отклики. Участник помогает один раз, чувствует себя хорошо и возвращается к пассивному наблюдению — потому что не было ни записи, ни награды, ни последующих действий. Баунти превращает тот же запрос в публичный, оплачиваемый, сохраняющий состояние контракт: название, награда, владелец, статус и история, которые может видеть любой на сервере.
Цена — это главное. Баунти в 20 евро за задачу по документации сигнализирует о том, что работа имеет реальную ценность. Участники, которые никогда бы не стали волонтерами, откликаются на оплачиваемую работу, потому что оплачиваемая работа устраняет неопределенность относительно того, будет ли их усилие признано.
2. Жизненный цикл: четыре команды, пять состояний
Sovereign реализует баунти как строгую конечную машину состояний: OPEN → IN_PROGRESS → REVIEW → PAID, с явным путем CLOSED для заброшенных постов. Любой пользователь с привязанной Identity Bridge может создать баунти с помощью /bounty create <Title> | <Amount> (минимум 5 EUR, хранится в центах), просматривать открытые с помощью /bounty list, взять одно с помощью /bounty claim <ID> и отправить выполненную работу с помощью /bounty done <ID>.
Конечная машина состояний выполняет работу по модерации за вас. Баунти не может быть взято дважды, создатель не может взять свой собственный пост, и только назначенный исполнитель может отправить работу. Каждый переход уведомляет нужного человека: создатель получает личное сообщение, когда его баунти взято, и снова, когда работа отправлена, а отправленная работа попадает в Dashboard Exchange для утверждения.
Средства высвобождаются только после явного утверждения в Dashboard. Это сохраняет человеческий фактор там, где это важно — доверие — и автоматизирует все остальное.
// Command routing and the guard clauses that make the state machine safe
switch (action) {
case 'create': return await createBounty(tenantId, member.id, args); // -> OPEN
case 'list': return { reply: await listBounties(tenantId) }; // 5 latest OPEN
case 'claim': return await claimBounty(tenantId, member.id, args); // OPEN -> IN_PROGRESS
case 'done': return await completeBounty(tenantId, member.id, args); // IN_PROGRESS -> REVIEW
}
// Guards enforced inside the transition functions:
// - status must match the expected state or the command is rejected
// - creatorId !== workerId (no self-claims)
// - only the assigned workerId may call /bounty done
// Funds are released after owner approval: Dashboard > Exchange (REVIEW -> PAID)3. Настройка баунти для повышения удержания, а не только производительности
Эффективные баунти — небольшие, конкретные и выполнимые за один вечер. Сообщество, которое публикует три или более новых баунти в неделю, дает участникам постоянный повод проверять сервер: открытая работа — это регулярно обновляемая причина вернуться, что является именно тем поведением, которое инженеры по удержанию пытаются создать.
Стратегия нарастающего эффекта заключается в публикации баунти для задач, которые улучшают функционирование сообщества: скрипты для онбординга, документация, создание клипов, покрытие модерации, логистика мероприятий. Каждое выполненное баунти — это постоянный актив, а не разовая поставка.
Минимальная сумма отфильтровывает шум. Баунти менее 5 EUR не стоит накладных расходов конечной машины состояний или внимания, которое оно отнимает у реальной работы. Ценовой порог, как и этап REVIEW, — это контроль мошенничества и спама, представленный как правило продукта.