AAYMA
RU
Войти

False Positive

Детерминированный агент для кейса Beeline: выбирает, каким абонентам предложить смену тарифа, какой тариф и через какой канал.

Рабочий MVP
Команда «Sib» 6💬 0 комментариевс 23 сентября 2026 г.

О проекте

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

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

Суть

Детерминированный агент для кейса Beeline: выбирает, каким абонентам предложить смену тарифа, какой тариф и через какой канал. Проводит до трёх пилотов и возвращает 1–10 кампаний. Есть демо на FastAPI и фронтенд на React.

Как устроено

Агент делит абонентов на сегменты по текущему тарифу и потреблению, предлагает следующий по цене публичный тариф и самый дешёвый канал. Затем он проводит до трёх пилотов в mock-среде и по наблюдениям выбирает допустимый финальный план; если пилоты неудачны, срабатывает fallback. Для судейства есть интерфейс agent.py:Agent.act(env), для демо — FastAPI с четырьмя эндпоинтами /api/v1 и официальным evaluator. Советник на LLM (OpenAI) опционален и в принятии решений не нужен.

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

  • сегментация по тарифу/потреблению
  • адаптивные пилоты
  • fallback-стратегия
  • официальный scorer/local_eval

Метрики

Seed 42: 3 пилота, 1 кампания, 1 285 контактов, net≈4 042; прибыльны 6 из 10 seed; 82 теста PASS

Особенности

Разработка шла через цепочку промптов Codex: архитектура, фронтенд, бэкенд, интеграция. Решения зафиксированы в ADR (docs/decisions), передача работы между этапами — в handoff-документах, API описан JSON-контрактами и openapi.yaml.

Стек

Python · FastAPI · React · TypeScript · Vite · Vitest · pytest

Модели

OpenAI (опционально)


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

README

README.md

False Positive — Beeline Tariff Marketing Campaigns

Агент решает, каким абонентам предложить смену тарифа, какой тариф и канал выбрать. В кейсе 23 441 абонент, бюджет 100 000 у.е., максимум 15 000 контактов и 20 пилотов. Пилоты и финальные кампании расходуют общие ресурсы. Итог — 1–10 кампаний; критерий — прирост ARPU за вычетом затрат на коммуникации.

Текущий агент — детерминированный baseline: строит сегменты по текущему тарифу и потреблению, выбирает следующий по публичной цене тариф и самый дешёвый канал, проводит до трёх пилотов и выбирает допустимый финальный план по наблюдениям. При неудачных пилотах возвращает fallback. Это не чат-бот: LLM, API-ключи и .env для принятия решений не нужны.

Работают два контура:

  • Judge: agent.py:Agent.act(env) -> list[dict], независимое ядро false_positive/.
  • Demo: FastAPI backend.app.main:app, четыре endpoint /api/v1, отдельная mock-среда на запуск и официальный evaluator для KPI. Frontend ещё не создан.

Быстрый запуск backend

Команды из корня, PowerShell. В текущей рабочей копии .venv подготовлена. В новом клоне сначала создайте её установленным Python: py -3 -m venv .venv (или python -m venv .venv, если Python доступен в PATH).

py -3.14 -m venv .venv
$env:PYTHONUTF8 = '1'
.\.venv\Scripts\python.exe -m pip install -r backend/requirements-dev.txt
.\.venv\Scripts\python.exe -m uvicorn backend.app.main:app --reload

API: http://127.0.0.1:8000, интерактивная документация: /docs. Во втором терминале:

.\.venv\Scripts\python.exe -m backend.smoke

Сценарий: POST /api/v1/runs с {"seed":42,"mode":"mock"} → 202 и run_id → GET /api/v1/runs/{run_id} до completed или failed. Детали и PowerShell-пример: backend/README.md.

Как тестировать агента

Из корня проекта в PowerShell. Команды организаторов:

$env:PYTHONUTF8 = '1'
$env:FP_LLM_PROVIDER = 'off'
.\.venv\Scripts\python.exe local_eval.py
.\.venv\Scripts\python.exe local_eval.py --runs 10
.\.venv\Scripts\python.exe make_submission.py

Один прогон показывает пилоты, затраты и net; десять seed — устойчивость. make_submission.py создаёт submission.csv. Mock использует судейский скоринг, но эффекты искусственные: результат не прогнозирует балл финала.

Полная автоматическая проверка (нужны backend/requirements-dev.txt):

