Разработка White-Label AI-платформы аналитики для реселлеров

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка White-Label AI-платформы аналитики для реселлеров
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1229
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1166
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    863
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1077
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    829

Разработка White-Label AI-платформы аналитики для реселлеров

White-label AI-аналитика — это готовый продукт, который реселлер (агентство, консалтинговая компания, SaaS-вендор) продаёт своим клиентам под собственным брендом. Реселлер не разрабатывает AI-функциональность самостоятельно, а встраивает готовое решение в свой продукт.

Архитектура для реселлерской модели

Технологический провайдер (мы)
    ↓ [White-Label SDK + API]
Реселлер (агентство, ISV)
    ↓ [Branded platform]
Конечные клиенты реселлера

Три уровня кастомизации:

  1. Branding only: Реселлер меняет лого, цвета, домен. Минимальные усилия.
  2. Embedded widgets: Реселлер встраивает отдельные компоненты (дашборды, чат-боты) в свой продукт через iframe или JavaScript SDK.
  3. Full API integration: Реселлер строит собственный UI поверх нашего API. Максимальная гибкость.

JavaScript SDK для embedded аналитики

// Клиентский SDK для реселлера
class AIAnalyticsWidget {
  constructor(config: WidgetConfig) {
    this.apiKey = config.apiKey;
    this.tenantId = config.tenantId;
    this.theme = config.theme;
    this.container = config.container;
  }

  async renderDashboard(options: DashboardOptions) {
    const { data, insights } = await this.fetchAnalytics(options);

    const widget = document.createElement('div');
    widget.innerHTML = await this.renderTemplate('analytics-dashboard', {
      data, insights, theme: this.theme
    });

    this.container.appendChild(widget);
    this.applyCustomTheme(this.theme);
  }

  private applyCustomTheme(theme: Theme) {
    // Инъекция CSS переменных для брендинга
    const style = document.createElement('style');
    style.textContent = `
      .ai-analytics-widget {
        --primary-color: ${theme.primaryColor};
        --font-family: ${theme.fontFamily};
        --logo-url: url('${theme.logoUrl}');
      }
    `;
    document.head.appendChild(style);
  }
}

// Использование реселлером
const analytics = new AIAnalyticsWidget({
  apiKey: 'reseller_key_...',
  tenantId: 'client_123',
  container: document.getElementById('analytics-container'),
  theme: {
    primaryColor: '#E67E22',  // Цвета бренда клиента
    fontFamily: 'Roboto, sans-serif',
    logoUrl: 'https://client.com/logo.png'
  }
});

analytics.renderDashboard({ period: '30d', metrics: ['revenue', 'churn'] });

Реселлерский портал управления

# Реселлер управляет своими клиентами (sub-tenants)
class ResellerPortal:
    async def create_client(self, reseller_id: str,
                             client_data: ClientCreateRequest) -> Client:
        # Проверка квот реселлера
        reseller = await self.db.get_reseller(reseller_id)
        if reseller.active_clients >= reseller.max_clients:
            raise QuotaExceededError("Client limit reached for your plan")

        client = await self.db.create_client({
            'reseller_id': reseller_id,
            'name': client_data.name,
            'plan': client_data.plan,
            # Наценка реселлера поверх базового тарифа
            'pricing_multiplier': reseller.markup_multiplier,
            'allowed_features': self.get_plan_features(client_data.plan)
        })

        # Выдача API ключей клиенту
        api_key = await self.generate_scoped_api_key(
            client.id, scope=['analytics:read', 'ai:inference']
        )

        return client, api_key

    async def get_reseller_revenue_report(self, reseller_id: str,
                                          period: str) -> dict:
        usage = await self.billing.get_usage(reseller_id, period)
        return {
            'total_client_revenue': usage.total_billed,
            'platform_cost': usage.total_cost,  # Наш тариф для реселлера
            'reseller_margin': usage.total_billed - usage.total_cost,
            'top_clients': usage.top_clients_by_usage[:10]
        }

Управление SLA для реселлеров

Реселлер несёт SLA перед своими клиентами, а провайдер — перед реселлером. Разграничение ответственности:

  • Провайдер гарантирует uptime API 99.95%
  • Реселлер самостоятельно выстраивает SLA с клиентами (обычно 99.5-99.9%)
  • Мониторинг-дашборд реселлера показывает текущий статус, incidents, rolling uptime

Бизнес-модель: реселлер платит нам по wholesale тарифу (например, $5 за 1M токенов), продаёт клиентам по $15 — маржа 67%. Срок разработки полной платформы для реселлеров: 4-5 месяцев.