Как не обанкротиться на power users: финансовый контроль AI-продукта в реальном времени
user_4821 платил $49 и стоил $156 в месяц. Я узнал случайно через четыре месяца. Разбираю архитектуру Stripe + Langfuse: как свести доходы и расходы на каждого пользователя и поймать убыточных клиентов раньше, чем они убьют маржу.
Четвёртый месяц после запуска. AI-продукт с подпиской $49/мес, «безлимитный доступ». Рост, счастливые клиенты, красивые графики выручки. Всё по плану.
Потом я из любопытства выгрузил логи из Langfuse и посчитал стоимость токенов по каждому пользователю. Один клиент — user_4821 — делал 380 запросов к GPT-4o в день. Средний промпт 3 200 токенов, ответ 1 800. Его стоимость для нас: $5.20 в день. $156 в месяц.
Он платил $49.
Я проверил топ-20 по активности. Семь из двадцати стоили нам больше, чем платили. Суммарный месячный убыток на этих семерых: $380. Я узнал об этом через четыре месяца. Случайно. Потому что Stripe знал, сколько клиент платит, а Langfuse знал, сколько он стоит — но никто не сводил эти цифры вместе.
Почему AI-продукты уязвимы
В классическом SaaS стоимость обслуживания пользователя — почти постоянная. Разница между лёгким и активным пользователем — центы. Flat-rate подписка работает.
В AI-продукте стоимость — переменная. Прямо пропорциональная количеству и длине запросов. Power user с 10 000 запросов стоит в 50 раз больше casual user с 200. При flat-rate — оба платят одинаково.
Перевёрнутая экономика: ваши самые лояльные, самые активные пользователи — главный источник убытков. Данные о доходах живут в Stripe. Данные о расходах — в логах LLM-вызовов. Два мира, которые не пересекаются, пока кто-то вручную не сведёт их в таблицу.
Архитектура: соединяем два мира
Три компонента: сбор данных, расчёт маржи, алерты.
Сбор расходов (Langfuse)
Ключевое: каждый LLM-trace должен содержать user_id. Без привязки к пользователю — данные бесполезны. Агрегация — ежечасная или ежедневная. Результат: словарь {user_id: monthly_cost}.
Сбор доходов (Stripe)
Список активных подписок через API. Ключевой момент: маппинг между Stripe customer и internal user_id — обычно в metadata клиента. Если маппинга нет — первая задача перед любым мониторингом.
Расчёт маржи
Для каждого пользователя: доход (Stripe) минус расход (Langfuse) = маржа в деньгах и процентах. Список сортируется по марже от худшего к лучшему.
Три уровня алертов
Красный: пользователь убыточен прямо сейчас → немедленное уведомление в Slack.
Жёлтый: маржа ниже 20% → превентивный сигнал, пока ещё прибыльный.
Тренд: расходы выросли >50% за неделю → ловим до того, как маржа стала отрицательной.
Dashboard: что видеть каждое утро
Сводка по тарифам — одна таблица с доходом, расходом и маржой по каждому плану. Топ убыточных — конкретные user_id с суммами. Распределение маржи — 5% убыточных управляемо, 15% системная проблема.
Что делать с убыточными
Usage-based pricing. Базовая подписка + оплата за превышение. user_4821 при $49 + $0.015/запрос за сверхлимит платил бы $190 при стоимости $156 — уже прибыльный.
Автоматический даунгрейд модели. После порога расходов — переключение на gpt-4o-mini без блокировки. Пользователь продолжает работать, стоимость снижается. Стимул для апгрейда тарифа.
Кэширование. Semantic cache снижает реальные LLM-вызовы на 20-30% у power users без деградации качества. У user_4821 стоимость упала со $156 до $94/мес.
Персональный апгрейд. Для самых активных — не ограничение, а предложение Business-плана. Power user на $149 при стоимости $94 — прибыльный клиент с маржой 37%.
Минимальная реализация: один день
60 строк Python: выгрузить расходы из Langfuse, доходы из Stripe, найти убыточных, отправить в Slack. Cron 0 9 * * * — каждое утро. Не real-time, не красивый dashboard. Но видимость — ту самую, которой не хватало четыре месяца.
Три ошибки, которые делают все
«Безлимитный тариф» — конкурентное преимущество, которое становится финансовой ловушкой. В AI-продукте безлимитный = неопределённая стоимость.
«Средняя маржа нормальная» — 5% убыточных клиентов на $100 каждый скрыты за хорошим средним. Распределение важнее среднего.
«Узнаем в конце квартала» — в AI-продукте квартал — вечность. Один power user за квартал генерирует $300-500 убытка. Десять таких — $5 000.
Stripe знает, сколько вам платят. Langfuse знает, сколько вы тратите. Между ними — 60 строк Python, которые превращают два слепых мира в одну картину. Посмотрите на неё до того, как CFO спросит, куда делась маржа.