AAYMA
RU
Войти

EvoMind

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

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

О проекте

Команда: EvoMind
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP

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

Суть

Платформа-каталог, где бизнес превращает расплывчатый бриф в структурированную задачу для студенческих команд: AI задаёт уточняющие вопросы, считается рейтинг готовности 0–100, задача публикуется, команды откликаются, бизнес вручную принимает решения.

Как устроено

Черновик брифа анализируется через OpenAI Chat Completions (или детерминированный fallback), генерируется минимум 3 уточняющих вопроса, затем редактируемая карточка с обязательными полями. Backend на NestJS детерминированно считает рейтинг по 7 взвешенным критериям (контекст, данные, результат, критерии успеха и т.д.) с уровнями draft/workable/ready/priority. Каталог с сортировкой и фильтрами, отклики команд и ручное принятие/отклонение, общие Zod-контракты между фронтом и бэком.

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

  • clarifying question generation
  • weighted readiness scoring
  • deterministic fallback
  • Zod shared contracts

Особенности

Геймификация направлена на бизнес, а не на студентов: чем полнее описана задача, тем выше её рейтинг и позиция в каталоге; рейтинг считается без ИИ и прозрачен по критериям.

Стек

TypeScript · NestJS · Next.js · React · Tailwind CSS · Drizzle ORM · SQLite · Zod · TanStack Query · Vitest · pnpm

Модели

gpt-4o-mini


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

README

README.md

EvoMind

Problem

Бизнес часто описывает свою задачу для студенческих команд слишком коротко и расплывчато ("нужно понять, почему клиенты уходят") — студентам сложно понять, за что браться, а хорошие задачи теряются среди непонятных.

Solution

EvoMind — платформа-каталог, которая помогает бизнесу превратить черновое описание в полноценную, оценённую задачу, и открыто связывает её со студенческими командами. Ключевая идея: геймификация направлена на бизнес, а не на студентов — чем подробнее описана задача, тем выше её рейтинг готовности (0-100) и заметнее позиция в общем каталоге.

Сквозной сценарий: черновик → AI задаёт минимум 3 уточняющих вопроса → редактируемая карточка → расчёт рейтинга по 7 критериям → публикация в каталог → отклик студенческой команды → бизнес вручную принимает/отклоняет предложение. Автоматического назначения команд нет.

Что реализовано

  • Конструктор задачи: свободный ввод, AI/fallback-анализ полноты, минимум 3 уточняющих вопроса, редактируемая карточка, ручное подтверждение перед публикацией.
  • Карточка задачи со всеми обязательными полями (название, контекст, потребность, пользователи, данные, ограничения, ожидаемый результат, критерии успеха, контакт, формат взаимодействия).
  • Формула рейтинга 0-100 (см. ниже) с расшифровкой по критериям, списком недостающих полей и пересчётом после каждого сохранения.
  • Открытый каталог: все опубликованные задачи, сортировка по рейтингу, фильтры по теме и уровню готовности.
  • Отклики команд: неограниченное число предложений (идея, план, срок, ссылка на прототип) на задачу.
  • Ручной выбор бизнеса: принять/отклонить любое количество предложений; автоматического назначения команды нет.
  • AI-функция: анализ брифа и генерация вопросов через OpenAI Chat Completions с безопасным детерминированным fallback при отсутствии/сбое внешнего сервиса.

Формула рейтинга задачи

Рейтинг 0-100 считается на backend (детерминированно, без ИИ) по 7 критериям — балл начисляется только если соответствующее поле заполнено и подтверждено:

КритерийВесУсловие начисления
Контекст и потребность20заполнены context и need
Данные20заполнено поле data
Ожидаемый результат15заполнено expectedResult
Критерии успеха15заполнено successCriteria
Ограничения10заполнено constraints
Пользователи10заполнено users
Связь с бизнесом10заполнены contact и interactionFormat

Уровни готовности: 0-39 — draft (черновик), 40-69 — workable (рабочая), 70-89 — ready (готовая), 90-100 — priority (приоритетная). Низкий рейтинг не скрывает задачу и не блокирует отклики — он лишь сигнализирует студентам, насколько задача готова к работе. Рейтинг автоматически пересчитывается при каждом сохранении карточки.

Правила каталога

GET /api/tasks — возвращает все опубликованные задачи. Поддерживает:

  • ?sort=score_desc|score_asc — сортировка по рейтингу;
  • ?readiness=draft|workable|ready|priority — фильтр по уровню готовности;
  • ?topic=... — фильтр по теме.