.\.venv\Scripts\python.exe scripts/verify_core.py
git diff --check

Один прогон показывает пилоты, затраты и net; десять seed — устойчивость. make_submission.py создаёт submission.csv. Mock воспроизводит механику судейства, но не скрытые эффекты финала. Seed 42: 3 пилота, 1 финальная кампания, 1 285 контактов, net≈4 042; из seed 0–9 прибыльны 6.

Последняя проверка: 82 tests PASS, включая реальный HTTP smoke. Полный verifier — FAIL из-за существующих CRLF в 14 organizer-файлах рабочей копии; Git HEAD и manifest совпадают. Подробности — PROJECT_STATE.

Документация и работа команды

Архитектура, API v1, состояние, правила, backend handoff. Данные синтетические; источники — THIRD_PARTY_NOTICES. Codex оставляет рабочее дерево для review; commit/push выполняет человек.

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

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

Zhan Murz 9FlayPr 6Darkend-ii 4

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

  • 2026-09-23 17:59Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibFlayPr
  • 2026-09-23 17:54BACK-FRONT END FIX: Fixing the issue with the backend and frontend integration, ensuring that the API keys are correctly set up and that the HTTP transport layer is functioning as expected. This commiFlayPr
  • 2026-09-23 17:43prepareZhan Murz
  • 2026-09-23 17:30evaculate strategy fixZhan Murz
  • 2026-09-23 17:01Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibZhan Murz
  • 2026-09-23 16:58backend: profitability review and adaptive strategy with optional reasoning.Zhan Murz
  • 2026-09-23 16:43Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibDarkend-ii
  • 2026-09-23 16:38frontend fixDarkend-ii
Все коммиты (19)
  • 2026-09-23 15:44Backend: Add FastAPI endpoints, isolated strategy runs, KPI validation, CORS, and API tests. Update setup documentation and backend handoff.Zhan Murz
  • 2026-09-23 15:04Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibFlayPr
  • 2026-09-23 15:02Выполненный первый архитектурный промпт, который описывает архитектуру проекта и его компоненты.FlayPr
  • 2026-09-23 14:47Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibZhan Murz
  • 2026-09-23 14:46Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibDarkend-ii
  • 2026-09-23 14:45conflict markers:Darkend-ii
  • 2026-09-23 14:44public data fixZhan Murz
  • 2026-09-23 14:43Merge branch 'main' of https://github.com/BAITC-Hacks/hack-9a732c09-sibFlayPr
  • 2026-09-23 14:42;FlayPr
  • 2026-09-23 14:41test configZhan Murz
  • 2026-09-23 13:42env setZhan Murz
