Финансисты против 10 тысяч строк: как AI-агент помог настроить систему премирования. ai.. ai. oxygen.. ai. oxygen. Блог компании Oxygen Cloud Platform.. ai. oxygen. Блог компании Oxygen Cloud Platform. вайбкодинг.. ai. oxygen. Блог компании Oxygen Cloud Platform. вайбкодинг. ИИ.. ai. oxygen. Блог компании Oxygen Cloud Platform. вайбкодинг. ИИ. отдел продаж.. ai. oxygen. Блог компании Oxygen Cloud Platform. вайбкодинг. ИИ. отдел продаж. премии.. ai. oxygen. Блог компании Oxygen Cloud Platform. вайбкодинг. ИИ. отдел продаж. премии. Управление продажами.. ai. oxygen. Блог компании Oxygen Cloud Platform. вайбкодинг. ИИ. отдел продаж. премии. Управление продажами. Управление проектами.

Премии любят все. Особенно — премии честные. Справедливая оплата труда требует учёта многих факторов, и финансистам считать их вручную очень муторно. Поэтому мы в OXYGEN решили разработать собственную систему расчёта премий для отдела продаж с помощью AI-агента.

Меня зовут Андрей Калашников, я финансовый менеджер в облачном интеграторе и дата-центре OXYGEN. Если вам интересна тема отделов продаж, денег, вайбкодинга — добро пожаловать под кат.

Зачем вообще вайбкодинг? Что не так со стандартными инструментами?

Есть 1С и Excel. Есть инструменты для расчётов, которые называют «специализированными» — различные модули, HR-платформы, CRM-ки.

Казалось бы, внедри да радуйся?

Не всё так просто!

Я приведу здесь пример, который услышал от одного человека — как я его запомнил.

Вам надо купить пиджак. Есть стандартные лекала (S, M, L, XL). Такой пиджак сядет на тысячи людей — кому-то лучше, кому-то хуже. Он универсален, но не идеален. И он не будет подходить отдельному человеку так, как сшитый в ателье по индивидуальным меркам.

Готовые системы закрывают базовые потребности, но не кастомные. Если задачу нельзя решить стандартными инструментами, придётся делать костыли и допиливать. У поставочного продукта или SaaS это доработки за отдельные деньги (от сотен тысяч до десятков миллионов рублей). Но дело даже не в деньгах, а в сложности взаимодействия заказчика и разработчика — иногда месяцы топтания на месте. Это демотивирует.

Excel позволяет многое в no/low-code, но чем больше условий, исключений и источников данных, тем сложнее поддерживать конструкцию. Формулы разрастаются, появляются технические вкладки, ручные операции, файлы плодятся. Excel прекрасен для анализа, но превращать его в полноценное приложение мы не захотели.

Нам нужна была система под себя — достаточно сложная в хорошем смысле и удобная. Мы решили ничего не покупать и не достраивать, а сделать самостоятельно.

Что сложного в расчете премий

Когда мы впервые рассказываем коллегам о нашей системе, вопрос всегда один и тот же: а зачем вообще городить огород, если премию можно посчитать в одно действие — привёл клиента, получил условных 10 процентов?

Для каких-то бизнесов это будет работать. Но у современного поставщика облачных вычислений всё устроено сложнее. Мотивация продавца должна решать сразу несколько задач. Как писал классик — слона надо есть по кусочкам.

Это:

·       Контроль выполнения плана. Мы не сводим к бинарному «выполнил / не выполнил». Применяем линейную шкалу: выполнил план на 89% — коэффициент 0,89, выполнил на 76% — коэффициент 0,76. Это способ поощрять любой прогресс, а не только 100%-достижение.

Финансисты против 10 тысяч строк: как AI-агент помог настроить систему премирования - 1

·       Тримминг парусов. Мы можем гибко направлять отдел продаж в нужное русло. Работа с новыми и действующими клиентами (HOLD / KEEP / FARM / HUNT), размер компаний (SMB/Enterprise или SMA/LA/KA), сегменты/отрасли, регионы/территории, кластеры/плечи, конкретные услуги (SKU) — всё это имеет значение и может менять свой вес. Это тонкая настройка. И чем она тоньше, тем точнее система приводит к нужному результату.

·       Слои атрибуции. Бывает так, что у клиента может меняться менеджер. Им может стать сотрудник вообще из другого бизнес-юнита в другом регионе — ситуации бывают разные. Прирост рекуррента при этом должен качественно атрибутироваться, чтобы не создавать ложных перекосов. Чья заслуга — тот и заработал.

