AAYMA
RU
Войти

Warspaceman — Business Task Readiness Platform

Платформа, которая превращает расплывчатую бизнес-задачу в структурированный челлендж для студенческих команд.

Доведённый продукт
Команда «Warspaceman» 21💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Warspaceman
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Доведённый продукт

Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд

Суть

Платформа, которая превращает расплывчатую бизнес-задачу в структурированный челлендж для студенческих команд. В ней есть уточняющие вопросы от ИИ, редактируемая карточка задачи, оценка готовности от 0 до 100, каталог и ручной отбор предложений студентов бизнесом.

Как устроено

Бизнес вводит короткое описание задачи. ML-сервис на FastAPI возвращает ровно 3 уточняющих вопроса: через OpenAI structured output, а без ключа по правилам (детерминированный fallback). Из ответов собирается редактируемая карточка. Backend считает готовность по детерминированной формуле без LLM (контекст 20, данные 20, результат 15, критерии успеха 15, ограничения 10, пользователи 10, контакт 10) и присваивает уровень Draft/Working/Ready/Priority. Подтверждённые задачи публикуются в каталог, где студенты фильтруют их и подают предложения, а бизнес вручную принимает или отклоняет.

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

  • OpenAI structured output
  • rule-based fallback
  • детерминированная формула readiness score
  • микросервисная архитектура frontend/backend/ml

Особенности

Оценка готовности задачи считается прозрачной формулой, а не LLM, и служит механикой геймификации: чем полнее бриф, тем выше балл. ML вынесен в отдельный сервис с fallback по правилам, поэтому сценарий работает и без API-ключа. Есть 10 регрессионных тестов жизненного цикла.

Стек

Python · FastAPI · SQLAlchemy · SQLite · Pydantic · HTTPX · React · Vite · Nginx · Docker Compose

Модели

GPT-4o-mini


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

README

README.md

Warspaceman — Business Task Readiness Platform

Turn a vague business request into a clear, rated, student-ready challenge.

Warspaceman is a 5-hour hackathon MVP that helps businesses transform incomplete problem descriptions into structured challenges that student teams can understand and choose. The platform uses AI-assisted clarification, creates an editable task card, calculates a transparent readiness score from 0 to 100, publishes confirmed challenges to a shared catalog, and lets businesses manually review student proposals.

Hack Alem AI 2026 · Education Track · 5-hour MVP


Product Preview

Task catalog with readiness ratings

The catalog contains confirmed business challenges with visible readiness scores. Tasks remain available even when their descriptions are incomplete, allowing students to understand how much clarification may still be required before starting work.

The platform uses four readiness levels:

  • Draft — 0–39
  • Working — 40–69
  • Ready — 70–89
  • Priority — 90–100

The Problem

Business challenges often begin as short and incomplete descriptions.

A student team may not immediately know:

  • who will use the solution;
  • what data or materials are available;
  • what result is expected;
  • what constraints apply;
  • how success should be measured;
  • how the team can communicate with the business.

This means students spend time clarifying the task before they can actually start solving it.


Our Solution

Warspaceman turns a weak business brief into an actionable challenge through one complete workflow:

Business need
     ↓
AI clarification
     ↓
Editable task card
     ↓
Readiness score
     ↓
Improve missing information
     ↓
Publish to catalog
     ↓
Student proposal
     ↓
Manual business decision

AI assists with clarification and structuring, but the business user always remains in control of the final task.


1. Start with a Weak Business Brief

Create business task

The business starts by entering a short problem description in ordinary language.

The description does not need to be complete or perfectly structured. A topic can optionally be provided to give the AI additional context.

This keeps the first step simple: describe the actual problem first, then improve the task through clarification.


2. AI-Assisted Clarification

AI-generated clarification questions

The ML service returns exactly three targeted clarification questions.

The questions are designed to identify information that is missing from the initial business request and make the challenge more actionable for students.

The ML service supports two modes:

  • OpenAI provider mode when an API key is configured;
  • deterministic rule-based fallback when no provider key is available.

This means the main MVP flow can continue even if the external AI provider is unavailable.

The system does not automatically publish AI-generated content. The business reviews and controls the final task.


3. Human Answers Become Evidence

Answer clarification questions

The business answers the generated questions directly in the interface.

These answers are stored together with their original questions and are used to construct the editable task card.

The AI is not allowed to silently invent business facts. Generated information is based on the user's supplied description and answers, and the result remains editable before publication.


4. Readiness Scoring and Improvement

