«Сільпо» AI Factory · 2026створено для хакатону «Сільпо» AI Factory
Ти не забув — ти просто не вдома.
ПанTry знає, що вдома. І знає, що треба.
01проблема

Кошик збирають з пам'яті. А пам'ять — не вдома.

С
Сім'я4 учасники
ВікаКупи, якщо будеш09:12
молоко, хліб і щось малій на сніданок09:12
а кава вдома ще є?09:40
Вікане знаю, я не вдома11:05
вхідний дзвінок · 14:07
Збирач «Сільпо»
ваше замовлення на сьогодні
«Цього вже немає, а взяти вам ось це?»
а ви — посеред наради
з 20
наших доставок за пів року: за два дні після них знову купували
1 раз — ще одне замовлення, 7 — похід у магазин
це одна сім'я — чи так у всіх, видно у ваших даних
02чому агент

Правилом це не порахуєш

зі 108
речей, які ми купуємо знову і знову, мають рівний ритм. Для решти правило не знає, коли вони закінчаться.
наш акаунт «Сільпо»
121 покупка, 629 товарів
код рахує

Точне

  • коли закінчиться — з чеків
  • ціна за 100 г, сума, слот
  • запис у кошик і перевірка
модель вирішує

Спірне

  • яку заміну взяти
  • що зняти, коли не влазить у суму
  • коли спитати тебе, а не вгадувати
Без моделі лишається калькулятор: рахує, але не вирішує.
03рішення

ПанTry: агент, який доводить кошик до дверей

ПанTry діє, коли ніхто не питав, — і доводить до «Оформити».
Три входи: з комори, з чужого кошика, зі списку словами.

знає, що вдома

Комора

  • сама з чеків офлайн і онлайн — нічого не вводиш
  • цикл → залишок → «ще ~3 дн»
  • руками — лише виправити або дописати
знає, що треба

Кошик

  • шукає в твоєму магазині, одразу із замінами
  • не виходить за твою суму
  • «гості в суботу» — теж урахує
доставляє до дверей

Доставка

  • дзвінок не потрібен: заміну погоджено наперед
  • список замін їде збирачу в коментар
  • кошик у застосунку «Сільпо» — оформлює гість
04agent flow

Модель планує. Код перевіряє і виконує.

1
Що скінчилось? — Знаємо!
комора з чеків офлайн і онлайн · цикли видів
2
Що потрібно? — Складаємо!
план моделі · полиця філії · названа сума
3
Немає? — Міняємо!
ланцюжок замін, погоджений наперед · збирачу в коментар
4
До дверей? — Кошик готовий до «Оформити»!
запис у кошик гостя · перечитати і звірити
модель
План
код
Перевірка
MCP
Виконання
код
Факти
модель
Переплан
код
Мета · стоп
стелі петелькомора ≤ 4 обертикошик ≤ 2 обертидошук рядка ≤ 3 кроки
трейс · приклад прогону
$ гості в суботу на 4 · межа 3 500 ₴
запобіжники коду
запис лише в кошик гостя
після запису — перечитати і звірити
deny-by-default: запису в переліку 7, використовуємо 4
заміри: теплий дім — 1–2 оберти, холодний — 3 і інші кроки; стеля 4 не досягнутарівень автономії: дім — on-the-loop, кошик — in-the-loop: записує лише кнопка гостя
05MCP «Сільпо»

Інструменти «Сільпо» — руки агента

агент

ПанTry

план → виконання → факти → переплан

8–10
викликів MCP на кошик
40 інструментів «Сільпо»:
33 читання · 7 запису, пишемо 4
Решта заборонена. Читає агент лише зі списку. Пише — тільки в кошик гостя і тільки коли гість тисне «Оформити».
Історія0
get_my_offline_ordersget_my_online_orders
Полиця і пошук0
find_products_batchget_product_detailsget_categorieslist_branches
Заміни0
get_similar_productsfind_products_batch
Слоти і адреса0
find_addressget_time_slots
Кошик · ЗАПИС0
get_my_shopping_cartcreate_shopping_cartadd_or_update_cart_productsremove_cart_productsupdate_shopping_cart+3 у переліку, не викликаємо
06сценарій

Один сценарій: гості на 4, межа 3 500 ₴

1

Комора

що куплено — з чеків офлайн і онлайн разом; «ще ~3 дн» і смуга — лише там, де ритм доведено, решту комора питає

2

Кошик на 4 людей

агент сам вирішив, чим накрити стіл у межах 3 500 ₴; у кожного рядка — причина

3

Заміна, погоджена наперед

дзвінок не потрібен: заміну погоджено наперед — ланцюжок з 2-3 замін

4

«Оформити» в ПанTry

запис у кошик гостя, перечитати і звірити — у трейсі видно виклики

5

Той самий кошик у «Сільпо»

застосунок на телефоні: замовлення підтверджує гість сам

07цінність

Кому це вигідно

людина

Гостю

  • Час: кошик за хвилину, а не з пам'яті за вечір
  • Нічого не забуто: комора знає, що закінчується
  • Без дзвінків: заміни погоджені наперед
бізнес

«Сільпо»

  • Повнота кошика — замовлення, яке не довелось згадувати
  • Менше дозамовлень: друга доставка за малий чек
  • Погоджена заміна замість дзвінка: механіка є, ефект міряє пілот
Гість нічого не забуває — «Сільпо» продає більше. Без реклами.
08додаткова цінність

Що гість купує не в «Сільпо»

є в продукті