В миниатюре все эти блоки выглядят просто. Но затем они умножаются друг на друга, накладываются на десятки менеджеров, сотни клиентов, обширный портфель облачных услуг — и вот мы сидим на берегу озера данных без конца и начала. Вы сможете перемножить в уме две цифры; может быть, сможете даже три. Но для 12 значений нужен блокнот, калькулятор, Excel. А чтобы управлять ста тысячами уникальных строк (Excel ещё справится, человек — нет), десятками коэффициентов, сотнями взаимосвязей и сложной логикой их взаимодействия — пора пилить собственный софт на TypeScript, Python или чём-нибудь ещё.

Вручную можно считать бесконечно, зато с ошибками

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

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

А ведь есть ещё вопросы менеджеров

Менеджер хочет не только видеть результат, но и доверять ему: «Откуда эта цифра? А здесь почему такой маленький процент? Нет, это была не разовая продажа, а абонентская плата!». Мы тратим время на объяснения. Хотелось сократить путь: чтобы коллега смотрел детализацию, не разбираясь в формулах на двадцати листах. В перспективе — сделать интерактив и срезы данных.

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

Как мы пришли к вайбкодингу

Вайбкодинг — это программирование в режиме zero-code: вернее, код есть, но пишет его агент, не человек. Пользователь описывает задачу простым языком и получает ответ от LLM-агента, который так же легко вносит исправления по описанию.

Я видел, насколько загружены коллеги из разработки: задач много, приоритеты меняются, ресурсы не бесконечны. И подумал: можем ли мы взять часть работы на себя? Хотя бы попробовать собрать инструмент для задачи, в которой хорошо разбираемся, и пройти первые итерации. Так расчёт премий стал нашим первым экспериментом с AI-агентом.

Что конкретно мы сделали по шагам

Шаг 1. Установили среду разработки. Выбрали Visual Studio Code — бесплатный редактор для написания и редактирования кода. Он подсвечивает синтаксис и в целом удобнее для работы, особенно если в него встроен AI-агент, об этом дальше.

Шаг 2. Подключили AI через расширение. У VS Code есть система подключаемых модулей (расширений). Один из вариантов — Codex, интеграция от OpenAI. Альтернатива — Claude Code от Anthropic. Мы выбрали Codex, далее рассказываем о работе именно с ним: это вопрос личных предпочтений, кто-то работает с одной моделью, кто-то с другой. Модуль скачивается и появляется отдельной панелью прямо в интерфейсе редактора.

Способ доступа и оплаты зависит от выбранного агента. Для работы Codex необходимо авторизоваться через аккаунт ChatGPT или подключить API-ключ. Условия доступа и оплаты зависят от выбранного способа подключения.

Шаг 3. Создали пустую папку проекта — это и есть будущий проект. Открываем именно ее в VS Code. Как только редактор открывает эту папку, агент получает доступ к ней и начинает воспринимать ее как рабочее пространство, в котором будет создавать файлы.

Шаг 4. Сформулировали задачу. Я описал задачу агенту очень подробно и последовательно, как если бы общался с разработчиком. Например: «Мы будем разрабатывать систему мотивации, расчетный движок для премий менеджеров по продажам». Агент в ответ задал уточняющие вопросы — о структуре данных, о нужной логике, — и по мере ответов начал создавать файлы проекта.

Общаемся с ним почти по-дружески

Общаемся с ним почти по-дружески

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

Шаг 5. Запустили приложение на своем компьютере. Наш инструмент написан на TypeScript с использованием React и Next.js. В текущей конфигурации для его запуска используется Node.js. Агент подготовил файлы проекта и команды: “npm install” устанавливает необходимые библиотеки, а “npm run dev” запускает сервер разработки.

Финансисты против 10 тысяч строк: как AI-агент помог настроить систему премирования - 3

Шаг 6. Проверили результат в браузере. Когда агент сообщает, что часть работы готова, смотрим результат на локальном хосте. После запуска в терминале появляется адрес, обычно http://localhost:3000. Открываем его в браузере и видим интерфейс приложения. localhost означает этот же компьютер: для проверки инструмента не требуется покупать домен или размещать сайт в интернете. Пока сервер работает, изменения в коде можно сразу проверять в браузере.

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

Шаг 8. Донастраиваем и переспрашиваем. Если что-то считается не так, прямо говорим: «здесь неправильно, переделай». С агентом можно советоваться, просить проверить формулировки из законодательства, уточнять непонятные моменты — по сути, вести диалог.

Конечно, первое время результат получается сырым и примитивным, а чтобы довести инструмент до рабочего состояния, нужно время. Но все приходит с опытом. Главная ценность — можно сразу, почти мгновенно, посмотреть некое MVP системы, которое можно доработать.

