AAYMA
RU
Войти

Butterfly

Приложение на Go для протоколирования встреч: загрузка записи или текста, поручения с цитатами-источниками, ручная проверка, экспорт в PDF/DOCX/JSON.

Прототип
Команда «Butterfly» 9💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: 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.md

Butterfly — протоколы встреч

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 отсутствует.

Звёзды
⭐ 0
Форки
1
Язык
Go
Последний push
в прошлом месяце
Коммиты
9
Авторы
2
Файлы
75
Ветки
4

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

Codex 7Amina 2

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

  • 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
Ветки (4)

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

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

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