Задачи с низким рейтингом остаются в каталоге (не скрываются), но занимают позицию согласно рейтингу.

Architecture

Монорепозиторий (pnpm workspaces):

apps/api      — NestJS REST API (бизнес-логика, рейтинг, AI-адаптер)
apps/web      — Next.js фронтенд (весь пользовательский сценарий)
packages/contracts — общие Zod-схемы и TypeScript-типы (единый источник правды
                      для API-контрактов между backend и frontend)
packages/db   — Drizzle ORM схема, миграции, seed-данные, SQLite

Frontend обращается к backend через типобезопасный HTTP-клиент, все запросы и ответы валидируются общими Zod-схемами из packages/contracts.

Technologies

  • Backend: NestJS, TypeScript, Zod (валидация), Drizzle ORM, better-sqlite3
  • Frontend: Next.js (App Router), React, TypeScript, Tailwind CSS, React Hook Form + Zod, TanStack Query
  • Тесты: Vitest, Supertest (backend), Vitest + Testing Library (frontend)
  • Пакетный менеджер: pnpm workspaces

Installation

Требуется Node.js 20+ и pnpm.

pnpm install
pnpm db:migrate
pnpm db:seed

Environment variables

ПеременнаяНазначениеОбязательна
PORTПорт backend API (по умолчанию 3001)нет
OPENAI_API_KEYКлюч OpenAI API для генерации уточняющих вопросов через Chat Completionsнет — без него используется детерминированный fallback
OPENAI_MODELМодель Chat Completions (по умолчанию gpt-4o-mini)нет
API_BASE_URLURL backend API для Next.js proxy (frontend)нет, по умолчанию http://127.0.0.1:3001

Важно: AI-функция полностью опциональна для проверки. Без OPENAI_API_KEY система автоматически и безопасно использует детерминированный fallback — генерирует минимум 3 релевантных уточняющих вопроса без обращения к внешним сервисам. Эксперты могут проверить полный сценарий без каких-либо личных аккаунтов или API-ключей участников.

Run

Backend и frontend запускаются отдельно (два терминала):

pnpm dev:api   # NestJS API на http://localhost:3001
pnpm dev:web   # Next.js на http://localhost:3000

Либо production-сборка:

pnpm build
pnpm start:api          # backend
pnpm --filter @evomind/web start   # frontend

Demo / Test credentials

Аутентификация не требуется (вне рамок MVP по ТЗ). Используются готовые синтетические данные из seed: 5 задач, 5 команд (team-1...team-5), 5 предложений. Все данные полностью синтетические, контакты используют зарезервированный домен example.test.

How to verify main scenario

  1. Открыть http://localhost:3000, ввести короткое описание проблемы на экране "Описание" (например "Хотим понять, почему клиенты уходят").
  2. Ответить на 3 уточняющих вопроса.
  3. Проверить/отредактировать карточку, сохранить — увидеть расчитанный рейтинг и его разбивку по критериям.
  4. Опубликовать задачу — она появится в общем каталоге, с сортировкой и фильтрами по теме/готовности.
  5. Открыть задачу из каталога → отправить отклик (поле "Команда": используйте team-1...team-5 — демо-ID из seed).
  6. Перейти на экран решений бизнеса → принять или отклонить предложение вручную.

Тот же сценарий можно проверить напрямую через API — см. примеры запросов в Swagger UI: http://localhost:3001/api/docs (после pnpm dev:api).

Tests

pnpm test        # backend + frontend, все тесты
pnpm typecheck    # проверка типов по всему монорепозиторию
pnpm build        # production build всех пакетов

Third-party components/models/datasets

  • NestJS, Next.js, React, Zod, Drizzle ORM, better-sqlite3, Vitest, Supertest, Testing Library, TanStack Query, React Hook Form, Tailwind CSS — все open-source, использованы согласно их лицензиям (см. package.json каждого пакета).
  • Внешние датасеты не использованы. Все демонстрационные данные (задачи, команды, предложения) — синтетические, созданы специально для этого проекта в рамках соревновательной части.
  • AI-функция опционально использует OpenAI Chat Completions через OPENAI_API_KEY; без ключа используется собственный детерминированный алгоритм fallback. Ключ участника не требуется для воспроизводимого запуска.

Deployed version

Развёрнутой публичной версии нет — проект запускается локально по инструкции выше (Installation + Run).

