HackAlem AI
Платформа, где бизнес с помощью AI уточняет описание проблемы, получает редактируемую карточку задачи с рейтингом готовности 0–100 и публикует её…
О проекте
Команда: Akyldar
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP
Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд
Суть
Платформа, где бизнес с помощью AI уточняет описание проблемы, получает редактируемую карточку задачи с рейтингом готовности 0–100 и публикует её; студенческие команды находят задачу в каталоге и отправляют предложения, которые бизнес вручную принимает или отклоняет.
Как устроено
Go-бэкенд на net/http + SQLite (modernc.org/sqlite) хранит задачи, команды и предложения; отдельный Go-модуль ai через OpenAI возвращает 3–5 уточняющих вопросов и карточку из 11 полей по JSON-схемам с валидацией, при отсутствии ключа включается явный fallback (заголовок X-AI-Mode). Рейтинг готовности считает backend детерминированно по 9 категориям (контекст, данные, критерии успеха и т.д.) с уровнями draft/working/ready/priority. Фронтенд на React 19 + Vite 7.
Ключевые решения
- JSON schema validation
- deterministic readiness scoring
- LLM fallback
- prompt templates
Особенности
AI не рассчитывает рейтинг и не придумывает факты: оценку готовности даёт прозрачная рубрика на backend, а режим ответа (live/fallback) явно виден в заголовке. Хорошее покрытие Go-тестами и чистое разделение backend/ai модулей.
Стек
Go · net/http · SQLite · React · Vite
Модели
OpenAI
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-ef9b9705-akyldar.
README
README.mdHackAlem AI
HackAlem AI превращает неструктурированную бизнес-проблему в проверяемую задачу для студенческих команд.
Проблема
Бизнесу часто трудно описать задачу так, чтобы команда сразу поняла контекст, ограничения и ожидаемый результат. Из-за неполных вводных предложения студентов оказываются менее точными.
Решение
Платформа помогает бизнесу уточнить описание с помощью AI, получить редактируемую карточку, увидеть объективный рейтинг готовности и вручную опубликовать задачу. Студенты находят опубликованные задачи и отправляют предложения, а бизнес самостоятельно принимает или отклоняет их.
Основной сценарий
- Бизнес создаёт черновик с кратким описанием.
- AI задаёт уточняющие вопросы.
- AI формирует редактируемую карточку задачи.
- Backend рассчитывает рейтинг готовности.
- Бизнес дополняет карточку и сохраняет изменения.
- Бизнес подтверждает и публикует задачу.
- Студент видит задачу в каталоге.
- Студент отправляет предложение.
- Бизнес вручную принимает или отклоняет предложение.
Реализовано
- REST API на Go и стандартном
net/http. - SQLite через
database/sqlиmodernc.org/sqlite. - Инициализация схемы и опциональные идемпотентные demo-данные.
- Создание, редактирование, подтверждение и публикация задач.
- Каталог опубликованных задач с фильтрами по теме, уровню и рейтингу.
- AI endpoints для вопросов и карточки задачи.
- Создание и просмотр предложений команд.
- Независимое принятие или отклонение каждого предложения.
- Русский пользовательский интерфейс на React.
Геймификация
Рейтинг готовности рассчитывается backend по шкале 0–100:
| Категория | Баллы |
|---|---|
| Контекст | 10 |
| Потребность | 10 |
| Данные и материалы | 20 |
| Ожидаемый результат | 15 |
| Критерии успеха | 15 |
| Ограничения | 10 |
| Пользователи | 10 |
| Контакт | 5 |
| Формат взаимодействия | 5 |
Уровни: 0–39 — черновик, 40–69 — рабочая, 70–89 — готовая, 90–100 — приоритетная. Низкий рейтинг не скрывает опубликованную задачу из каталога.
AI
POST /api/ai/questionsвозвращает 3–5 уточняющих вопросов.POST /api/ai/cardвозвращает карточку из 11 строковых полей задачи.- AI не придумывает неподтверждённые факты и не рассчитывает рейтинг.
- Карточка остаётся редактируемой человеком.
X-AI-Mode: liveилиX-AI-Mode: fallbackпоказывает фактический режим ответа.- При отсутствии ключа или недоступности провайдера используется явный fallback без внешнего API-вызова.
Архитектура
React frontend
|
v
Go backend + SQLite
|
+-- tasks / rating / catalog / proposals
|
+-- AI module
|
v
OpenAI provider
backend/ и ai/ — отдельные Go-модули. При запуске backend/cmd/server AI-модуль подключается к общему net/http серверу.
Технологии
- Go 1.25+
net/httpdatabase/sql- SQLite через
modernc.org/sqlite - React 19
- Vite 7
- стандартный fetch API
Структура проекта
backend/ Go API, SQLite, rating, catalog and proposals
ai/ Go AI service, validation and fallback provider flow
frontend/ React/Vite client
docs/ jury demo scenario
Быстрый запуск
В PowerShell из корня проекта:
Set-Location .\backend
$env:AI_FORCE_FALLBACK = 'true'
$env:SEED_DEMO_DATA = 'true'
go run ./cmd/server
Backend слушает http://localhost:8080. В отдельном PowerShell:
Set-Location .\frontend
npm install
Copy-Item .env.example .env -ErrorAction SilentlyContinue
npm run dev
Frontend будет доступен по адресу http://localhost:5173. Полный сценарий для жюри находится в docs/demo-script.md.
Environment variables
Backend читает переменные процесса; dotenv-файлы автоматически не загружаются:
| Переменная | Обязательность | Назначение |
|---|---|---|
DATABASE_PATH | необязательно | путь к SQLite, по умолчанию ./data/app.db |
FRONTEND_ORIGIN | необязательно | разрешённый origin, по умолчанию http://localhost:5173 |
SEED_DEMO_DATA | необязательно | true включает идемпотентные demo-данные |
OPENAI_API_KEY | необязательно | серверный ключ провайдера; без него используется fallback |
OPENAI_MODEL | необязательно | модель провайдера; без неё используется fallback |
AI_TIMEOUT_SECONDS | необязательно | timeout AI, по умолчанию 15 |
AI_MAX_ATTEMPTS | необязательно | число попыток AI, по умолчанию 2 |
AI_FORCE_FALLBACK | необязательно | true запрещает обращения к провайдеру |
Frontend использует переменные сборки VITE_API_URL (по умолчанию http://localhost:8080), VITE_USE_MOCK (явный локальный режим без backend) и VITE_DEMO_TEAM_ID (по умолчанию 1).
Demo mode
Для демонстрации без API-ключа используйте:
$env:SEED_DEMO_DATA = 'true'
$env:AI_FORCE_FALLBACK = 'true'
Повторный запуск seed не дублирует задачи, команды и предложения.
Проверка
Введите Хотим автоматизировать работу склада, ответьте на вопросы AI, сохраните карточку, дополните поля, подтвердите и опубликуйте задачу. Затем откройте её в режиме студента, отправьте предложение и обработайте его в режиме бизнеса.
Тесты
Set-Location .\backend
go vet ./...
go test -count=1 ./...
Set-Location ..\ai
go vet ./...
go test -count=1 ./...
Set-Location ..\frontend
npm run build
В frontend нет отдельных lint- или test-скриптов.
API
GET /api/healthPOST /api/tasksGET /api/tasksGET /api/tasks/{id}PUT /api/tasks/{id}GET /api/tasks/{id}/ratingPOST /api/tasks/{id}/confirmPOST /api/tasks/{id}/publishPOST /api/tasks/{id}/proposalsGET /api/tasks/{id}/proposalsPATCH /api/proposals/{id}/statusPOST /api/ai/questionsPOST /api/ai/card
Ограничения
Это MVP без аутентификации, JWT, real-time чата, уведомлений, календаря, файлового хранилища и автоматического назначения команд. Идентификатор команды вводится в форме; отдельного team-list endpoint нет. Fallback AI задаёт вопросы и сохраняет исходное описание, а неизвестные поля карточки заполняются человеком.
Команда
Состав команды и роли не указаны в текущем репозитории.
Авторы коммитов
История коммитов
- 2026-09-23 17:44chore: remove generated files from repositoryAdiyat Nurkenuly
- 2026-09-23 17:36merge: integrate final hackathon projectAdiyat Nurkenuly
- 2026-09-23 17:32chore: finalize project for hackathon demoAdiyat Nurkenuly
- 2026-09-23 17:26chore: finalize project for hackathon demoAdiyat Nurkenuly
- 2026-09-23 16:51fix(frontend): unify interface languageAdiyat Nurkenuly
- 2026-09-23 16:23docs: document frontend setup and flowbekaryszhasuzak2007
- 2026-09-23 16:23feat: add frontend applicationbekaryszhasuzak2007
- 2026-09-23 16:19feat(integration): connect AI module to backendAdiyat Nurkenuly
Все коммиты (25)
- 2026-09-23 16:06docs: document frontend setup and flowbekaryszhasuzak2007
- 2026-09-23 16:04feat(ai): add validated task drafting module and handoff docsdaniarulyabubakyr
- 2026-09-23 16:03feat: add frontend applicationbekaryszhasuzak2007
- 2026-09-23 15:49feat(ai): add validated task drafting module and handoff docsdaniarulyabubakyr
- 2026-09-23 15:38wip: save current progressAdiyat Nurkenuly
- 2026-09-23 15:25chore(backend): finalize integration and demo readinessAdiyat Nurkenuly
- 2026-09-23 15:14feat(seed): add deterministic demo dataAdiyat Nurkenuly
- 2026-09-23 15:06feat(proposals): add manual business decisionAdiyat Nurkenuly
- 2026-09-23 14:57feat(proposals): add team proposal submissionAdiyat Nurkenuly
- 2026-09-23 14:45feat(catalog): add task catalog filters and sortingAdiyat Nurkenuly
- 2026-09-23 14:39feat(tasks): add confirmation and publishing workflowAdiyat Nurkenuly
- 2026-09-23 14:31feat(rating): add task readiness scoringAdiyat Nurkenuly
- 2026-09-23 14:24feat(tasks): add editable task cardAdiyat Nurkenuly
- 2026-09-23 14:19feat(tasks): add task draft creation and retrievalAdiyat Nurkenuly
- 2026-09-23 13:50fix(server): handle server shutdown errorAdiyat Nurkenuly
- 2026-09-23 13:45feat(database): add SQLite initializationAdiyat Nurkenuly
- 2026-09-23 13:35chore(backend): bootstrap Go API serverAdiyat Nurkenuly
Структура репозитория (88 файлов)
.gitignore README.md ai/.env.example ai/.gitignore ai/PLAN.md ai/README.md ai/assets.go ai/cmd/demo/main.go ai/config.go ai/config_test.go ai/docs/demo.md ai/docs/integration-checklist.md ai/docs/integration.md ai/docs/readme-section.md ai/docs/test-results.md ai/fallback.go ai/fixtures_test.go ai/go.mod ai/grounding.go ai/handlers.go ai/handlers_test.go ai/prompts/card.txt ai/prompts/questions.txt ai/provider.go ai/provider_test.go ai/run.ps1 ai/schemas/card.schema.json ai/schemas/questions.schema.json ai/service.go ai/service_test.go ai/testdata/cards.json ai/testdata/drafts.json ai/testdata/evaluation_cases.json ai/testdata/proposals.json ai/testdata/teams.json ai/types.go ai/validation.go ai/validation_test.go backend/.env.example backend/.gitignore backend/README.md backend/cmd/server/main.go backend/cmd/server/main_test.go backend/go.mod backend/go.sum backend/internal/database/database.go backend/internal/database/database_test.go backend/internal/database/schema.go backend/internal/httpapi/cors.go backend/internal/httpapi/cors_test.go backend/internal/httpapi/end_to_end_test.go backend/internal/httpapi/proposal_handler.go backend/internal/httpapi/proposal_status_handler.go backend/internal/httpapi/proposal_status_handler_test.go backend/internal/httpapi/router.go backend/internal/httpapi/router_test.go backend/internal/httpapi/task_handler.go backend/internal/httpapi/task_handler_test.go backend/internal/model/proposal.go backend/internal/model/task.go backend/internal/model/team.go backend/internal/rating/rating.go backend/internal/rating/rating_test.go backend/internal/repository/proposal_repository.go backend/internal/repository/proposal_repository_test.go backend/internal/repository/task_list_test.go backend/internal/repository/task_repository.go backend/internal/repository/task_repository_test.go backend/internal/repository/team_repository.go backend/internal/repository/team_repository_test.go backend/internal/seed/seed.go backend/internal/seed/seed_test.go docs/demo-script.md frontend/.env.example frontend/.gitignore frontend/README.md frontend/index.html frontend/integration.md frontend/package-lock.json frontend/package.json frontend/src/App.jsx frontend/src/api/ai.js frontend/src/api/client.js frontend/src/api/proposals.js frontend/src/api/tasks.js frontend/src/data.js frontend/src/main.jsx frontend/src/style.css
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.