О проекте
Команда: AI-CONNECT
Кейс HackAlem.ai: Телеком — Beeline
Стадия: Прототип
Задача кейса: Агент, который решает, каким абонентам какой тариф предложить (чистый прирост ARPU)
Суть
Автономный агент для кампаний по смене тарифа: сегментирует абонентов, запускает ограниченные пилоты и формирует до 10 финальных кампаний, максимизируя чистую прибыль в рамках бюджета и лимита контактов.
Как устроено
Agent.act(env) анализирует профили абонентов, историю смен тарифа и справочники, формирует гипотезы по сегментам, запускает env.run_pilot на выборках (до 20 пилотов), оценивает зашумлённый результат и выбирает финальные кампании. Ограничения: 10 кампаний, 5000 абонентов на кампанию, 15000 контактов, бюджет 100000, каждый абонент только в одной кампании. LLM (OpenAI/NVIDIA) используется опционально для генерации гипотез, без ключа работает эвристика. UI на Streamlit, есть local_eval и make_submission.
Ключевые решения
- сегментация абонентов
- пилотные эксперименты
- эвристический отбор кампаний
- LLM fallback
Стек
Python 3.11 · pandas · Streamlit · Docker · Docker Compose · python-dotenv
Модели
OpenAI API · NVIDIA API
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-774a573a-ai-connect.
README
README.mdAI-CONNECT: Autonomous Tariff Campaign Agent
Что делает проект
Проект реализует автономного агента для телеком-случая с таргетированными маркетинговыми кампаниями по смене тарифа. Его задача — анализировать профиль абонентов, выявлять сегменты, у которых переход на другой тариф может увеличивать ARPU, запускать ограниченные пилоты и формировать итоговый план кампаний до 10 решений.
Основная цель — максимизировать чистую прибыль при ограничениях по бюджету, числу контактов, количеству пилотов и правилам уникальности аудитории.
Что реализовано
В репозитории уже есть:
- Python-агент в
agent.pyс методомAgent.act(env); - среда выполнения и логика пилотных кампаний в
environment.py; - локальная мок-среда для отладки в
mock_environment.py; - Streamlit-интерфейс в
main.py; - утилиты
local_eval.pyиmake_submission.py; - контейнеризация через
Dockerfileиdocker-compose.yml; - набор синтетических данных в
customer_profile.csvи каталогеdata/; - базовая документация по задаче в
PARTICIPANT_GUIDE.md.
Сейчас проект поддерживает сценарий:
- загрузка аудитории и справочников;
- формирование гипотез;
- запуск пилотов на ограниченной выборке;
- оценка результатов по шумной метрике;
- формирование списка финальных кампаний для запуска.
Используемые технологии и архитектура
Технологии
- Python 3.11+
- pandas — обработка данных и сегментация
- Streamlit — веб-интерфейс
- OpenAI API / NVIDIA API — опциональная работа через LLM
- python-dotenv — загрузка переменных окружения
- Docker / Docker Compose — запуск в контейнере
- FastAPI / Uvicorn — в проекте присутствуют зависимости, но основная логика UI и агентской задачи реализована в Python/Streamlit
Архитектура
Проект построен как агентный рабочий поток:
CSV данные / справочники
|
v
Agent.act(env)
|
+--> анализ сегментов и тарифов
+--> формирование гипотез
+--> запуск env.run_pilot(...)
+--> оценка результата пилотов
+--> выбор финальных кампаний
|
v
Streamlit UI / локальная валидация / submission
Основная логика отделена от среды исполнения: агент видит только публичный интерфейс среды и не должен обходить её внутренние замыкания и скрытые данные.
Порядок установки и запуска
Локальная установка
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\activate
# Linux/macOS
# source .venv/bin/activate
pip install -r requirements.txt
Запуск приложения
streamlit run main.py --server.port 8000 --server.address 0.0.0.0
Приложение открывается по адресу:
http://localhost:8000
Запуск через Docker
docker compose up --build
Или:
docker build -t ai-connect-app .
docker run -p 8000:8000 --env-file .env ai-connect-app
Пример проверки
Проверка локальной оценки
python local_eval.py
Генерация файла для сабмита
python make_submission.py
Проверка интерфейса
Открыть в браузере:
http://localhost:8000
В интерфейсе доступен запуск автономного агента и вывод результатов по сгенерированным кампаниям.
Используемые данные и внешние сервисы
Данные
В проекте используются синтетические данные, соответствующие задаче хакатона:
customer_profile.csv— профили абонентов, текущие тарифы, сегменты ARPU, данные, звонки и прогноз ARPU;data/change_tariff.csv— история переходов между тарифами и изменение ARPU после смены;data/traffic.csv— показатели трафика, минут, SMS и других метрик;data/arpu_monthly.csv— ежемесячная выручка по абонентам;data/dict_tariff.csv— справочник параметров тарифов;feature_dictionary.csvиtariff_dictionary.csv— словари признаков и тарифных планов.
Внешние сервисы
- OpenAI API — опциональный источник рекомендаций для генерации гипотез;
- NVIDIA API — альтернативная интеграция LLM;
- переменные окружения из
.envдля ключей доступа.
Если API-ключи не заданы, агент использует fallback-эвристику, чтобы не падать и продолжать работу.
Известные ограничения
В проекте и в задаче есть ограничения, которые важно учитывать:
- максимум 10 финальных кампаний;
- максимум 5000 абонентов на одну кампанию;
- суммарно до 15000 контактов;
- бюджет до 100000 у.е.;
- не более 20 пилотов;
- каждый абонент должен участвовать не более чем в одной кампании;
- нельзя обходить среду через
__closure__,gcили чтение скрытых данных; - оценки на мок-среде не равны реальной продакшен-модели;
- LLM может быть недоступен или возвращать некорректный ответ, поэтому нужен fallback.
Ссылка на развёрнутую версию
На текущем этапе в репозитории и проектной конфигурации нет подтверждённой публичной ссылки на развёрнутую production-версию приложения. Если deployment появится позже, здесь нужно будет разместить ссылку вида:
https://your-deployed-app.example.com
Краткий итог
Этот проект объединяет:
- анализ данных и сегментацию аудитории;
- агентную логику выбора кампаний;
- пилотный экспериментальный подход для уменьшения неопределённости;
- визуализацию в Streamlit;
- контейнерный запуск и локальную валидацию.
Он предназначен для демонстрации и хакатон-решения задачи про маркетинговые кампании по смене тарифов с учётом ограничений бюджета и рисков.
Авторы коммитов
История коммитов
- 2026-09-23 17:06Change5Baurzhan91
- 2026-09-23 16:14Change4Baurzhan91
- 2026-09-23 15:28Change3Baurzhan91
- 2026-09-23 14:57Change2Baurzhan91
- 2026-09-23 13:47First_planBaurzhan91
Структура репозитория (21 файлов)
.gitignore Dockerfile PARTICIPANT_GUIDE.md PARTICIPANT_GUIDE.pdf README.md agent.py customer_profile.csv data/arpu_monthly.csv data/change_tariff.csv data/dict_tariff.csv data/traffic.csv docker-compose.yml environment.py feature_dictionary.csv local_eval.py main.py make_submission.py mock_environment.py requirements.txt scoring_core.py tariff_dictionary.csv
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.