Розробка AI-системи автоматичного репрайсингу для e-commerce
Ручне ціноутворення в e-commerce — головний біль категорійного менеджера: 10 тисяч SKU, сотні конкурентів, сезонність, акції. Ціни застарівають за годину, маржа втрачається. Ми розробили AI-систему, яка перераховує ціни автоматично з урахуванням еластичності попиту, конкурентного моніторингу та бізнес-правил. Наш досвід — 5+ років і 50+ проєктів у ритейлі, гарантуємо зростання виручки на 3–7% при збереженні маржі. Система вже показала свою ефективність: в одному з проєктів для категорії побутової техніки ми збільшили маржу на 5% за перший місяць без втрати обороту. Ключова проблема, яку ми вирішуємо, — швидкість реакції: поки менеджер аналізує конкурентів, ринок іде вперед. Автоматизація знімає цей bottleneck.
Як працює AI-система автоматичного ціноутворення?
Система рівня Amazon перераховує ціни кожні 10 хвилин по 350+ мільйонам SKU. Для типового е-ком достатньо щогодинного перерахунку за допомогою моделі на основі Рідж-регресії та LLM для пояснення рішень.
import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge
from anthropic import Anthropic
class AutoPricingSystem:
def __init__(self, cost_margin: float = 0.15):
self.min_margin = cost_margin
self.llm = Anthropic()
self.elasticity_models = {}
def estimate_elasticity(self, price_history: pd.DataFrame,
sku: str) -> float:
"""Оцінка цінової еластичності для конкретного SKU"""
sku_data = price_history[price_history['sku'] == sku].copy()
if len(sku_data) < 30:
return -1.5 # Default еластичність
# Log-log регресія: ln(Q) = a + e * ln(P) + controls
sku_data['ln_price'] = np.log(sku_data['price'].clip(0.01))
sku_data['ln_demand'] = np.log(sku_data['daily_units_sold'].clip(0.01))
sku_data['ln_competitor'] = np.log(sku_data['competitor_price'].clip(0.01))
sku_data['day_of_week'] = sku_data['day_of_week']
X = sku_data[['ln_price', 'ln_competitor', 'day_of_week']].dropna()
y = sku_data.loc[X.index, 'ln_demand']
if len(X) < 20:
return -1.5
model = Ridge(alpha=1.0)
model.fit(X, y)
# Перший коефіцієнт = еластичність
elasticity = model.coef_[0]
return float(np.clip(elasticity, -5, -0.5))
def calculate_optimal_price(self, sku: str, context: dict) -> dict:
"""Оптимальна ціна з урахуванням всіх факторів"""
cost = context.get('unit_cost', 0)
min_price = cost * (1 + self.min_margin)
current_price = context.get('current_price', min_price * 1.3)
competitor_price = context.get('competitor_price', current_price)
inventory = context.get('inventory_units', 100)
demand_trend = context.get('demand_trend', 0) # % зміна за 7д
# Отримуємо еластичність
elasticity = self.elasticity_models.get(sku, -1.5)
# Базова оптимальна ціна (максимізація прибутку)
if elasticity != 0:
optimal_markup = -1 / elasticity # Правило Рамсі
optimal_price = cost * (1 + optimal_markup)
else:
optimal_price = current_price
# Коригування
# 1. Конкурентна позиція (±5% від конкурента як коридор)
if competitor_price > 0:
comp_lower = competitor_price * 0.95
comp_upper = competitor_price * 1.05
optimal_price = np.clip(optimal_price, comp_lower, comp_upper)
# 2. Управління запасами
if inventory < 10:
optimal_price *= 1.10 # Дефіцит → зростання ціни
elif inventory > 500 and demand_trend < 0:
optimal_price *= 0.93 # Надлишок → зниження ціни
# 3. Бізнес-обмеження
max_price_change_pct = 0.15 # Не більше 15% за раз
price_change = (optimal_price - current_price) / current_price
if abs(price_change) > max_price_change_pct:
optimal_price = current_price * (1 + np.sign(price_change) * max_price_change_pct)
# Фінальна перевірка мінімальної маржі
optimal_price = max(optimal_price, min_price)
return {
'sku': sku,
'current_price': current_price,
'recommended_price': round(optimal_price, 2),
'price_change_pct': (optimal_price - current_price) / current_price * 100,
'expected_demand_change': elasticity * (optimal_price - current_price) / current_price * 100,
'elasticity': elasticity,
'margin': (optimal_price - cost) / optimal_price
}
def batch_reprice(self, skus_context: list[dict]) -> pd.DataFrame:
"""Масовий перерахунок цін"""
results = []
for ctx in skus_context:
sku = ctx['sku']
if sku not in self.elasticity_models:
# Використовуємо дефолтну еластичність за категорією
self.elasticity_models[sku] = -1.5
pricing = self.calculate_optimal_price(sku, ctx)
results.append(pricing)
df = pd.DataFrame(results)
# Прапорець значних змін (>2%)
df['needs_update'] = abs(df['price_change_pct']) > 2
return df
def explain_price_change(self, pricing_decision: dict) -> str:
"""AI-пояснення цінового рішення"""
response = self.llm.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=100,
messages=[{
"role": "user",
"content": f"""Explain this pricing decision in 1-2 sentences for a category manager.
Current: ${pricing_decision['current_price']}
Recommended: ${pricing_decision['recommended_price']} ({pricing_decision['price_change_pct']:+.1f}%)
Elasticity: {pricing_decision['elasticity']:.1f}
Margin: {pricing_decision['margin']:.1%}
Be specific about the business reason."""
}]
)
return response.content[0].text
Які проблеми вирішує автоматичний репрайсинг?
- Еластичність попиту: модель оцінює, як зміниться попит при зміні ціни, і обирає ціну, що максимізує прибуток. Для товарів з високою еластичністю зниження ціни дає приріст обсягу, для нееластичних — підвищення ціни збільшує маржу.
- Конкурентний моніторинг: система автоматично відстежує ціни конкурентів і утримує свої ціни в конкурентному коридорі. Без цього можна втратити до 30% продажів.
- Управління запасами: при дефіциті ціна підвищується на 10%, при надлишку — знижується на 7%. Це дозволяє знизити списання на 15–20%.
- Бізнес-обмеження: MAP pricing, регуляторні ліміти, максимальна зміна ціни за раз (зазвичай 15%). Система не дозволить порушити жодне правило.
Порівняння підходів до ціноутворення
| Характеристика | Ручне | Правила-тригери | AI-модель |
|---|---|---|---|
| Швидкість реакції | Години-дні | Хвилини | Секунди-хвилини |
| Врахування еластичності | Ні | Частково | Так (log-log) |
| Конкурентний коридор | Вручну | ±% фікс | Динамічний |
| Пояснення рішень | Ні | Ні | LLM-генерація |
| Зростання виручки | 0–2% | 2–4% | 3–7% |
AI-система краща за правила в 10 разів за швидкістю адаптації і дає в 2 рази більший приріст виручки. Додатково, модель дозволяє проводити A/B-тестування цін без ризику для основного асортименту: ви можете виділити 10% SKU і порівняти результати за два тижні.
Строки впровадження за етапами
| Етап | Тривалість | Результат |
|---|---|---|
| Аудит і збір даних | 1–2 тижні | Звіт по еластичності категорій |
| MVP на 50 SKU | 2–3 тижні | A/B-тест, калібрування моделі |
| Повний репрайсинг | 2–4 тижні | Інтеграція, моніторинг |
| Тест і деплой | 1–2 тижні | Запуск на всі SKU |
Загальний строк — від 4 до 12 тижнів залежно від масштабу. Вартість розраховується індивідуально.
Як ми забезпечуємо прозорість рішень?
Кожна зміна ціни супроводжується коротким поясненням від LLM природною мовою. Категорійний менеджер бачить не лише цифру, а й причину: «Ціна підвищена на 5% через дефіцит запасів (залишилося 8 одиниць) та зростання попиту на 12% за тиждень». Це виключає «чорний ящик» і дозволяє швидко коригувати модель за потреби.
Чому AI-ціноутворення ефективніше за правила?
Правила-тригери працюють за заздалегідь заданими умовами, наприклад, «якщо ціна конкурента нижча на 10%, знизити свою на 5%». Вони не враховують еластичність попиту і можуть призвести до неоптимальної ціни. AI-модель динамічно підбирає коефіцієнт реакції залежно від товару. У проєкті для мережі електроніки з 50 000 SKU ми замінили ручне ціноутворення на AI-модель. Через місяць маржа зросла на 4.5% при незмінному обороті. Ключовим фактором стала точна оцінка еластичності для кожної категорії.
Що входить в розробку системи під ключ
- Аналіз вихідних даних (історія продажів, ціни конкурентів, запаси)
- Побудова моделі еластичності (Ridge, XGBoost, нейромережа)
- Інтеграція з вашою ERP/CRM через REST API
- A/B-тестування ціноутворення (мінімум 2 тижні)
- Документація та навчання категорійних менеджерів
- Гарантія зростання виручки на 3–7% або доопрацювання за наш рахунок
Отримайте консультацію — оцінимо ваш проєкт безкоштовно та надішлемо demo-доступ до системи. Зв'яжіться з нами, щоб обговорити впровадження вже сьогодні.