Editable task card and readiness score

After clarification, the platform creates an editable task card and calculates its readiness.

The interface shows:

  • current readiness score;
  • readiness level;
  • score breakdown;
  • missing information;
  • concrete improvement suggestions;
  • editable task fields.

The screenshot above shows a task with a score of 30/100, clearly indicating which information is still missing.

Rating Formula

The numeric rating is deterministic backend logic. It is not generated by the language model.

CategoryPoints
Context + business need20
Data and materials20
Expected result15
Success criteria15
Constraints10
Users10
Contact + interaction format10
Total100

Readiness Levels

ScoreLevel
0–39Draft
40–69Working
70–89Ready
90–100Priority

A low rating does not hide a confirmed challenge. It communicates how prepared the task currently is and what should be improved.


5. Task Quality Becomes Visible in the Catalog

Catalog with multiple readiness levels

The catalog can contain challenges at different preparation levels.

For example:

20/100  → Draft
55/100  → Working
70/100  → Ready
90/100  → Priority
100/100 → Priority

This is the central gamification mechanic of the project:

More useful task information
          ↓
Higher readiness score
          ↓
Clearer challenge for students

The score evaluates the quality and completeness of the task, not the popularity or reputation of the company that submitted it.


Student Choice

Student teams can browse published challenges and decide for themselves which task they want to work on.

They can:

  • browse the complete catalog;
  • filter by topic;
  • filter by readiness level;
  • sort by readiness score;
  • inspect the complete task brief;
  • create or select a team;
  • submit a proposal.

A proposal can contain:

  • solution idea;
  • implementation plan;
  • deadline;
  • prototype link.

The platform does not automatically assign teams to businesses.


Business Decision

After proposals are submitted, the business can review them manually.

For each proposal, the business can:

  • Accept
  • Reject

The final decision always remains with the business representative.

AI never automatically chooses the winning team.


End-to-End MVP

The implemented workflow is:

Draft
→ 3 clarification questions
→ Answers
→ Editable task card
→ Readiness score
→ Improvement
→ Publication
→ Catalog
→ Student proposal
→ Manual business decision

This flow was exercised through the running Docker application rather than simulated with presentation slides.


Architecture

Browser
   │
   ▼
React + Vite
Nginx
   │
   │ /api
   ▼
FastAPI Backend
   │
   ├── SQLAlchemy
   ├── SQLite
   ├── Deterministic Rating Service
   │
   └──── HTTP ────► FastAPI ML Service
                         │
                         ├── OpenAI provider mode
                         └── Rule-based fallback

Docker Compose runs three application services:

frontend
backend
ml

The backend stores data in SQLite using a persistent Docker volume.


Tech Stack

LayerTechnologies
FrontendReact, Vite, JavaScript, CSS, Nginx
BackendPython, FastAPI, SQLAlchemy, SQLite, Pydantic, HTTPX
AI / MLPython, FastAPI, OpenAI structured output, deterministic fallback
InfrastructureDocker, Docker Compose

Run the Full MVP

The easiest way to run the complete project is Docker Compose.

Requirements

  • Git
  • Docker Desktop

Clone

git clone https://github.com/BAITC-Hacks/hack-849af6d9-warspaceman.git
cd hack-849af6d9-warspaceman

Start

docker compose up --build -d

Open:

http://localhost:8080

Check Services

docker compose ps

Expected application services:

frontend
backend
ml

View Logs

docker compose logs -f frontend backend ml

Stop

docker compose down

The SQLite database is stored in a persistent Docker volume and survives a normal shutdown.

Do not run docker compose down -v unless you intentionally want to delete the persistent demo database.


Optional OpenAI Mode

The MVP can run without an OpenAI API key using the deterministic ML fallback.

To enable provider-backed AI generation, copy the example environment file:

Copy-Item .env.example .env.local

Then configure your local values:

FRONTEND_PORT=8080
OPENAI_API_KEY=your_key_here
OPENAI_MODEL=gpt-4o-mini

Launch using:

docker compose --env-file .env.local up --build -d

Never commit real API keys.


Verification

Backend Regression Tests

The backend regression suite was executed inside the Docker Linux environment:

docker compose run --rm --no-deps backend python -m unittest discover -s tests -v

Verified result:

Ran 10 tests
OK

The suite covers:

  • complete task lifecycle;
  • clarification answer normalization;
  • rating boundaries and breakdown;
  • invalid state transitions;
  • proposal creation and decisions;
  • ML failure fallback;
  • demo dataset behavior;
  • demo-admin access protection.