Что оказалось сложнее, чем мы ожидали?

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

Главная трудность — точное понимание бизнес-правил. Агент может написать работающий код, который реализует не то, что имелось в виду. Хотя интерфейс нормальный, ошибок нет, результат правдоподобен. Заметить проблему можно, только зная правильный ответ. Здесь помогают контрольные примеры и self-checks.

При расхождении я показывал AI конкретный случай: исходные значения, ожидаемый и фактический ответ, просил объяснить вычисления и найти расхождение. Так находились ошибки в коде и неоднозначности правила.

Например, для нас важны различия между абонентскими услугами и разовыми продажами, между общей суммой и приростом относительно предыдущего периода. Для финансиста это разные экономические сущности, и в постановке задачи каждое различие приходится проговаривать: откуда берём базу сравнения, что считаем новым результатом, какие коэффициенты применяем и в какой последовательности.

Поэтому «здесь неправильно, переделай» быстро перестаёт работать. Полезнее разобрать маленький пример: данные прошлого месяца, текущего и ожидаемый результат. Например: «Абонентская плата не изменилась. Объясни, что в этом случае считается приростом и почему», а затем попросить показать промежуточные вычисления.

Вот реальный пример одного из моих боданий.

Обнаружилась ошибка в отображении прироста маржи. На условных цифрах: в сентябре выручка составляла 800, себестоимость — 600, маржа — 200. В октябре: выручка — 900, себестоимость — 650 тысяч, маржа — 250. Прирост маржи 250 – 200 = 50. Подробная расшифровка (в уровне 5) показывала правильное значение (50), а сводная таблица (в уровне 4) — 250. Сам расчёт премии в этом примере был корректным, но объясняющая его таблица вводила пользователя в заблуждение. Полночи я не мог понять, из-за чего это происходит. Оказалось, интерфейс выбирал только месяцы текущего квартала и терял сентябрьскую базу, заменяя её нулем.

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

А что с безопасностью?

Вопрос безопасности возникает в двух местах: при разработке с агентом и при использовании готового приложения.

Сейчас калькулятор запускается локально. Пользователь выбирает Excel-файл через интерфейс, приложение читает его и рассчитывает премии непосредственно в браузере. В коде этого расчета нет обращения к AI-сервису: для начисления премий участие Codex не требуется.

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

Что получилось в цифрах

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

Куда идти дальше

В идеале мы хотим получить интерактивный дашборд, чтобы менеджер мог понастраивать параметры, поиграть с системой.

Сейчас у нас уже несколько слоёв:

·       Верхний слой: фамилии сотрудников и итоговая сумма их премий. Здесь же эта сумма раскладывается по месяцам квартала — сколько заработано в первом месяце, сколько во втором, сколько в третьем.

·       Второй слой детализирует месяцы в разрезе клиентов.

·       Третий слой открывает разбивку по конкретным параметрам, которые повлияли.

·       И так далее — вплоть до самой глубокой детализации.

Это промежуточный этап: системой пользуются только финансисты и коммерческий директор, менеджерам доступа нет. Через год-два видим инструмент не отдельным модулем, а частью единого портала компании с мобильным приложением. Коммерческий директор в любое время получит «бортовое табло» для сравнения сотрудников, бизнес-юнитов и регионов. Менеджер хоть по дороге на работу откроет телефон и в реальном времени увидит, сколько денег принёс компании с начала квартала, процент выполнения плана и набежавшую премию.

У этого есть и обратная сторона: постоянная видимость собственного прогресса может работать двояко — для одних это будет мотивацией ускориться, для других, наоборот, источником тревоги, если дела идут не так, как хотелось бы. Но этот вопрос мы оставим психологам.

Вместо вывода

Я не говорю, что AI заменит разработчиков. Я делюсь идеей, как финансистам и аналитикам, которые лучше всех знают свою предметную область, снизить порог входа в разработку инструментов. Сейчас я встречаю всё больше резюме, где помимо финансов молодые специалисты указывают Python, SQL, UX/UI, что-то ещё явно не из мира TradFi. В конце концов, такую систему можно показать отделу айти как прототип, пример того, что надо реализовать. Иногда ведь лучше один раз увидеть.

Если вам интересна тема вайбкодинга, мы с коллегами расскажем и про другие прикладные проекты в компании. Не стесняйтесь написать об этом в комментариях, делитесь мнением, задавайте вопросы. И подписывайтесь на наш Telegram, там регулярно пишем про облака и кибербез, делимся новостями компании.

Автор: OffTheRecord

Источник