AAYMA
RU
Войти

She++ Campaign Lab

Автономный агент тарифных кампаний Beeline: сегментирует абонентов, проводит адаптивные пилоты и формирует до 10 непересекающихся финальных кампаний…

Доведённый продукт
Команда «She++» 18💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: She++
Кейс HackAlem.ai: Телеком — Beeline
Стадия: Доведённый продукт

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

Суть

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

Как устроено

Agent.act(env) сегментирует по текущему тарифу и ARPU с фильтрами потребления, ранжирует гипотезы смены тарифа по истории change_tariff.csv, проверяет их через env.run_pilot (до 20 пилотов) и адаптирует решения по наблюдаемому эффекту с учётом неопределённости. Финальный план выбирается по собранным свидетельствам; независимый валидатор проверяет схему, фильтры, контакты и расходы; строится HTML-отчёт с журналом решений. Без LLM — цикл «наблюдение → эксперимент → обновление».

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

  • adaptive pilot experiments
  • hypothesis ranking
  • uncertainty estimation
  • segment deduplication
  • benchmark vs template over seeds

Метрики

Средний чистый прирост ARPU (seed 0–9): +1 477 583 у.е. против −480 836 у шаблона; минимум +1 100 796; 10/10 положительных прогонов; seed 42: +1 533 505 у.е., 99 364 у.е. расходов

Особенности

Честный бенчмарк против шаблона организаторов на одинаковых seed, контрольные суммы исходных файлов, побайтово воспроизводимый submission.csv и независимый аудит плана, не импортирующий агент.

Стек

Python · pandas · NumPy · unittest


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

README

README.md

She++ Campaign Lab — агент тарифных кампаний

Решение кейса Beeline Tariff Marketing Campaigns для маркетингового аналитика. Агент исследует возможности смены тарифа, проводит пилоты и формирует план кампаний при ограниченных бюджете и числе контактов. Цель — увеличить ARPU с учётом затрат на коммуникацию и риска убыточных переходов.

Все данные кейса синтетические. Результаты не описывают реальный бизнес Beeline. Условия задачи: ТЗ организаторов.

Что реализовано

  • Автономный интерфейс Agent.act(env) -> list[dict], работающий без сети и внешних API.
  • Сегментация по текущему тарифу и ARPU; дополнительные фильтры потребления для ограничения размера аудитории.
  • Ранжирование гипотез по публичной истории переходов и адаптация решений по результатам текущих пилотов.
  • Выбор пилотов, повторных проверок и каналов с учётом ресурсов и неопределённости наблюдений.
  • Формирование непересекающихся финальных сегментов с учётом остатков после пилотов.
  • Независимый аудит схемы, фильтров, контактов и расходов; тесты агента и валидатора.
  • Сравнение с шаблоном организаторов на одинаковых seed, журнал решений и локальный HTML-отчёт.
  • Задачи VS Code для запуска проверок, подготовки CSV и демонстрации.

Ограничения задачи: 1–10 финальных кампаний, до 5000 абонентов на кампанию, до 15 000 контактов и 100 000 у.е. вместе с пилотами; до 20 пилотов по 10–200 абонентов.

Как работает решение

  1. Среда передаёт агенту профиль аудитории, доступные тарифы, каналы и остатки ресурсов.
  2. Агент формирует сегменты и ранжирует переходы по data/change_tariff.csv. История относится к другой выборке и используется как источник гипотез.
  3. Через env.run_pilot агент проверяет гипотезы на небольших выборках. Наблюдаемый эффект влияет на следующие действия; пилоты расходуют общий бюджет и контакты.
  4. По собранным свидетельствам агент выбирает финальные кампании. Для каждой указывает фильтры аудитории, целевой тариф и канал. Причины решений доступны в Agent.last_report.
  5. Официальный оценщик рассчитывает эффект и расходы, включая пилоты. Скрипт make_submission.py создаёт файл сдачи; отдельный инструмент строит отчёт для аналитика.

Технологии

Python, pandas 2.3.3, NumPy 2.0.2; unittest для тестов. HTML/CSS и небольшой JavaScript используются для локального отчёта с поиском по кампаниям. Среда проверена на Python 3.9.6; версии зависимостей зафиксированы в requirements.txt, полный состав проверенного окружения — в requirements-lock.txt.

