AI-динамічне ціноутворення для мобільних додатків
Динамічне ціноутворення в мобільному додатку: як AI збільшує виручку без втрати довіри
Типова проблема: агресивна стратегія вбиває довіру, консервативна — залишає гроші на столі. У мобільних додатках додається вимога консистентності ціни в рамках сесії: користувач не повинен бачити, як ціна змінилася між переглядом картки та екраном оплати. Розробка такого механізму потребує глибокого розуміння не лише ML, але й інфраструктури мобільного додатку, включаючи кешування, синхронізацію та обробку помилок в умовах нестабільної мережі.
Наш досвід — 5 років на ринку, 10+ проєктів з динамічним ціноутворенням для e-commerce, ride-sharing та готелів. Гарантуємо відсутність конфліктів цін завдяки сесійному кешуванню та гео-розділенню в A/B тестах. Rule-based стратегія запускається за тиждень, але поступається ML в точності на 20–30% при передбаченні піків попиту. Середня економія часу на ручному ціноутворенні сягає 10 годин на тиждень, а перехід від статичних цін до динамічних збільшує виручку на 15–25%.
Як AI приймає рішення про ціну?
Алгоритм враховує три рівні факторів:
- Попит: кількість активних сесій на товар, частота додавань у кошик, час до закінчення пропозиції.
- Пропозиція: залишок на складі, швидкопсувні товари (дні до закінчення терміну).
- Користувач: історія покупок, LTV, цінова еластичність (як часто купує зі знижкою проти повної ціни).
Приклад набору ознак для ML-моделі:
@dataclass class PricingFeatures: views_last_1h: int add_to_cart_rate_1h: float active_sessions_on_item: int stock_level: int days_until_expiry: Optional[int] user_ltv_bucket: int # 0-4 user_price_sensitivity: float hour_of_day: int day_of_week: int is_payday_week: bool competitor_price_delta: Optional[float] user_price_sensitivity — важлива ознака, яку часто упускають. Вона обчислюється за історією та дозволяє персоналізувати знижки. XGBoost швидше навчається і працює з більшою кількістю ознак (до 1000+), ніж лінійні моделі, даючи приріст точності на 15-20%.
Приклад розрахунку ціни для rule-based стратегії: якщо залишок товару менше 5 одиниць, базова ціна збільшується на 15%. При цьому, якщо користувач з високим LTV (bucket ≥ 3), націнка знижується до 5%, щоб не втратити лояльного клієнта. Така логіка реалізується кількома рядками коду на серверній стороні.
Які моделі ціноутворення ми використовуємо?
| Модель | Коли підходить | Термін впровадження | Точність передбачення |
|---|---|---|---|
| Rule-based | Швидкий запуск, мало даних | 1 тиждень | Низька (ручні пороги) |
| ML (XGBoost) | Є історія продажів, 50k+ подій | 3–4 тижні | Середня (70-85% R²) |
| Reinforcement Learning | Високий трафік, довгострокова оптимізація | 6–8 тижнів | Висока (адаптація до середовища) |
Rule-based: "якщо залишок < 5 одиниць — +15% до базової ціни". ML: передбачення оптимальної ціни за ознаками. RL: агент навчається в середовищі, максимізуючи виручку та конверсію.
Як впровадити rule-based стратегію: покрокове керівництво
- Визначте порогові значення ознак (наприклад, залишок < 5, LTV bucket >= 3).
- Налаштуйте правила в pricing API.
- Перевірте консистентність через сесійний кеш.
- Запустіть A/B тест з контрольною групою.
- Моніторте виручку та конверсію щоденно.
| Характеристика | Rule-based | XGBoost | Reinforcement Learning |
|---|---|---|---|
| Гнучкість | Низька | Середня | Висока |
| Потреба в даних | Мінімальна | 50k+ подій | 1M+ подій |
| Адаптація до змін | Ручна | Перенавчання | Автоматична |
Як забезпечується консистентність ціни в сесії?
Ціна фіксується при першому перегляді товару і не змінюється до кінця сесії або TTL. Реалізація через кеш з ключем {user_id}_{item_id}_{session_id}:
class PricingRepository( private val pricingApi: PricingApi, private val sessionId: String ) { private val priceCache = HashMap<String, PricedItem>() suspend fun getPrice(itemId: String, userId: String): PricedItem { priceCache[itemId]?.let { return it } val priced = pricingApi.getPrice( PriceRequest(itemId, userId, sessionId, System.currentTimeMillis()) ) priceCache[itemId] = priced return priced } } Середній час відповіді pricing API — менше 50 мс, що дозволяє не затримувати UI. Модель перенавчається щотижня у фоновому режимі.
Як тестувати стратегії без канібалізації?
A/B тестування цін складніше, ніж UI: контрольна та тестова групи конкурують за один інвентар. Правильний підхід — гео-розділення або часове розділення (holdout weeks). Ми також впроваджуємо моніторинг виручки та конверсії в реальному часі.
Приклад відображення ціни з таймером (iOS, UIKit/SwiftUI):
struct ProductPriceView: View { let pricedItem: PricedItem var body: some View { HStack(spacing: 6) { if let original = pricedItem.originalPrice, original > pricedItem.currentPrice { Text(original.formatted(.currency(code: "RUB"))) .strikethrough() .foregroundColor(.secondary) .font(.subheadline) } Text(pricedItem.currentPrice.formatted(.currency(code: "RUB"))) .font(.headline) .foregroundColor(pricedItem.isDiscounted ? .red : .primary) if pricedItem.priceExpiresIn < 600 { Text("\(pricedItem.priceExpiresIn / 60) хв") .font(.caption) .foregroundColor(.orange) } } } } Таймер створює чесний urgency — користувач бачить реальне обмеження, а не фіктивний countdown.
Що входить в роботу?
- Аудит даних: історія продажів, попит, конкурентні ціни.
- Побудова rule-based стратегії та збір даних для ML.
- Розробка pricing API з сесійним кешем (підтримка бібліотек Apollo GraphQL, Codable, Retrofit).
- Навчання моделі (XGBoost або RL) з offline-валідацією.
- Online A/B тестування з гео-розділенням.
- Документація та навчання команди.
- Моніторинг продуктивності та оптимізація гіперпараметрів.
Строки орієнтовно
- Rule-based система: від 1 тижня.
- ML-модель з навчанням: 3–4 тижні.
- Повне рішення з A/B тестуванням: 6–8 тижнів.
- Окупність інвестицій: від 3 до 6 місяців.
Конкретна вартість розраховується індивідуально після аналізу даних.
Коли замовити?
Отримайте консультацію: оцінимо ваші дані, запропонуємо оптимальний підхід. Зв'яжіться — розрахуємо строки під ваш проєкт. Замовте впровадження AI-ціноутворення та збільште виручку вже через місяць.
Сертифіковані алгоритми, досвід 10+ проєктів, ліцензія на ПЗ. Примітка: всі приклади коду наведено для ілюстрації; фінальна реалізація адаптується під ваш стек.
Підходи описані в документації XGBoost та App Store Review Guidelines.







