Učím Claude Code predpovedať objednávky a tržby

Včera večer som sa nevedel odtrhnúť od počítača. Keď som zdvihol hlavu, bolo pol deviatej. Na poschodí som už asi tri hodiny sedel sám.

Učil som AI agenta, ktorý vie samostatne pracovať s dátami a kódom. Úloha: krátkodobá predikcia tržieb, výhľad prichádzajúcich objednávok a obratu.

Plán bol jednoduchý.

Dať agentovi dáta, kampane, kontext a nechať ho každé ráno predpovedať objednávky na nasledujúcich tridsať dní. A k tomu ho naučiť rozumieť, prečo to v ten deň vychádza práve takto.

Rozhodol som sa to robiť robustnejšie, než je pre tento konkrétny výstup nevyhnutné. Dôvod je širší ako jedna predikcia. Keď raz agent pochopí, z čoho sú tržby poskladané (čo je dobeh sezóny, čo krátkodobá push kampaň, čo neočakávaný výpadok, aký mali dopad prekrývajúce sa kampane) otvára sa pole možností, ako ho ďalej zamestnať.

Od začiatku bolo jasné jedno. Agentovi nestačí dať hromadu čísel. Aby to bolo použiteľné, musí rozumieť súvislostiam medzi nimi. Musí vedieť odpovedať na otázku „keby tá sezónna kampaň nebežala, ako by graf vyzeral?". Musí povedať „tento peak v polovici mesiaca očakávame kvôli retenčnej kampani, ktorá končí o dva týždne". Musí odpovedať na čo-keby otázky a vracať hodnoverné simulácie.

Cieľ mám jasný.

Dostať agenta na úroveň, keď niekto iný povie „dobre, toto si preberá, ja robím niečo iné". Nie je to ľahké.

NAIVNÁ PRVÁ VERZIA

Štartovacia pozícia bola takáto. Dátový sklad uchováva denné agregáty objednávok. Nástroj na riadenie projektov uchováva kampane s tagmi, dátumami spustenia a ukončenia, typmi. Z marketingového plánu vyplývajú medziročné rastové predpoklady.

Dal som to agentovi a on urobil vzorec:

baseline(2026-D) = skutočnosť(2025-D, weekday-aligned)
forecast(2026-D) = baseline × growth_target × kampaňový_multiplikátor

Multiplikátor (číslo, ktorým sa baseline vynásobí, aby zohľadnil dopad kampane) vyčítal z histórie. Deň v peaku určitej kampane mal historicky nejaký násobok tržieb oproti stavu, keď kampaň nebežala. Pre sezónne sviatky iný násobok.

Výstup na prvý pohľad vyzeral celkom dobre. Vhodné k tomu, aby sa to doladilo. Začal som stavať dashboard, aby som si to vedel vizualizovať počas toho, ako to budem ladiť.

Keď som si dal vysvetliť logiku a vizualizoval dáta, začal sa niekoľkohodinový boj.

ZÁPAS 1: PROFILOVÉ MULTIPLIKÁTORY KLAMALI

Jednu z kampaní mi model označil za najsilnejšiu. Bola to chyba.

Napísal som mu: „To je úplne mimo. Tento tematický týždeň patrí medzi slabšie. Druhá kampaň prebiehajúca súbežne má oveľa väčší dopad."

Problém bol v baseline (referenčný stav, oproti ktorému sa meria dopad kampane). Multiplikátor počítal ako pomer (medián dní, keď kampaň bežala) ku (medián ostatných dní). Lenže „ostatné dni" zahŕňali iné súbežné kampane. Baseline bol umelo zvýšený. Priradenie liftu (prírastku tržieb pripísaného kampani) bolo skreslené v oboch smeroch: niektoré kampane preceňované, iné podceňované, podľa toho, aké iné kampane bežali v ich neaktívnych dňoch. V obdobiach prekrývania, čo je väčšina roka, bolo priradenie úplne od veci.

Po námietke agent prepísal definíciu baseline na „medián dní, keď nebežala žiadna push kampaň". Výsledok ale nebol vhodný ako východisko pre analýzu. Čistých dní bolo málo. Pre niektoré segmenty a dni v týždni nebolo ani päť príkladov. Kampane sa prekrývajú skoro nepretržite.

ZÁPAS 2: REKLAMNÁ ATRIBÚCIA JE LEN ŠPIČKA ĽADOVCA

Prišla snaha dodať viac kontextu. Merateľný dopad kampane cez ad-attribution (priraďovanie objednávok ku konkrétnej reklame), konverzie z reklamných platforiem.

Agent to opäť nevedel správne interpretovať.

Napísal som mu: „Ale nezobral si do úvahy consent rate. Koľko ľudí odmietne cookies."

Cez reklamné platformy sa napáruje len časť objednávok. Zvyšok ide cez non-consent zákazníkov, ktorí odmietli cookies: v reklamných platformách sa neobjavia, v zázname objednávok áno. Agent o tomto rozdiele vedel, ale do predikčnej metódy ho nezahrnul.

Po prepočte sa čísla kampaní zdvihli na reálnejšie hodnoty.

A vzápätí sme narazili na ďalšiu vrstvu.

ZÁPAS 3: KOMUNIKÁCIA NA WEBE MOTIVUJE VŠETKÝCH NÁVŠTEVNÍKOV

Napísal som mu: „Kampaň nemá dopad len cez reklamu. Keď sa komunikuje na webe, zdvihne konverzný pomer všetkým, kto prídu, nielen klikom z reklám. Aj tým zo search refererov, z directu (priami návštevníci, ktorí zadali adresu ručne) a podobne."