LLM, облачные AI-модели, платные API и реальные сервисы рассылки не подключены. Агентность реализована программным циклом «наблюдение → выбор эксперимента → обновление решения».

Архитектура проекта

КомпонентНазначение
agent.pyГипотезы, адаптивные пилоты, оценки неопределённости, выбор финального плана
plan_validation.pyНезависимый аудит по публичным данным; не импортирует агент и скоринг
local_eval.py, make_submission.pyОригинальные инструменты организаторов: оценка и генерация CSV
tools/check_package.pyНаличие исходных файлов и обязательных колонок профиля
tools/benchmark.pyСравнение с шаблоном на одинаковых seed, сохранение всех результатов
tools/build_report.pyЗапуск агента, аудит, HTML-отчёт и JSON с журналом решений
tests/Проверки поведения агента и ручные контрольные примеры для валидатора
.vscode/, docs/Команды редактора, совместная работа, демонстрация и условия приёмки

Поток данных: публичные CSV → среда → агент ↔ пилоты → финальный план → оценка / аудит / отчёт. Оригинальные файлы пакета сохранены без изменений; их контрольные суммы находятся в docs/organizer_files.sha256.json.

Установка и запуск

Нужны Git, Python и доступ к закрытому командному репозиторию. В VS Code откройте Terminal → New Terminal / Терминал → Создать терминал:

git clone https://github.com/BAITC-Hacks/hack-acbb98e4-she.git
cd hack-acbb98e4-she

Если репозиторий уже открыт, повторное клонирование не требуется.

macOS / Linux:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

Windows, PowerShell:

py -3 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt

Если PowerShell запрещает активацию, вместо python используйте .\.venv\Scripts\python.exe; менять системную политику для запуска не требуется. Для воспроизведения полного набора зависимостей замените requirements.txt на requirements-lock.txt. Установка зависимостей требует доступа к индексу пакетов; последующая работа агента — офлайн.

В VS Code выберите File → Open Folder / Файл → Открыть папку и папку репозитория. Через палитру команд выберите Python: Select Interpreter → .venv. Откройте Terminal → Run Task / Терминал → Запустить задачу: доступны пронумерованные проверки комплекта, агента, устойчивости, тестов, сравнения, генерации CSV и HTML. Задачи используют интерпретатор .venv напрямую и не требуют активированной оболочки.

Как проверить решение

Из корня проекта с установленными зависимостями выполните:

python tools/check_package.py
python -m unittest discover -s tests -v
python local_eval.py
python local_eval.py --runs 10
python tools/benchmark.py --runs 10
python make_submission.py
python tools/build_report.py

Воспроизводимый сценарий для жюри:

  1. Убедитесь, что комплект найден, тесты завершились с OK, а оценщик не сообщает об ошибках агента или отброшенных кампаниях.
  2. Откройте созданный submission.csv: проверьте целевой тариф, канал и фильтры каждой кампании.
  3. Откройте reports/campaign_report.html в браузере. Найдите кампанию по тарифу, сравните её аудиторию и расходы, затем раскройте журнал решений и соответствующие пилоты.
  4. В reports/plan_audit.json проверьте audit.valid, бюджет и контакты вместе с пилотами. Повторный контакт расходует лимит повторно; уникальный охват указан отдельно.
  5. Для сдачи используйте agent.py, сгенерированный официальным скриптом submission.csv и зависимости согласно процедуре организаторов. CSV не заполняется вручную.

Результаты

Проверка на комплекте организаторов, Python 3.9.6:

Показатель, seed 0–9Шаблон организаторовShe++
Средний чистый прирост ARPU, у.е.−480 836+1 477 583
Минимальный результат, у.е.−1 019 431+1 100 796
Положительных прогонов0 / 1010 / 10

Отдельный запуск с seed 42: PASS, 5 финальных кампаний и 20 пилотов, 3838 контактов, расходы 99 364 у.е., чистый прирост +1 533 505 у.е. Строка оценщика «Кампаний: 25» включает 20 пилотов и не означает 25 финальных кампаний. Все 20 тестов прошли, включая три независимых стресс-теста агента. Полный вывод сохранён в reports/tests.txt. Повторная генерация submission.csv дала побайтово одинаковый файл; SHA-256 сохранён в reports/verification.json. Полный запуск с оценкой занимает на этом компьютере менее секунды (время зависит от устройства).