Структура репозитория (168 файлов)
.codex/prompts/02-frontend.md
.codex/prompts/03-backend.md
.codex/prompts/04-integration.md
.gitattributes
.gitignore
AGENTS.md
False_Positive_Codex_Architecture_Prompt_Sequential.md
PARTICIPANT_GUIDE.md
PARTICIPANT_GUIDE.pdf
README.md
THIRD_PARTY_NOTICES.md
agent.py
agent_template.py
backend/.env.example
backend/README.md
backend/__init__.py
backend/app/__init__.py
backend/app/main.py
backend/app/runner.py
backend/app/schemas.py
backend/app/service.py
backend/app/summary.py
backend/requirements-dev.lock
backend/requirements-dev.txt
backend/requirements.txt
backend/smoke.py
contracts/README.md
contracts/campaign.schema.json
contracts/examples/case-summary.json
contracts/examples/error.json
contracts/examples/health.json
contracts/examples/run-accepted.json
contracts/examples/run-completed.json
contracts/examples/run-failed.json
contracts/examples/run-running.json
contracts/openapi.yaml
customer_profile.csv
data/arpu_monthly.csv
data/change_tariff.csv
data/dict_tariff.csv
data/traffic.csv
docs/ARCHITECTURE.md
docs/COLLABORATION.md
docs/OWNERSHIP.md
docs/PROGRESS.md
docs/PROJECT_STATE.md
docs/VERIFICATION_REPORT.md
docs/benchmarks/README.md
docs/benchmarks/adaptive-diagnostic.json
docs/benchmarks/adaptive-holdout.json
docs/benchmarks/adaptive-initial-diagnostic.json
docs/benchmarks/nvidia-smoke.json
docs/benchmarks/openai-diagnostic.json
docs/benchmarks/openai-smoke.json
docs/decisions/0001-sequential-modular-monorepo.md
docs/decisions/0002-adaptive-pilots-and-optional-llm.md
docs/decisions/0003-openai-only.md
docs/decisions/0004-demo-evidence-and-advisor-validation.md
docs/handoffs/01-architecture-to-frontend.md
docs/handoffs/02-frontend-to-backend.md
docs/handoffs/02-frontend-to-backend.md.template
docs/handoffs/03-backend-to-integration.md
docs/handoffs/03-backend-to-integration.md.template
docs/handoffs/04-adaptive-agent-to-integration.md
docs/handoffs/05-openai-only-to-integration.md
docs/handoffs/06-verification-to-frontend.md
docs/handoffs/07-integration-to-submission.md
docs/handoffs/07-requirements-check-to-integration.md
docs/handoffs/08-readme-technical-review.md
docs/handoffs/README.md
docs/organizer-manifest.json
environment.py
false_positive/__init__.py
false_positive/advisors/__init__.py
false_positive/advisors/base.py
false_positive/agent.py
false_positive/domain/__init__.py
false_positive/domain/constraints.py
false_positive/domain/models.py
false_positive/domain/protocols.py
false_positive/observability/__init__.py
false_positive/observability/trace.py
false_positive/strategy/__init__.py
false_positive/strategy/baseline.py
false_positive/strategy/candidates.py
false_positive/strategy/engine.py
false_positive/strategy/evidence.py
false_positive/strategy/fallback.py
false_positive/strategy/legacy.py
feature_dictionary.csv
frontend/.env.example
frontend/README.md
frontend/index.html
frontend/package-lock.json
frontend/package.json
frontend/scripts/live-api-smoke.mjs
frontend/src/App.test.tsx
frontend/src/App.tsx
frontend/src/api/client.test.ts
frontend/src/api/client.ts
frontend/src/api/errors.ts
frontend/src/api/httpTransport.test.ts
frontend/src/api/httpTransport.ts
frontend/src/api/mockTransport.test.ts
frontend/src/api/mockTransport.ts
frontend/src/api/types.ts
frontend/src/components/CaseOverview.tsx
frontend/src/components/RunLauncher.tsx
frontend/src/components/RunResults.tsx
frontend/src/components/RunStatus.tsx
frontend/src/components/SourceBadge.tsx
frontend/src/components/states.test.tsx
frontend/src/config.test.ts
frontend/src/config.ts
frontend/src/format.ts
frontend/src/main.tsx
frontend/src/runState.ts
frontend/src/styles.css
frontend/src/test/setup.ts
frontend/src/vite-env.d.ts
frontend/tsconfig.app.json
frontend/tsconfig.json
frontend/tsconfig.node.json
frontend/vite.config.ts
local_eval.py
make_submission.py
mock_environment.py
public/HackAlem AI_ Beeline Tariff Marketing Campaigns Case (1).docx
public/HackAlem AI_ Beeline Tariff Marketing Campaigns Case.docx
public/beeline_case_participants/PARTICIPANT_GUIDE.md
public/beeline_case_participants/PARTICIPANT_GUIDE.pdf
public/beeline_case_participants/agent_template.py
public/beeline_case_participants/customer_profile.csv
public/beeline_case_participants/data/arpu_monthly.csv
public/beeline_case_participants/data/change_tariff.csv
public/beeline_case_participants/data/dict_tariff.csv
public/beeline_case_participants/data/traffic.csv
public/beeline_case_participants/environment.py
public/beeline_case_participants/feature_dictionary.csv
public/beeline_case_participants/local_eval.py
public/beeline_case_participants/make_submission.py
public/beeline_case_participants/mock_environment.py
public/beeline_case_participants/scoring_core.py
public/beeline_case_participants/tariff_dictionary.csv
requirements-dev.lock
requirements-dev.txt
requirements.txt
runtime/__init__.py
runtime/configured.py
runtime/llm.py
scoring_core.py
scripts/build_contract_examples.py
scripts/evaluate_strategy.py
scripts/verify_core.py
submission.csv
tariff_dictionary.csv
tests/__init__.py
tests/backend/__init__.py
tests/backend/test_api.py
tests/backend/test_live_http.py
tests/backend/test_runner.py
tests/support.py
tests/test_adaptive_strategy.py
tests/test_agent_contract.py
tests/test_contract_fixtures.py
tests/test_core_models.py
tests/test_llm_integration.py
tests/test_verification.py

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

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

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