AAYMA
RU
Войти

AIKYN BILD

Агент для кейса Beeline: по истории смены тарифов строит гипотезы, проверяет их пилотами через env.run_pilot и выдаёт до 10 непересекающихся…

Рабочий MVP
Команда «AIKYN BUILD» 9💬 0 комментариевс 19 сентября 2026 г.

О проекте

Команда: AIKYN BUILD
Кейс HackAlem.ai: Телеком — Beeline
Стадия: Рабочий MVP

Задача кейса: Агент, который решает, каким абонентам какой тариф предложить (чистый прирост ARPU)

Суть

Агент для кейса Beeline: по истории смены тарифов строит гипотезы, проверяет их пилотами через env.run_pilot и выдаёт до 10 непересекающихся тарифных кампаний в рамках бюджета и лимита контактов.

Как устроено

Вход: customer_profile.csv, справочники и история change_tariff.csv. Относительные изменения ARPU агрегируются медианой по связке (исходный тариф, ARPU-сегмент, целевой тариф) и задают только порядок разведки. До 12 первых пилотов исследуют разные сегменты, остальные (всего до 20) уточняют перспективные варианты. Решение принимается по среднему из пилотов с консервативной поправкой, которая убывает с числом наблюдений. Планировщик резервирует бюджет и контакты, выбирает непересекающиеся сегменты, сравнивает SMS с бесплатным push и имеет фолбэк на случай отказа всех пилотов. Выход: воспроизводимый submission.csv (seed=42).

Ключевые решения

  • медианная агрегация прироста ARPU
  • explore/exploit пилоты
  • консервативная поправка на неопределённость
  • жадный планировщик под бюджет и охват
  • непересекающиеся сегменты

Метрики

seed=42: чистый прирост 1,222,447 у.е., расходы 31,488, 7,872 контакта; seed 0–9: 10/10 положительных, min 1,247,717, медиана 1,602,548, max 1,730,401 (мок-среда)

Особенности

Отдельный verify_pass.py проверяет сырые выходы агента до обрезки оценщиком: непересечение сегментов, реальные затраты с учётом пилотов, время на 10 seed и идентичность CSV. Работает полностью без LLM. Честно оговорено, что результат на мок-эффектах — не прогноз балла.

Стек

Python · pandas


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-30b4fd86-aikyn-build.

README

README.md

AIKYN BILD — Beeline Tariff Marketing Campaigns

Агент для HackAlem AI 2026: анализирует историю переходов, проверяет гипотезы пилотами и возвращает до 10 тарифных кампаний с учётом бюджета и охвата. Данные синтетические.

Быстрый запуск (Windows PowerShell)

Проверено на Python 3.14. Для запуска откройте корень репозитория:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
$env:PYTHONIOENCODING='utf-8'
.\.venv\Scripts\python.exe local_eval.py
.\.venv\Scripts\python.exe local_eval.py --runs 10
.\.venv\Scripts\python.exe make_submission.py
.\.venv\Scripts\python.exe verify_pass.py

Быстрый запуск (macOS)

Откройте Terminal, перейдите в корень репозитория и выполните:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python local_eval.py
python local_eval.py --runs 10
python make_submission.py
python verify_pass.py
deactivate

На macOS используйте Python 3 (python3). Все команды запускаются из корня repo: организаторские скрипты используют относительные пути данных.

Основной сценарий и demo

Вход: customer_profile.csv, справочники и история data/change_tariff.csv. Действие: Agent.act(env) формирует гипотезы, проводит реальные пилоты через публичный env.run_pilot, пересматривает оценки и выбирает кампании. Выход: план в submission.csv и отчёт local_eval.py о приросте, расходах и охвате.

Показать жюри: запуск local_eval.py, чистый результат и соблюдение лимитов, затем submission.csv и повторную генерацию. verify_pass.py проверяет повторяемость файла и сохраняет validation.json.

Подход

  1. Исторические относительные изменения ARPU агрегируются медианой по исходному тарифу, ARPU-сегменту и целевому тарифу. Малые группы получают меньший вес. История определяет порядок разведки, а не скрытые эффекты.
  2. До 12 первых пилотов исследуют разные сегменты. Оставшиеся пилоты уточняют перспективные варианты с учётом неопределённости; до трёх измерений на гипотезу.
  3. Решения используют среднее из пилотов и консервативную поправку, убывающую с числом наблюдений. Это эвристика риска, не гарантированный доверительный интервал для скрытой аудитории.
  4. Первая версия сравнивает SMS с бесплатным push. Дорогие каналы пока не используются: перенос измерений на более сильный канал может быть неверным из-за насыщения конверсии.
  5. Финальные сегменты не пересекаются. Планировщик резервирует деньги и контакты с учётом пилотов, не полагаясь на автоматическое обрезание оценщиком. Крупные сегменты разбиваются доступными фильтрами.
  6. Если нет консервативно положительного варианта, возвращается лучший доступный проверенный вариант через бесплатный канал. Если все пилоты завершились ошибкой, агент пытается выдать одну исторически ранжированную кампанию на самом дешёвом канале; имя и диагностика отмечают её как непроверенную. Такой план соблюдает остаток бюджета и охвата, но не подтверждён пилотными данными.

Агент использует pandas и стандартную библиотеку, работает локально без LLM/API-ключей. Публичный интерфейс среды — единственный источник результатов пилотов; скрытые внутренности и модель эффектов агент не читает. При отсутствии истории гипотезы выбираются детерминированно без исторического ранжирования.