Live Integration

The complete browser flow produced successful backend requests for:

POST  /tasks
PATCH /tasks/{id}/answers
GET   /tasks/{id}/rating
PATCH /tasks/{id}
POST  /tasks/{id}/confirm
GET   /tasks

POST  /teams

POST  /tasks/{id}/proposals
GET   /tasks/{id}/proposals
PATCH /proposals/{id}

The running ML service also successfully handled:

POST /generate-questions
POST /form-card

This confirms service-to-service integration in the running MVP.

It is not intended as a comprehensive benchmark of AI model quality.


Demo Data

For local testing, the project includes private demo tooling that can populate the application with synthetic data.

The demo catalog contains examples at several readiness levels:

20  → Draft
55  → Working
70  → Ready
80  → Ready
90  → Priority
100 → Priority

This makes it possible to demonstrate catalog ordering and the readiness gamification mechanic without using real business data.


5-Minute Jury Demo

A complete demo can be shown in one prepared scenario.

1. Show the Catalog

Show business challenges with different readiness levels.

2. Switch to Business

Create a deliberately weak task description.

3. Generate Clarification Questions

Show the three AI-assisted questions.

4. Answer the Questions

Provide missing details.

5. Review the Editable Card

Show the initial readiness score and missing fields.

6. Improve the Task

Add missing information and press:

Save & recalculate

Show the score increasing.

7. Publish

Publish the challenge to the common catalog.

8. Switch to Student

Open the challenge.

Create or select a team and submit a proposal.

9. Switch Back to Business

Review the proposal.

10. Make the Decision

Accept or reject the proposal manually.

This demonstrates the entire task-to-team workflow inside the working MVP.


API Contract

The service interface is documented in:

docs/API_CONTRACT.md

This file is the source of truth for endpoint paths and request/response formats.


Repository Structure

.
├── frontend/             React/Vite application
├── backend/              FastAPI API, database, rating and proposals
├── ML/                   clarification and task-card AI service
├── docs/
│   ├── API_CONTRACT.md
│   └── screenshots/
├── docker-compose.yml
└── README.md

MVP Scope

The following functionality was intentionally excluded from the 5-hour MVP:

  • production authentication;
  • password recovery;
  • realtime chat;
  • notifications;
  • file storage;
  • payment;
  • automatic team assignment;
  • full project management;
  • production deployment infrastructure.

The scope was deliberately limited to delivering a reliable end-to-end workflow from a raw business need to a student proposal and a manual business decision.


Core Principle

The platform does not rank companies.

It measures how ready a specific business task is for students to work on.

The better the task is described, the clearer it becomes for student teams — and the higher its readiness score.

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

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

Sapar 13warspaceman 12MYATA 11Zhanibek Altynbek 11

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

  • 2026-09-23 17:55изменение скриншотовMYATA
  • 2026-09-23 17:51docs: finalize hackathon README with product screenshotsMYATA
  • 2026-09-23 17:47frontSapar
  • 2026-09-23 17:33Update README title to remove event namewarspaceman
  • 2026-09-23 17:28docs: remove decorative emojis from README headingswarspaceman
  • 2026-09-23 17:25docs: rewrite README for clear jury onboardingwarspaceman
  • 2026-09-23 17:20backend: testsMYATA
  • 2026-09-23 17:17Configure OpenAI key loading for ML serviceZhanibek Altynbek
