import React, { useState } from 'react';
const Forecast2026 = () => {
const [selectedScenario, setSelectedScenario] = useState('base');
const scenarios = {
conservative: {
name: "Консервативный",
color: "bg-orange-50 border-orange-200",
subscribers: [300, 400, 500, 650, 800, 950, 1100, 1300, 1500, 1700, 1900, 2100],
marketing: [1000000, 1000000, 900000, 850000, 850000, 750000, 750000, 700000, 700000, 650000, 650000, 600000]
},
base: {
name: "Базовый",
color: "bg-blue-50 border-blue-200",
subscribers: [500, 650, 850, 1100, 1400, 1750, 2100, 2500, 3000, 3500, 4000, 4500],
marketing: [1200000, 1200000, 1000000, 900000, 900000, 800000, 800000, 750000, 750000, 700000, 700000, 650000]
},
optimistic: {
name: "Оптимистичный",
color: "bg-green-50 border-green-200",
subscribers: [700, 1000, 1400, 1900, 2500, 3200, 4000, 5000, 6200, 7500, 9000, 11000],
marketing: [1500000, 1500000, 1300000, 1200000, 1200000, 1100000, 1100000, 1000000, 1000000, 950000, 950000, 900000]
}
};
const months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'];
const programmers = 1700000;
const calculateMonthData = (subs, marketing) => {
const subscriptionRev = subs * 999;
const tokenRev = subscriptionRev * 0.3;
const totalRev = subscriptionRev + tokenRev;
const infrastructure = 300000 + (subs * 150);
const development = programmers + infrastructure;
return {
subs,
revenue: totalRev,
subscriptionRev,
tokenRev,
marketing,
development,
programmers,
infrastructure,
result: totalRev - marketing - development
};
};
const scenario = scenarios[selectedScenario];
const monthlyData = months.map((_, i) =>
calculateMonthData(scenario.subscribers[i], scenario.marketing[i])
);
const totals = monthlyData.reduce((acc, m) => ({
revenue: acc.revenue + m.revenue,
marketing: acc.marketing + m.marketing,
development: acc.development + m.development,
result: acc.result + m.result
}), { revenue: 0, marketing: 0, development: 0, result: 0 });
const formatNum = (num) => {
return new Intl.NumberFormat('ru-RU').format(Math.round(num));
};
const formatMln = (num) => {
return (num / 1000000).toFixed(1) + ' млн';
};
return (
Финансовый прогноз на 2026 год
Альпина.GEN - Платформа ИИ (новая модель монетизации)
{Object.entries(scenarios).map(([key, s]) => (
))}
Итоги года: {scenario.name} сценарий
Выручка
{formatMln(totals.revenue)}
Маркетинг
-{formatMln(totals.marketing)}
Разработка
-{formatMln(totals.development)}
Результат
= 0 ? 'text-green-600' : 'text-red-600'}`}>
{totals.result >= 0 ? '+' : ''}{formatMln(totals.result)}
Подписчиков на конец года
{formatNum(scenario.subscribers[11])}
Месяц | Подписчики | Выручка (подписки) | Выручка (токены) | ИТОГО Выручка | Маркетинг | Зарплаты | Инфраструктура | ИТОГО Разработка | Результат |
{monthlyData.map((data, i) => (
{months[i]} | {formatNum(data.subs)} | {formatNum(data.subscriptionRev)} | {formatNum(data.tokenRev)} | {formatNum(data.revenue)} | -{formatNum(data.marketing)} | {formatNum(data.programmers)} | {formatNum(data.infrastructure)} | -{formatNum(data.development)} | = 0 ? 'text-green-600' : 'text-red-600'}`}>
{data.result >= 0 ? '+' : ''}{formatNum(data.result)}
|
))}
ИТОГО | {formatNum(scenario.subscribers[11])} | | | {formatNum(totals.revenue)} | -{formatNum(totals.marketing)} | {formatNum(programmers * 12)} | | -{formatNum(totals.development)} | = 0 ? 'text-green-600' : 'text-red-600'}`}>
{totals.result >= 0 ? '+' : ''}{formatNum(totals.result)}
|
Ключевые предположения модели:
- Монетизация: Подписка 999 руб/мес + покупки токенов (~30% от подписки)
- Разработка (фикс): 1,7 млн руб/мес зарплаты программистам
- Инфраструктура: 300К базовая + 150 руб на пользователя в месяц (API, серверы)
- Маркетинг B2C: Высокий в начале (запуск), снижается по мере роста органики
- Churn: Не учтен (оптимистично), рекомендуется закладывать 5-10% в месяц
Рекомендации:
- ✓ Для выхода в точку безубыточности нужно ~4800-5000 подписчиков
- ✓ Критично отслеживать CAC (стоимость привлечения) и LTV (lifetime value)
- ✓ B2C маркетинг наиболее важен в первые 3-4 месяца для набора критической массы
- ✓ После 2000 подписчиков можно снижать маркетинг за счет сарафанного радио
- ✓ Рекомендуется пилотный запуск в январе-феврале для тестирования конверсии
);
};
export default Forecast2026;