PASS и ограничения

  • 1–10 валидных финальных кампаний; существующие тарифы и каналы.
  • Более нуля и не более 20 пилотов, 10–200 абонентов в пилоте.
  • До 5000 абонентов на кампанию, 15000 контактов и 100000 у.е. всего, включая пилоты.
  • План зависит от наблюдений; submission.csv воспроизводится при seed=42.
  • Рабочая цель времени: менее 5 минут, что также удовлетворяет 10 минутам основного условия.

verify_pass.py проверяет сырые выходы агента до sanitizing/capping оценщика, отсутствие пересечения финальных сегментов, реальные затраты с пилотами, время на 10 seed, а также идентичность повторного CSV при seed=42. local_eval.py --runs 10 отдельно оценивает чистый результат.

Важно: поле «Кампаний» в отчёте local_eval включает пилоты. Например, 24 = 20 пилотов + 4 финальные кампании. Строки «Осталось бюджета/охвата» показывают остаток после пилотов; итоговые расходы смотрите в общей таблице результата.

Первый локальный результат

На seed=42: 5 финальных кампаний, 20 пилотов, чистый прирост 1,222,447 у.е., расходы 31,488, контакты 7,872. На seed 0–9: 10 из 10 результатов положительные; минимум 1,247,717, медиана 1,602,548, максимум 1,730,401 у.е. Округлено до целых. Эти показатели получены на мок-эффектах обычного сценария; резервный сценарий при отказе всех пилотов оценивается отдельно и использует непроверенную кампанию.

Это проверка на мок-эффектах, не прогноз конкурсного балла. История относится к другой выборке. Все положительные результаты на скрытой среде гарантировать невозможно.

Файлы и сдача

  • agent.py — решение команды, класс Agent и метод act(env).
  • submission.csv — воспроизводимый план, генерируется make_submission.py.
  • requirements.txt — зависимости.
  • verify_pass.py, validation.json — дополнительные проверки и результат.
  • local_eval.py, make_submission.py, environment.py, mock_environment.py, scoring_core.py, шаблон и данные — неизменённый пакет участника.
  • PARTICIPANT_GUIDE.md — условие из пакета. Отдельный PDF кейса содержит также рубрику 25/25/25/15/10; README и воспроизводимость дают до 25 баллов.
  • docs/ — прежние подготовительные документы, сохранены. Их упоминания Construction и старых названий не определяют текущий кейс.

Официальный repo: BAITC-Hacks/hack-30b4fd86-aikyn-build. Команда: AIKYN BILD.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
20
Авторы
4
Файлы
37
Ветки
3

Авторы коммитов

AGI Home Core 7ntleukin 6kobeevb05-del 5Batyrkhan Kobeev 2

История коммитов

  • 2026-09-23 17:55Align docs with current campaign agentntleukin
  • 2026-09-23 17:30Document macOS setup and verificationntleukin
  • 2026-09-23 17:20Handle complete pilot API failure safelyntleukin
  • 2026-09-23 16:45Merge pull request #1 from BAITC-Hacks/feature/batyrkhan-validationkobeevb05-del
  • 2026-09-23 16:44Merge branch 'main' into feature/batyrkhan-validationkobeevb05-del
  • 2026-09-23 16:19Refresh docs and submission after team integration and passing checksAGI Home Core
  • 2026-09-23 16:17Merge remote-tracking branch 'origin/main'AGI Home Core
  • 2026-09-23 16:10Replace preparation docs with actual Beeline architecture and demo guideAGI Home Core
Все коммиты (20)
  • 2026-09-23 16:09Merge pull request #3 from BAITC-Hacks/feature/pilot-uncertainty-calibrationlinuks85
  • 2026-09-23 16:07Stop pilot refinement when resources are exhaustedntleukin
  • 2026-09-23 15:48Harden pilot strategy and retry handlingntleukin
  • 2026-09-23 15:40Merge pull request #2 from BAITC-Hacks/feature/batyrkhan-validation-v2kobeevb05-del
  • 2026-09-23 15:29Add independent campaign validationBatyrkhan Kobeev
  • 2026-09-23 15:01Update README.mdkobeevb05-del
  • 2026-09-23 15:00feat: add validation scripts and docs structureBatyrkhan Kobeev
  • 2026-09-23 14:12Merge remote README update with verified Beeline implementationAGI Home Core
  • 2026-09-23 14:12Implement AIKYN BILD Beeline agent and reproducible validationAGI Home Core
  • 2026-09-23 13:58Revise README for AIKYN BUILD projectkobeevb05-del
  • 2026-09-19 17:54Add case intake and hackathon runbookAGI Home Core
  • 2026-09-19 17:54Prepare AIKYN BUILD hackathon workspaceAGI Home Core
Структура репозитория (37 файлов)
.gitignore
PARTICIPANT_GUIDE.md
PARTICIPANT_GUIDE.pdf
README.md
agent.py
agent_template.py
customer_profile.csv
data/arpu_monthly.csv
data/change_tariff.csv
data/dict_tariff.csv
data/traffic.csv
docs/ARCHITECTURE.md
docs/BATYRKHAN_TASK.md
docs/CASE_INTAKE.md
docs/CHANGES.md
docs/DECISIONS.md
docs/DEMODAY_DEFENSE.md
docs/DEMO_CHECKLIST.md
docs/DEMO_CONTRACT.md
docs/IMPLEMENTATION.md
docs/NURLAN_TASK.md
docs/RUNBOOK.md
docs/TEAM_COORDINATION.md
docs/VALIDATION.md
environment.py
feature_dictionary.csv
local_eval.py
make_submission.py
mock_environment.py
requirements.txt
scoring_core.py
submission.csv
tariff_dictionary.csv
tests/test_agent_strategy.py
tests/test_contract.py
validation.json
verify_pass.py
Ветки (3)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.