Все коммиты (47)
  • 2026-09-23 17:16frontSapar
  • 2026-09-23 17:06frontSapar
  • 2026-09-23 16:57backend: adminMYATA
  • 2026-09-23 16:56frontSapar
  • 2026-09-23 16:54Merge pull request #1 from BAITC-Hacks/chatgpt/frontend-redesignwarspaceman
  • 2026-09-23 16:49frontend: introduce premium dark design systemwarspaceman
  • 2026-09-23 16:48frontend: redesign task details and proposal workspacewarspaceman
  • 2026-09-23 16:47frontend: redesign task clarification and editor flowwarspaceman
  • 2026-09-23 16:46frontend: redesign readiness score componentwarspaceman
  • 2026-09-23 16:46frontend: redesign catalog and loading stateswarspaceman
  • 2026-09-23 16:46frontend: add reusable loading and empty stateswarspaceman
  • 2026-09-23 16:46frontend: redesign application shell and navigationwarspaceman
  • 2026-09-23 16:45frontend: redesign task creation experiencewarspaceman
  • 2026-09-23 16:45Ml changesZhanibek Altynbek
  • 2026-09-23 16:18dockerfiles updateMYATA
  • 2026-09-23 16:09front добавил временный readmySapar
  • 2026-09-23 16:08Ml changesZhanibek Altynbek
  • 2026-09-23 16:04backend: улучшениеMYATA
  • 2026-09-23 15:44frontSapar
  • 2026-09-23 15:38Ml changesZhanibek Altynbek
  • 2026-09-23 15:32frontSapar
  • 2026-09-23 15:21frontSapar
  • 2026-09-23 15:20Ml changesZhanibek Altynbek
  • 2026-09-23 15:18Ml new changesZhanibek Altynbek
  • 2026-09-23 15:15backend: обновлен для продолжения работыMYATA
  • 2026-09-23 15:09backend наконец начал вайбкодитьMYATA
  • 2026-09-23 14:33frontendSapar
  • 2026-09-23 14:29Ml improved skeletonZhanibek Altynbek
  • 2026-09-23 14:28Merge https://github.com/BAITC-Hacks/hack-849af6d9-warspacemanZhanibek Altynbek
  • 2026-09-23 14:21frontSapar
  • 2026-09-23 14:14Ml improved skeletonZhanibek Altynbek
  • 2026-09-23 13:54modified READMEMYATA
  • 2026-09-23 13:49Ml skeletonZhanibek Altynbek
  • 2026-09-23 13:47frontendSapar
  • 2026-09-23 13:42skeletonSapar
  • 2026-09-23 11:52backend partMYATA
  • 2026-09-23 11:50frontend nursatSapar
  • 2026-09-23 11:47Ml partZhanibek Altynbek
  • 2026-09-23 11:41Initial commitMYATA
Структура репозитория (83 файлов)
.env
.env.example
.gitignore
AGENTS.md
ML/.dockerignore
ML/.env.example
ML/.gitignore
ML/AGENTS.md
ML/Dockerfile
ML/README.md
ML/evaluation/cases.json
ML/evaluation/live_cases.json
ML/evaluation/run_evaluation.py
ML/examples/demo_drafts.json
ML/examples/run_demos.py
ML/requirements-dev.txt
ML/requirements.txt
ML/scripts/live_smoke_test.py
ML/service/main.py
ML/tests/test_service.py
README.md
backend/.dockerignore
backend/.gitignore
backend/AGENTS.md
backend/API_PROPOSALS.md
backend/DEMO_ADMIN_API.md
backend/Dockerfile
backend/README.md
backend/app/__init__.py
backend/app/api/__init__.py
backend/app/api/routes/__init__.py
backend/app/api/routes/demo_admin.py
backend/app/api/routes/proposals.py
backend/app/api/routes/tasks.py
backend/app/api/routes/teams.py
backend/app/core/config.py
backend/app/core/db.py
backend/app/main.py
backend/app/models/__init__.py
backend/app/models/demo_seed.py
backend/app/models/proposal.py
backend/app/models/task.py
backend/app/models/team.py
backend/app/schemas/__init__.py
backend/app/schemas/proposal.py
backend/app/schemas/task.py
backend/app/schemas/team.py
backend/app/services/ai_client.py
backend/app/services/demo_seed.py
backend/app/services/rating.py
backend/compose.demo.yml
backend/requirements.txt
backend/tests/test_integration.py
docker-compose.yml
docs/API_CONTRACT.md
docs/screenshots/01-catalog.png
docs/screenshots/02-create-task.png
docs/screenshots/03-ai-questions.png
docs/screenshots/04-clarification-answers.png
docs/screenshots/05-readiness-card.png
docs/screenshots/06-catalog-result.png
frontend/.dockerignore
frontend/AGENTS.md
frontend/Dockerfile
frontend/index.html
frontend/nginx.conf
frontend/package-lock.json
frontend/package.json
frontend/src/App.jsx
frontend/src/api/client.js
frontend/src/api/proposals.js
frontend/src/api/tasks.js
frontend/src/api/teams.js
frontend/src/components/ReadinessScore.jsx
frontend/src/components/Select.jsx
frontend/src/components/StatePanel.jsx
frontend/src/main.jsx
frontend/src/pages/Catalog.jsx
frontend/src/pages/TaskCard.jsx
frontend/src/pages/TaskDetail.jsx
frontend/src/pages/TaskDraft.jsx
frontend/src/styles.css
frontend/vite.config.js
Ветки (2)

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

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

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