CrewSplit: учёт выездов и распределения выплат
Инструмент распределения выплат для бригад демонтажа и утилизации промышленного оборудования. Система ведёт учет выездов, извлечённых материалов и продажи, а затем делит выручку между участниками бригад пропорционально фактическому участию, прозрачно и с точностью до копейки.
- Сфера
- операционный менеджмент / выездные (полевые) бригады
- Роль
- Продуктовый дизайнер, промт-инженер
- Команда
- 1 UX/UI дизайнер
- Формат
- web-приложение, хранение базы через Firebase
- Аудитория
- менеджеры, бухгалтера, и бригадиры
- Год
- 2026
Проблема
Операционная команда управляет бригадами, которые выезжают на промышленные площадки, извлекают материалы и после продажи делят выручку между участниками.
Учёт жил в Google Таблицах: один выезд оформлялся 15-20 минут, расчёт периода занимал около часа ручной сверки, а статусы выплат держались в голове и разрозненных пометках.
На кону были деньги людей и доверие бригад к менеджеру, поэтому ошибка в расчёте стоила дороже, чем в обычном внутреннем инструменте.
Задача
Спроектировать и построить инструмент, который убирает ручной пересчёт и сведение данных из нескольких таблиц; делает расчёт прозрачным и проверяемым для каждого участника; учитывает переменную посещаемость без пересборки формул; и не роняет доверие: считает копейка в копейку и защищает от случайных и намеренных искажений.
Метрики
Количественные результаты я сравнивал с исходным процессом в таблицах:
| Показатель | До | После |
|---|---|---|
| Оформление данных по одному выезду | 15-20 минут вручную | секунды: выбор из существующих людей и площадок |
| Сведение и расчёт за период | ~1 час ручной сверки, риск ошибки в формулах | мгновенно, автоматически |
| Прозрачность статуса выплат | держалась в голове и пометках | видна всем менеджерам в реальном времени |
| Цикл от идеи до стабильной ежедневной эксплуатации | - | 2 недели |
Решение
Я построил web-приложение вокруг реального операционного цикла: учёта работников, оформления выездов, фиксации материалов и продаж, расчёта долей и истории выплат. Данные обновляются в реальном времени у всех менеджеров одновременно.
Сложная математика распределения, включая пропорции участия, коэффициенты вклада и непроданные позиции, спрятана за простыми действиями: отметил выезды, увидел предпросмотр долей, сохранил расчёт и повёл выдачу по статусам.
Исследование и итерации
Классическая последовательность «интервью, wireframes, прототип, тест» здесь не проверяла главное: работу с живыми деньгами. Я разобрал текущие таблицы и сценарии участников, быстро выкатил рабочую версию и дальше исследовал продукт в ежедневной эксплуатации: фиксировал трение и закрывал его точечно. Решения росли из наблюдений, а не из гипотез.
Так появились коэффициент вклада для неравных долей, мультистрочный ввод материалов вместо отдельной формы на каждую позицию, подтверждения перед необратимыми действиями и экспорт резервной копии в один клик.
Главный экран и работники
Счётчики наверху я собрал по принципу списка дел, а не витрины достижений: «не распределено», «не выплачено», «расчётов с долгами». Каждая цифра требует действия и стремится к нулю. Менеджер открывает приложение и сразу видит, есть ли работа.
В списке работников показаны количество выездов, заработок и красная пилюля с суммой, которая ждёт выплаты. Если долга нет, вместо зелёного нуля стоит прочерк: ноль здесь не информация, а шум.
Отдельное решение - имена. Система не навязывает справочник ФИО: уникальность имени плюс свободный формат покрывают реальную практику бригад, где людей знают по фамилии или прозвищу. В данных спокойно живут два Андрея, два Сергея и «Саня (крановщик)», и путаницы нет.
Оформление выезда
Выезд оформляется за секунды вместо прежних 15-20 минут: дата, объект и состав бригады кликами по чипам с именами. Если человека ещё нет в системе, его не нужно заводить отдельно: вписал имя, нажал Enter, и он уже в составе.
Коэффициент вклада - редкий сценарий, поэтому он спрятан за отдельной кнопкой и не загромождает ежедневный поток. Если коэффициент задан, участник помечается в списке жёлтой меткой «×2», и отклонение от нормы видно сразу.
Материалы и продажи
С одного объекта обычно приходит сразу несколько позиций, поэтому форма поддерживает мультистрочный ввод с сохранением одним действием, вместо повторного захода на каждую позицию.
Второе важное решение: цена не обязательна при вводе. Материалы продаются по мере реализации, поэтому позицию можно добавить с суммой 0 и вписать выручку позже, когда продажа реально случится. Непроданное не блокирует учёт.
Журнал сгруппирован по выездам: заголовок группы несёт дату и объект, поэтому из строк я убрал дублирующие колонки. Изначально дата и выезд повторялись в каждой строке трижды. Внизу показана сумма ещё не распределённого; она же живёт в счётчике наверху.
Расчёт распределения
Формула под капотом непростая: выручка каждого выезда делится между его участниками пропорционально весам, итог по человеку складывается из его долей по всем выездам периода. Но в интерфейсе это выглядит как простой чек-лист: отметь выезды и смотри готовый предпросмотр долей. Позиции материалов подтягиваются автоматически.
Колонка «Был: 2 из 4» отвечает на главный вопрос бригадира: «почему у меня столько?». Пользователю не нужно понимать формулу, чтобы доверять результату: достаточно видеть, что участие каждого учтено. Сумма долей всегда сходится с суммой к распределению копейка в копейку. Это проверено тестами, включая сценарии с коэффициентами.
История выплат
Сохранённый расчёт превращается в рабочий список выдачи. В шапке карточки показаны сумма, количество выездов и индикатор «Оплачено 3/9», который остаётся красным, пока есть долг.
Статус выплаты изначально был селектом с тремя состояниями, но эксплуатация показала, что реальных состояний два: оплачено или нет. Я заменил селект на переключатель, и отметить оплату стало можно одним кликом, а строки перестали пестрить.
Дальше возник вопрос доверия: что мешает случайно или намеренно снять отметку об оплате? Интерфейс защищает от ошибки, аудит - от злоупотребления. Снятие «Оплачено» требует подтверждения с объяснением последствий, каждая оплата фиксирует дату, а откат оставляет видимый след: «возвращён статус „не оплачено" 03.07.2026 в 15:32». Действие с чужими деньгами не может быть бесследным.
Качественная обратная связь
Помимо времени и скорости расчёта я смотрел на то, как изменилось ощущение контроля у команды. В обратной связи чаще всего повторялись три темы: меньше тревоги в день расчёта, больше доверия к итоговой сумме и быстрый доступ к истории выездов.
Раньше я откровенно не любил день расчёта, приходилось садиться и час сверять таблицы. Сейчас просто захожу и вижу готовую цифру.
Всё считается сразу и совпадает копейка в копейку, это снимает напряжение вокруг денег.
Все выезды и состав бригады доступны на одной странице и легко просматриваются, доступ к информации стал максимально быстрым и прозрачным.
Цитаты из общей обратной связи команды.
Работа с AI
AI использовался как инструмент разработки: я описывал продуктовую логику, сценарии, структуру данных, ограничения расчётов и поведение интерфейса, затем проверял результат на реальных рабочих ситуациях.
Итерации шли от практики: продукт дорабатывался по обратной связи людей, которые используют его в ежедневной эксплуатации.
Результат
Главный результат для меня - опыт проектирования инструмента, где интерфейс напрямую работает с деньгами и доверием. Здесь недостаточно нарисовать таблицы: нужно было решить, какую математику спрятать, какое трение убрать, а какое осознанно добавить, и как сделать так, чтобы каждый в цепочке от менеджера до бригадира мог проверить свою цифру.
Решение, принятое утром, вечером уже стояло в эксплуатации. Для продукта, завязанного на деньги, это оказалось ценнее полноты первоначального исследования.