Купуєш тут, але не все

хліб: у «Сільпо» раз на 32 дні, а батон лежить 3-5 днів · приклад
куплено в «Сільпо»
з'їдено вдома
деінде
Комора не вигадує цикл: рядок каже «решту, схоже, береш деінде». Строк зберігання виду судить модель ярусами.
наступний крок

Не купуєш тут узагалі

базовий набір родини проти чеків · приклад
молоко
хліб
яйця
овочі
фрукти
крупи
кава
м'ясо
риба
побутова хімія
Чого в чеках немає зовсім — провал категорії. Еталон дає сам «Сільпо» з агрегатів схожих родин.
«Сільпо»: частка гаманця гостя за категоріями · пропозиція саме на провал — «беремо в кошик?», вирішує гість
Гостю: один кошик замість двох магазинів
09метрики · що міряємо

Одна головна метрика і п'ять шарів під нею

головна метрика
Позиції агента, які гість не прибрав
росте, лише коли кошик, порахований з чеків, збігся з потребою гостя і заощадив йому час
додаємо: подія передачі кошика
1Гість
  • час до кошика
    є в даних
  • дотики на кошик
    додаємо
2Комора
  • пальці вгору / вниз
    додаємо
  • промахи прогнозу
    є в даних
3Бізнес
  • частота замовлень
    є в даних
  • чек у постійних цінах
    є в даних
  • дозамовлення за 48 год
    є в даних
4Агент
  • pass^5 на пастках
    є в даних
  • план з першої спроби
    є в трейсі
  • вигаданих артикулів: 0
    код ріже
5Гроші
  • $ на кошик
    є в даних
  • токени на кошик
    є в даних
10метрики · виміряно і як доведемо

Виміряно — і як доведемо ефект

evals агента45 сценаріїв-пасток × 5 прогонів
/45
Mistral Large 3
pass^5 · pass@1 96%
/45
Luna
pass^5 · pass@1 97%
промпти під хешем
зрушив текст — видно в знімку
чим перевіренокод писав агент — тримають тести
автотестів Python
pytest
e2e проти прод-збірки
× 2 ширини
= 802 прогони
%
мутантів убито
6 458 з 7 138
ціна і швидкість кошика · межа 1 600 ₴
$
моделі на кошик
без кешу $0,024–0,038
с
до кошика з кешем
без кешу 35 с
p95 на проді 122 с
%
збірок без помилки
170 прогонів на проді

пілот · як доведемо ефект

  • спершу ваші дані: дозамовлення за 48 год, дзвінки збирача, гості з рівним ритмом
  • 5% гостей, обраних жеребом: рахуємо всіх, кому показали, а не лише тих, хто скористався
  • 8 тижнів ≈ 4-5 циклів · свята бачить і контроль
  • метрика: усі покупки гостя, офлайн і онлайн, у цінах до пілоту
Ріст чека групиприклад
+9 пп
+3 пп
+12%
подорожчанняінфляція — не наша
купили більшенаша заслуга
формули — додаток, слайд 13
11наступний крок

Як це вбудувати в «Сільпо»

КРОК 1

Картка «Комора» в кошику

стан дому там, де збирають кошик

КРОК 2

«Плюхс»: кошик сам перед безкоштовним слотом

підписка, яка заповнює себе

КРОК 3

«Власний Рахунок»: пропозиції як привід у коморі

персональна акція там, де вид закінчується

Нічого нового будувати не треба: кошик, «Плюхс» і персональні пропозиції вже є — ПанTry дає їм стан дому.

Не купуй час на пригадування.

Віддай його дому.

pantry.klimnyk.dev
демо — наведіть камеру
13додаток · для питань

Як відділити наш внесок від інфляції

Дані

q
скільки штук кожного товару гість купив за 8 тижнів — у магазині й з доставкою
p₀
ціна товару до початку пілоту
p₁
ціна того самого товару під час пілоту
тест
5% гостей, яким показали нову функцію. Рахуємо всіх, навіть тих, хто нею не скористався
контроль
інші гості за ті самі 8 тижнів — їм функцію не показували
1
кошик у цінах до пілотуV = Σ p₀ × q
2
на скільки більше купили наш внесокV_тест ÷ V_контроль − 1
3
на скільки подорожчало інфляція, однакова для обох групΣ p₁ × q ÷ Σ p₀ × q − 1
4
ріст чека · приклад: ціни +9%, купили більше на 3%(1 + ціни) × (1 + купили) − 1 = 1,09 × 1,03 − 1 ≈ +12,3%
Чому порівнюємо дві групи, а не «до і після»: свята й сезон піднімають кошик усім однаково, тож у порівнянні груп вони зникають. Святкові тижні показуємо окремо, а ефект — по тижнях: так видно, чи не минає він, коли пройде новизна.
ПанTry
00 / 14
Перемикаюсь у продукт
pantry.klimnyk.dev
Відео демо не знайденопоклади demo.mp4 поруч з index.htmlV або Esc — закрити

Клавіші

→ · Space · PgDn
наступний крок
← · PgUp
назад
Home · End
перший · останній слайд
0-9, 10-13
перейти на слайд (дві цифри поспіль — двозначний)
R
перезапустити анімацію слайда (на 4 — прогін)
Enter
слайд 4: запустити прогін
F · L
повний екран · світла / темна тема
? · H · Esc
ця підказка · закрити
Презентація · 14 слайдів · далі — →, пробіл або клік; назад — ←; усі клавіші — Hгортайте свайпом або кнопками по краях