О проекте
Команда: Butterfly
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Прототип
Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)
Суть
Приложение на Go для протоколирования встреч: загрузка записи или текста, поручения с цитатами-источниками, ручная проверка, экспорт в PDF/DOCX/JSON. ASR на NVIDIA Riva, LLM Nemotron на Brev. Демо работает на синтетических данных.
Как устроено
Backend на Go принимает аудио или текст. Riva gRPC (через Python SDK) распознаёт речь, локальный Nemotron по HTTP API извлекает поручения с цитатами. Python используется только для экспорта PDF/DOCX и совместимости с Riva SDK. Через MCP-bridge к HackAlem MCP подключены маршрутизация, анонимный отчёт проверки и отправка статуса в Telegram. Для регресса есть eval-скрипт на 15 кейсов. По README цепочка ASR→LLM подтверждена только на 30 секундах русского аудио, полный путь через Brev и качество KK/mixed не проверены.
Ключевые решения
- Riva gRPC ASR
- quote-grounded action items
- MCP bridge
- regression eval
Метрики
Regression eval: 15 passed, 0 failed
Особенности
Сначала команда закоммитила ТЗ Voice Router, потом переключилась на протоколы встреч. Self-hosted стек NVIDIA (Riva и Nemotron на Brev GPU). Ограничения README перечисляет честно.
Стек
Go · Python · HTML/CSS/JS · Docker Compose · GitHub Actions · NVIDIA Brev
Модели
NVIDIA Nemotron · NVIDIA Riva ASR
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-c52f5e57-butterfly.
README
README.mdButterfly — протоколы встреч
Go-приложение: загрузка записи или текста, поручения с цитатами, ручная проверка, экспорт PDF/DOCX/JSON. Интерфейс выполнен по предоставленному дизайну. Готовые HackAlem MCP и Fly demo подключаются как отдельные процессы.
Запуск
Требуются Go 1.27+, Python 3.10+ для локального экспорта.
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env
./scripts/run.sh
Открыть http://127.0.0.1:8000, нажать «Демо». Данные явно помечены синтетическими.
Для готовых MCP/Fly указать HACKALEM_HOME — каталог установленного HackAlem
с bin/hackalem-mcp и bin/hackalem-demo-api. Через MCP выполняются маршрутизация,
анонимный отчёт проверки, обратная связь Fly и явная отправка статуса в Telegram.
Основной backend написан на Go. Python используется только для PDF/DOCX и совместимости с установленным Riva SDK, а не как HTTP-сервер.
Nemotron на Brev
Модели уже запущены отдельной сессией. Следовать
актуальной инструкции интеграции
и параметрам и результатам VM.
ASR — Riva gRPC, LLM — локальный Nemotron HTTP API. Нельзя подставлять адрес
127.0.0.1 VM в конфигурацию сервера, работающего на другой машине.
В репозитории проверены синтетический сценарий, экспорт, права доступа и реальные процессы MCP/Fly. Другой сессией подтверждён ASR→LLM на 30 секундах русского аудио. Полный путь нашего приложения через Brev, публичный HTTPS backend, Vercel, диаризация и качество KK/mixed пока не подтверждены.
Для отдельного frontend: в настройках указать HTTPS backend; на backend задать
точный BUTTERFLY_CORS_ORIGINS, BUTTERFLY_COOKIE_SAMESITE=none и
BUTTERFLY_SECURE_COOKIE=true. Same-origin размещение проще для браузерных cookies.
Telegram требует серверные TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID и отправляет
только статус по кнопке пользователя; тексты встреч в сообщение не включаются.
Проверки
go test ./...
go vet ./...
.venv/bin/pip install -r requirements-dev.txt
.venv/bin/python -m pytest -q
node --check frontend/app.js
# При запущенном сервере, без отправки сообщений в Telegram:
node scripts/smoke.mjs
Исходные аудио, секреты, runtime и протоколы пользователей не коммитятся. Архитектура, этапы и доказательства, исследование.
Docker и eval
docker compose up --build -d backend
node scripts/eval.mjs --base http://127.0.0.1:8000
Docker Compose / Brev profile ·
Что измеряет eval · локальный CI: sh scripts/check.sh.
Regression eval: 15 passed, 0 failed. Docker-файлы подготовлены; запуск контейнера
здесь не проверен, поскольку Docker CLI отсутствует.
Авторы коммитов
История коммитов
- 2026-09-23 17:59build: add release Compose, regression eval and CICodex
- 2026-09-23 17:54test: complete S4 integration and isolation checksCodex
- 2026-09-23 17:53feat: complete S3 Go meeting workflow and PDF-based frontendCodex
- 2026-09-23 17:35Add Butterfly website design PDF and handoff assetsCodex
- 2026-09-23 17:24build: complete S2 application skeletonCodex
- 2026-09-23 17:14docs: publish two-hour Butterfly implementation planCodex
- 2026-09-23 16:49Document meeting minutes project and Brev setup; remove voice router specCodex
- 2026-09-23 15:01Add meeting minutes technical specificationAmina
Все коммиты (9)
- 2026-09-23 14:58Add Voice Router technical specificationAmina
Структура репозитория (75 файлов)
.dockerignore .env.example .gitattributes .github/workflows/ci.yml .gitignore Dockerfile README.md butterfly/__init__.py butterfly/assets/fonts/DejaVuSans-Bold.ttf butterfly/assets/fonts/DejaVuSans.ttf butterfly/assets/fonts/LICENSE.txt butterfly/exports.py cmd/butterfly/main.go cmd/butterfly/main_test.go compose.yaml demo/eval/manual-unknown.json demo/meeting.json docs/architecture.md docs/deployment/brev-gpu.md docs/deployment/butterfly-brev-adapter.md docs/deployment/docker.md docs/deployment/nemotron-integration-handoff.md docs/deployment/nemotron-preparation-report.md docs/deployment/nemotron-runtime-report.md docs/deployment/runtime-handoff.json docs/evaluation.md docs/final-review.md docs/provider-handoff.md docs/research/archive/build-plan-before-2h-r4.json docs/research/build-plan-envelope.json docs/research/build-plan-meeting-minutes.md docs/research/build-plan-snapshot.json docs/research/build-plan-status.json docs/research/corpus-evidence.json docs/research/handoff.json docs/research/learning-envelope.json docs/research/meeting-minutes-source.txt docs/research/report-envelope.json docs/research/source-metadata.json docs/research/theme-research-meeting-minutes.md docs/reuse-decision.md docs/stage-evidence.md frontend/app.js frontend/index.html frontend/styles.css go.mod internal/app/actions.go internal/app/api.go internal/app/app_test.go internal/app/demo.go internal/app/providers.go internal/app/providers_test.go internal/app/riva.go internal/app/riva_test.go internal/app/store.go internal/integrations/export.go internal/integrations/runtime.go internal/integrations/runtime_test.go internal/mcpbridge/client.go internal/mcpbridge/client_test.go meeting-minutes-technical-specification.pdf pyproject.toml requirements-dev.in requirements-dev.txt requirements.in requirements.txt scripts/check.sh scripts/docker-smoke.sh scripts/eval.mjs scripts/export_protocol.py scripts/nemotron_smoke.py scripts/riva_transcribe.py scripts/run.sh scripts/smoke.mjs tests/test_exports.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.