Documentation Index
Fetch the complete documentation index at: https://docs.mmmytics.com/llms.txt
Use this file to discover all available pages before exploring further.
L5 — Budget Optimizer
/dashboard/budget adresinde bütçe karar destek istasyonu. Saturation + ROI + adstock’u dikkate alarak optimum allocation’ı hesaplar.
Ne Yapar?
- Senaryo oluşturma — 3 mod (same-budget / +/- %X / channel mix override)
- Compare — 2+ senaryo yan yana karşılaştırma (M8/M16/M17)
- Saturation-aware — fazla yüklenen kanalları otomatik azaltır
- Constraint support — “TV bütçesi sabit” gibi kuralları respekt eder
- Risk paneli — multi-run baseline mismatch uyarısı (M16)
Senaryo Modları
Same Total Budget
Budget +/- %X
Channel Mix Override
Toplam bütçe değişmez, allocation yeniden dağıtılır.Use case: “Bu yılki 5M TL’yi nasıl daha verimli kullanırım?”Optimizer:
- Her kanalın saturation curve + ROI’sını dikkate alır
- Marjinal getiri eşit olana kadar yeniden dağıtır
- Beklenen KPI lift’i hesaplar
Output:Toplam: 5,050,000 TL (sabit)
Mevcut → Optimized
TV: 29% → 35% (+6pp)
Google: 24% → 21% (-3pp)
Meta: 19% → 22% (+3pp)
YouTube: 17% → 16% (-1pp)
OOH: 9% → 5% (-4pp)
Print: 2% → 1% (-1pp)
Beklenen KPI Lift: +14.2%
Toplam bütçe değişir (yeni iş yılı, kriz, yeni runaway):Use case: “Bütçe %20 azaltılırsa hangi kanaldan kesmem lazım?”Mantık:
- Bütçe artarsa: yetersiz alanlara öncelik (saturation altındaki kanallar)
- Bütçe azalırsa: doygun alanlardan kes (ROI < 1 olanlar dahil)
Output:Senaryo: Bütçe -%20 (4,040,000 TL)
Mevcut → Reduced
TV: 1.45M → 1.20M (-17%) ← saturated, easier to cut
Google: 1.20M → 1.15M (-4%) ← yüksek ROI, az kes
Meta: 0.95M → 0.85M (-10%)
YouTube: 0.85M → 0.65M (-23%)
OOH: 0.48M → 0.10M (-79%) ← negative ROI, sıfırla
Print: 0.12M → 0.05M (-58%)
Beklenen KPI Lift: -8.3% (bütçe -20% rağmen)
Bazı kanallar sabit, gerisi optimize.Use case: “TV taahhüt ettim sabit kalsın, gerisini yeniden dağıt.”Constraints UI:
- Lock: TV → 1,500,000 TL (sabit)
- Lock: Print → 0 TL (kapatma)
- Optimize: kalan kanalar
Optimizer kalan bütçe alan için aynı algoritmayı çalıştırır.
Compare View (M8/M16/M17)
2+ senaryo yan yana:
┌──────────────────┬─────────────┬──────────────┬─────────────┐
│ Channel │ Baseline │ Optimized │ Reduced -20%│
├──────────────────┼─────────────┼──────────────┼─────────────┤
│ TV │ 1,450,000 │ 1,768,000 │ 1,200,000 │
│ Google Ads │ 1,200,000 │ 1,061,000 │ 1,150,000 │
│ Meta Ads │ 950,000 │ 1,111,000 │ 850,000 │
│ YouTube │ 850,000 │ 808,000 │ 650,000 │
│ OOH │ 480,000 │ 252,000 │ 100,000 │
│ Print │ 120,000 │ 50,000 │ 50,000 │
├──────────────────┼─────────────┼──────────────┼─────────────┤
│ Total │ 5,050,000 │ 5,050,000 │ 4,000,000 │
│ Expected KPI │ 8,500 │ 9,710 │ 7,793 │
│ Lift vs Base │ - │ +14.2% │ -8.3% │
└──────────────────┴─────────────┴──────────────┴─────────────┘
Multi-run Baseline Uyarısı (M16)
Compare’da farklı model run’larından senaryo eklerseniz:
⚠️ Mixed Baseline Warning
Senaryo 1 (Optimized) → Run #15 (R-hat 1.02, MAPE 14%)
Senaryo 2 (Reduced) → Run #14 (R-hat 1.04, MAPE 18%)
Bu senaryolar farklı model run'larından geliyor. Sonuçları doğrudan
karşılaştırmak yanıltıcı olabilir. Aynı run'dan senaryolar üretmek
önerilir (Run #15'te tekrar oluştur).
Channel Union (M17)
Run’lar arasında kanal listesi farklıysa union view:
- Run #15’te Affiliate vardı, Run #14’te yoktu → tabloda hücre
— gösterilir
- Null-safe render — ekran patlamaz
Saturation-Aware Constraints
Optimizer’ın otomatik kuralları:
- Hiçbir kanal toplam bütçenin %50’sini geçemez (concentration risk)
- Saturation point’in %150 üstüne çıkamaz (diminishing return aşımı)
- ROI < 0.5 olan kanal sıfırlanır (negatif kanal)
- Manuel constraint priority (lock’lar önce uygulanır)
API Endpoint’leri (Programmatic)
# Senaryo oluştur
curl -X POST https://api.mmmytics.com/api/v1/budget/scenarios \
-H "Authorization: Bearer $TOKEN" \
-d '{
"model_run_id": "<run-uuid>",
"scenario_type": "same_budget_optimize",
"constraints": {"TV": {"min": 1000000, "max": 2000000}}
}'
# Compare 2 scenario
curl -X POST https://api.mmmytics.com/api/v1/budget/scenarios/compare \
-H "Authorization: Bearer $TOKEN" \
-d '{
"scenario_ids": ["<uuid-1>", "<uuid-2>", "<uuid-3>"]
}'
API Reference
Sonraki Adım
Optimum allocation hazır mı? Şimdi executive özet zamanı:
L7 Reports →