Known limitations

  • Регистрация, роли пользователей, реальная аутентификация — вне рамок MVP (явно исключены ТЗ).
  • AI-функция по умолчанию работает в режиме fallback; интеграция с внешним LLM опциональна и не обязательна для прохождения сценария.
  • Выбор команды в форме отклика — свободный текст с demo-ID (team-1... team-5), не выпадающий список (нет отдельного GET /api/teams эндпоинта — не входит в обязательный функционал ТЗ).
  • Нет адаптации под мобильные устройства и production-инфраструктуры — явно вне рамок пяти часов по ТЗ.
Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
15
Авторы
4
Файлы
68
Ветки
3

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

Rollan 7Adil78124 4Rollan 2H1karu08 2

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

  • 2026-09-23 17:32README: add rating formula, catalog rules, implemented features list per submission checklistRollan
  • 2026-09-23 17:25Minor visual cleanup: remove decorative blur decoration for a cleaner minimal lookRollan
  • 2026-09-23 17:23Fix mode badge always showing 'Fallback-режим' even when real AI answeredRollan
  • 2026-09-23 17:21Polish live demo UX and startup flow (#16)Rollan
  • 2026-09-23 16:49Integrate OpenAI Chat Completions (#15)Adil78124
  • 2026-09-23 16:48Reject empty task drafts (#14)Adil78124
  • 2026-09-23 16:14Write project README: architecture, setup, env vars, verification stepsRollan
  • 2026-09-23 16:11Fix demo-breaking bug: proposal form defaulted to non-existent team (#9)Rollan
Все коммиты (15)
  • 2026-09-23 16:08Implement domain API for Issue 2 (#8)Adil78124
  • 2026-09-23 16:01Frontend: подключить сквозной flow к HTTP API (#7)H1karu08
  • 2026-09-23 15:33Build frontend demo flow on contract fixtures (#6)H1karu08
  • 2026-09-23 15:25Build backend foundation for Issue 1 (#5)Adil78124
  • 2026-09-23 14:51Align agent stack on Next Nest and DrizzleRollan
  • 2026-09-23 14:25Define MVP architecture and agent responsibilitiesRollan
  • 2026-09-23 14:13Add/update AGENTS.md compliance rulesRollan
Структура репозитория (68 файлов)
.gitignore
AGENTS.md
README.md
TEAM_PLAN.md
apps/api/.env.example
apps/api/nest-cli.json
apps/api/package.json
apps/api/src/ai.service.ts
apps/api/src/api-exception.filter.ts
apps/api/src/app.module.ts
apps/api/src/bootstrap.ts
apps/api/src/database.service.ts
apps/api/src/health.controller.ts
apps/api/src/main.ts
apps/api/src/proposals.controller.ts
apps/api/src/proposals.service.ts
apps/api/src/scoring.ts
apps/api/src/tasks.controller.ts
apps/api/src/tasks.service.ts
apps/api/src/zod-validation.pipe.ts
apps/api/test/ai.service.spec.ts
apps/api/test/api.spec.ts
apps/api/test/scoring.spec.ts
apps/api/tsconfig.build.json
apps/api/tsconfig.json
apps/api/vitest.config.ts
apps/web/next-env.d.ts
apps/web/next.config.ts
apps/web/package.json
apps/web/postcss.config.mjs
apps/web/src/app/globals.css
apps/web/src/app/layout.tsx
apps/web/src/app/page.tsx
apps/web/src/app/providers.tsx
apps/web/src/components/demo-flow.test.tsx
apps/web/src/components/demo-flow.tsx
apps/web/src/components/ui/button.tsx
apps/web/src/components/ui/card.tsx
apps/web/src/components/ui/input.tsx
apps/web/src/components/ui/label.tsx
apps/web/src/components/ui/textarea.tsx
apps/web/src/lib/api-client.test.ts
apps/web/src/lib/api-client.ts
apps/web/src/lib/api.ts
apps/web/src/lib/fixtures.ts
apps/web/src/lib/mock-api.ts
apps/web/src/lib/utils.ts
apps/web/src/test/setup.ts
apps/web/tailwind.config.ts
apps/web/tsconfig.json
apps/web/vitest.config.ts
package.json
packages/contracts/package.json
packages/contracts/src/index.ts
packages/contracts/tsconfig.json
packages/db/drizzle.config.ts
packages/db/drizzle/0000_backend_foundation.sql
packages/db/drizzle/meta/_journal.json
packages/db/package.json
packages/db/src/client.ts
packages/db/src/index.ts
packages/db/src/migrate.ts
packages/db/src/schema.ts
packages/db/src/seed.ts
packages/db/tsconfig.json
pnpm-lock.yaml
pnpm-workspace.yaml
tsconfig.base.json
Ветки (3)

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

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

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