reports/benchmark.json содержит результаты каждого seed для агента и исходного шаблона, время, число пилотов, среднее, медиану, минимум и число положительных прогонов. После изменения кода пересоздайте benchmark, CSV и HTML: сохранённые отчёты относятся к версии, на которой выполнен запуск. Локальная мок-среда не предсказывает балл скрытой проверки.

Критерий из ТЗМаксимумПроверяемое подтверждение
Соответствие задаче и работоспособность25Официальный локальный запуск и submission.csv
Техническая реализация25Адаптивные пилоты, независимый аудит, тесты
README и воспроизводимость25Команды установки, проверок и формирования отчётов
Ценность и применимость15План для аналитика и фактический чистый результат оценщика
Потенциал и оригинальность10Работа с неопределённостью, журнал обоснований и границы применимости

Чек-лист: docs/ACCEPTANCE.md. Сценарий защиты: docs/DEMO.md. Порядок личного вклада двух участников со своих устройств: docs/TEAM_WORKFLOW.md.

Данные и интеграции

Оригинальный синтетический пакет включён в закрытый репозиторий команды. customer_profile.csv содержит целевую аудиторию; data/change_tariff.csv — историю переходов; data/dict_tariff.csv, tariff_dictionary.csv и feature_dictionary.csv описывают тарифы и поля. data/traffic.csv и data/arpu_monthly.csv входят в пакет; агент не обучает на них отдельную модель. Доступ к среде осуществляется через публичные поля env и метод env.run_pilot. Сетевые интеграции, ключи API и реальные персональные данные для запуска не нужны.

Ограничения

  • Исторические переходы не являются причинной оценкой эффекта для новой аудитории.
  • Интервалы строятся на рабочей модели шума: это не гарантия статистического покрытия, доходности или победы. Пилоты и финальные кампании могут дать отрицательный результат.
  • Идентификаторы участников пилотов недоступны агенту. Точное пересечение пилотов с финальным планом не определяется; дедупликацию эффекта выполняет официальный оценщик.
  • При отсутствии убедительного прибыльного плана возможна резервная кампания с малой экспозицией. Она явно помечается в журнале и тоже может оказаться убыточной.
  • Аудит консервативно отклоняет пустые аудитории, сегменты больше 5000 и превышение остатков после пилотов. Он проверяет корректность, но не рассчитывает истинный финансовый эффект.
  • Нет рабочей интеграции с биллингом, CRM и отправкой сообщений. Оценка на реальных данных не проводилась.

Развёрнутая версия

Публичного развёртывания нет. Решение запускается локально через Agent.act(env); созданный HTML-отчёт открывается в браузере без сервера.

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

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

ssdnten 6aimoldird-maker 1aimoldird-maker 1

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

  • 2026-09-23 17:06Merge pull request #4 from BAITC-Hacks/codex/final-documentationssdnten
  • 2026-09-23 17:06Align final documentation with verified tests and team contributionsdsarzhan
  • 2026-09-23 16:42Merge pull request #3 from BAITC-Hacks/participant-1/reportssdnten
  • 2026-09-23 16:39Добавлены остатки бюджета и контактов в отчётdsarzhan
  • 2026-09-23 16:38Merge pull request #2 from BAITC-Hacks/participant-2/validationaimoldird-maker
  • 2026-09-23 16:36Add independent agent resilience testsaimoldird-maker
  • 2026-09-23 16:01Merge pull request #1 from BAITC-Hacks/codex/campaign-agentssdnten
  • 2026-09-23 16:00Build adaptive tariff campaign agent with reproducible evaluationdsarzhan
Структура репозитория (38 файлов)
.gitignore
PARTICIPANT_GUIDE.md
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/ACCEPTANCE.md
docs/DEMO.md
docs/TEAM_WORKFLOW.md
docs/organizer_files.sha256.json
environment.py
feature_dictionary.csv
local_eval.py
make_submission.py
mock_environment.py
plan_validation.py
reports/benchmark.json
reports/campaign_report.html
reports/local_eval.txt
reports/local_eval_10.txt
reports/plan_audit.json
reports/tests.txt
reports/verification.json
requirements-lock.txt
requirements.txt
scoring_core.py
submission.csv
tariff_dictionary.csv
tests/test_agent.py
tests/test_agent_resilience.py
tests/test_plan_validation.py
tools/benchmark.py
tools/build_report.py
tools/check_package.py
Ветки (5)

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

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

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