AAYMA
RU
Войти

HackAlem — от бизнес-проблемы к студенческому проекту

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

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

О проекте

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

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

Суть

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

Как устроено

Агент 1 извлекает 10 полей из описания без домыслов, Агент 2 исследует компанию через web search и задаёт 3–5 технических вопросов; ответы превращаются в предложенные дополнения, которые бизнес подтверждает вручную. Рейтинг считается детерминированной формулой по подтверждённым полям (0–100, 4 уровня), совместимость команд — взвешенное совпадение навыков. Бэкенд на стандартной библиотеке Python + SQLite, есть резервный режим без LLM, транскрибация аудио и AI-ассистент с командами фильтрации каталога.

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

  • структурированное извлечение полей
  • web search (OpenAI Responses)
  • детерминированная формула рейтинга
  • взвешенный skill matching
  • Audio Transcriptions
  • rule-based fallback
  • импорт GitHub-профилей

Особенности

Приложение без внешних зависимостей (только stdlib Python), LLM лишь предлагает дополнения с цитатами, а человек подтверждает; рейтинг отделён от AI-оценки качества; опубликовано на Render.

Стек

Python · SQLite · HTML/CSS/JavaScript · Docker · Render

Модели

gpt-4.1-mini · gpt-4o-mini-transcribe


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

README

README.md

HackAlem — от бизнес-проблемы к студенческому проекту

HackAlem помогает бизнесу превратить неполное описание проблемы в понятную задачу, а студенческим командам — найти проект по навыкам и предложить решение. Рейтинг отражает готовность задачи, а не известность компании. Исполнителей всегда выбирает бизнес.

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

  • Конструктор с десятью полями, извлечением фактов, оценкой полноты и редактированием.
  • Агент 1 структурирует описание без выдумывания пропусков. Агент 2 исследует компанию и после проверки полей задаёт 3–5 технических вопросов.
  • Из ответов агент формирует дополнения к карточке: бизнес видит прежний и предлагаемый текст, выбирает изменения и подтверждает их. После применения пересчитывается рейтинг; существующий текст сохраняется.
  • Предложения IT-направлений, специалистов и навыков с ручным согласованием.
  • Каталог всех опубликованных задач, сортировка по готовности, сочетание фильтров темы, навыков, дат, формата, готовности и совместимости.
  • Отклики с идеей, планом, сроком и URL; ручной выбор одной, нескольких или ни одной команды.
  • Сдача этапа выбранной командой и начисление +10 после подтверждения бизнесом, без повторного начисления.
  • Демо-аккаунты бизнеса и студентов, профили, объяснения совместимости, импорт публичных GitHub-репозиториев и предоставленного текста профилей.
  • Постоянный AI-ассистент с историей, контекстом карточек и медиа. Команда «Покажи задачи с готовностью 90+» применяет фильтр каталога.
  • Агенты 3–5: демонстрационный анализ навыков, сложности задач и персональная группировка рекомендаций по прозрачным правилам.

2. Как работает решение

Описание бизнеса → извлечение 10 полей → ручные правки и оценка → вопросы → ответы → предложенные дополнения карточки и требования к команде → ручное подтверждение → публикация → отклик студентов → решение бизнеса → подтверждённый результат этапа.

Поля: название, контекст, проблема, пользователи, данные и материалы, ограничения, ожидаемый результат, критерии успеха, контакт, формат взаимодействия. Неизвестные сведения можно оставить пустыми.

3. Технологии

  • Python 3.9+, стандартная библиотека: HTTP-сервер, SQLite, JSON, urllib, threading, unittest.
  • HTML, CSS, JavaScript ES modules; без frontend-фреймворка и обязательной сборки.
  • Node.js нужен только для JavaScript-тестов.
  • OpenAI API: Chat Completions для структурированных ответов, Responses с web search для публичного контекста, Audio Transcriptions для аудио. Модель по умолчанию: gpt-4.1-mini; распознавание: gpt-4o-mini-transcribe.
  • GitHub API для открытых репозиториев. Docker и Render используются для опубликованного демо.

4. Архитектура

Браузер (static/) → HTTP API (server.py) → SQLite (app/store.py)
                                  ├─ app/auth.py: сессии и роли
                                  ├─ app/domain.py: рейтинг и валидация
                                  ├─ app/brief_workflow.py: карточка, вопросы, источники
                                  ├─ app/agents.py: AI-провайдер и резервный режим
                                  ├─ app/matching.py + talent_agents.py: подбор
                                  └─ app/assistant.py + profiles.py: помощник и профили

ИИ предлагает текст и требования, сервер проверяет структуру и источники, человек подтверждает изменения. Модель не публикует задачи и не выбирает команды. Промпты и форматы JSON находятся в app/brief_workflow.py, app/intelligence.py, app/profiles.py, app/agents.py.

Рейтинг: контекст 10 + проблема 10 + данные 20 + результат 15 + критерии 15 + ограничения 10 + пользователи 10 + контакт 5 + взаимодействие 5. Баллы начисляются только за содержательные подтверждённые поля. Уровни: 0–39 — черновик, 40–69 — рабочая, 70–89 — готовая, 90–100 — приоритетная. Даже опубликованная задача с низким рейтингом доступна для отклика.

Совместимость = round(100 × вес совпавших навыков / вес подтверждённых требований). Университет, возраст и популярность GitHub не участвуют в расчёте. AI-процент качества описания отделён от рейтинга подтверждённых сведений.

5. Установка и локальный запуск — без деплоя

Облако, Render, Docker и API-ключ для локального запуска не требуются. Нужен Python 3.9 или новее.

  1. Скачайте исходники через GitHub → Code → Download ZIP и распакуйте либо клонируйте репозиторий, если у вас есть доступ:
git clone https://github.com/BAITC-Hacks/hack-a6c63efe-ratisho.git
cd hack-a6c63efe-ratisho

При скачивании ZIP откройте терминал в распакованной папке, где находится server.py.

  1. Проверьте Python и запустите приложение:
python3 --version
python3 server.py --port 8001

На Windows:

py --version
py server.py --port 8001
  1. Откройте http://127.0.0.1:8001. Терминал оставьте открытым. Остановка — Ctrl+C. Если порт занят, используйте --port 8002 и адрес http://127.0.0.1:8002.

pip install и npm install не нужны: у приложения нет обязательных сторонних зависимостей. При первом запуске база SQLite и синтетические данные создаются автоматически. Не удаляйте data/, если нужно сохранить изменения.

Для отдельной чистой базы проверки:

python3 server.py --port 8002 --db data/jury-demo.sqlite3

Необязательное подключение OpenAI

Без ключа конструктор работает по обозначенным локальным правилам. Для реальных ответов модели скопируйте .env.example в .env рядом с server.py:

cp .env.example .env

На Windows: Copy-Item .env.example .env.

Отредактируйте файл:

AI_MODE=auto
AI_API_KEY=ваш_ключ
AI_MODEL=gpt-4.1-mini
AI_BASE_URL=https://api.openai.com/v1
AI_TIMEOUT_SECONDS=30
AI_TRANSCRIBE_MODEL=gpt-4o-mini-transcribe

Перезапустите сервер. Для принудительного режима без API установите AI_MODE=local. Реальный ключ нельзя добавлять в GitHub или frontend; .env исключён из Git. При недоступности модели отображается предупреждение о резервном режиме.

6. Как проверить решение

Общий пароль демо-аккаунтов: hackalem2026.

РольЛогин
Бизнес[email protected]
Студент / Data Sprout[email protected]
  1. Войдите как бизнес и создайте задачу с описанием: «Название: План закупок кофейни. В кофейне остаётся выпечка после закрытия. Хотим снизить списания».
  2. Проверьте извлечённые поля. Укажите название, пользователей и доступные материалы; отметьте «Сведения проверены», сохраните и оцените. Покажите рост рейтинга после подтверждения.
  3. Нажмите «Карточка проверена — получить вопросы». Ответьте по смыслу каждого вопроса. Например, для объёма данных: «CSV продаж содержит 5000 строк за месяц».
  4. Нажмите «Дополнить карточку и подобрать специалистов». В блоке «Проверьте дополненную карточку» проверьте цитаты, выберите нужные поля и примените их. Сведения попадут в карточку, рейтинг пересчитается.
  5. Подтвердите нужные навыки и публикацию. Если дополнения не подходят, оставьте карточку без изменений и исправьте поля вручную.
  6. Выйдите и войдите как студент. Найдите задачу в каталоге, отправьте идею, план, срок и доступную HTTP(S)-ссылку на учебный прототип.
  7. Войдите как бизнес, откройте предложения и вручную выберите либо отклоните команду. Можно выбрать несколько.
  8. Для проверки баллов выбранная команда отправляет этап со ссылкой, бизнес подтверждает результат: начисляется +10 один раз.

Сценарий репетиции — docs/DEMO.md. Для короткой защиты заранее подготовьте текст, ответы и ссылку на прототип; обязательно покажите рост рейтинга, публикацию, отклик и ручное решение.

Проверки:

python3 -m unittest discover -s tests -v
node --test tests/catalog.test.js
node --check static/app.js
node --check static/brief-ui.js

7. Данные и интеграции

Начальный набор: 11 черновиков, 29 опубликованных задач, 15 команд, 77 откликов, 21 демо-аккаунт. Это синтетические данные. Есть 6 отраслевых CSV по 300 строк в static/demo-data/.

SQLite хранит карточки, отклики, подтверждённые этапы, профили и историю диалогов. GitHub импортирует публичные данные. LinkedIn используется как ссылка и предоставленный пользователем текст; автоматического обхода закрытых страниц нет. Публичные сведения компании сопровождаются источниками и не подменяют ответы бизнеса. Примеры ссылок example.com в синтетических предложениях иллюстративные.

8. Ограничения

  • Демо-аккаунты общие; полноценная регистрация и восстановление пароля не реализованы. Используйте учебные данные.
  • Резервный режим работает по правилам и не заменяет свободное рассуждение LLM. Если для подробного описания не удаётся получить три новых безопасных вопроса, продолжение конструктора может потребовать повторного запроса к модели.
  • Предложения дополнений состоят из цитат; противоречащие формулировки пользователь должен проверить и отредактировать. Правки основных полей сбрасывают зависимые вопросы и требования, чтобы не использовать устаревшие рекомендации.
  • Агенты 3–5 — демонстрационные правила, а не обученные модели и не независимая оценка квалификации. Сложность, опыт и доступность оцениваются ограниченно.
  • Команды фильтрации ассистента распознаются по поддержанным фразам; произвольное управление интерфейсом не реализовано.
  • Видео анализируется как 6 кадров без звука, а не все кадры. Фото и транскрибация аудио требуют поддерживаемого внешнего API. Исходные медиафайлы не сохраняются в базе.
  • Качество и доступность внешних AI/API зависят от провайдера, ключа и лимитов. Проверка цитат не гарантирует идеальную смысловую классификацию.
  • Это MVP с одной SQLite-базой; производственная инфраструктура и полный проектный трекер не реализованы.

9. Опубликованная версия

https://hackalem-cloud.onrender.com

Демо работает на Render независимо от компьютера команды. После простоя бесплатный сервер может запускаться около минуты или дольше. На Render Free SQLite размещена на временном диске: введённые записи могут сброситься после перезапуска, исходные примеры и аккаунты восстановятся. Локальная база в data/ сохраняется между обычными перезапусками.

Render развёрнут из отдельного архива исходников в приватном Secret File. Автоматического деплоя после Git push нет. Секрет OpenAI хранится в серверных переменных.

Официальный репозиторий: https://github.com/BAITC-Hacks/hack-a6c63efe-ratisho

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

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

tomirizz 31Bakdaulet Dagystanov 20

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

  • 2026-09-23 17:57Update jury demo with local launch and card generationtomirizz
  • 2026-09-23 17:57Review and apply AI-generated card additionstomirizz
  • 2026-09-23 17:56Generate grounded task-card additions from interview answerstomirizz
  • 2026-09-23 17:56Document local launch and add answer-card APItomirizz
  • 2026-09-23 17:33Test evidence validation and missing-data handlingtomirizz
  • 2026-09-23 17:32Give assistant real task ratings and document demotomirizz
  • 2026-09-23 17:31Add personal feed and assistant-driven filterstomirizz
  • 2026-09-23 17:30Add demo specialist, task analysis and recommendation agents 3–5tomirizz
Все коммиты (42)
  • 2026-09-23 17:18Delete __init__.pytomirizz
  • 2026-09-23 17:17Delete agents.pytomirizz
  • 2026-09-23 17:17Delete assistant.pytomirizz
  • 2026-09-23 17:17Delete auth.pytomirizz
  • 2026-09-23 17:17Delete brief_workflow.pytomirizz
  • 2026-09-23 17:17Delete demo.pytomirizz
  • 2026-09-23 17:17Delete demo_summaries.jsontomirizz
  • 2026-09-23 17:17Delete domain.pytomirizz
  • 2026-09-23 17:17Delete intelligence.pytomirizz
  • 2026-09-23 17:17Delete matching.pytomirizz
  • 2026-09-23 17:16Delete profiles.pytomirizz
  • 2026-09-23 17:16Delete seed.pytomirizz
  • 2026-09-23 17:15Delete store.pytomirizz
  • 2026-09-23 17:14Add files via uploadtomirizz
  • 2026-09-23 17:12Publish v4 two-agent workflow and demo interfacetomirizz
  • 2026-09-23 17:12Add validated brief extraction, assessment, qualification questions and skill recommendations.tomirizz
  • 2026-09-23 17:10Add v4 agents, demo authentication and application modulestomirizz
  • 2026-09-23 17:07Deploy v4 server and add judge access instructionstomirizz
  • 2026-09-23 16:38Add files via uploadtomirizz
  • 2026-09-23 16:37Add files via uploadtomirizz
  • 2026-09-23 16:36Add files via uploadtomirizz
  • 2026-09-23 15:32Add files via uploadBakdaulet Dagystanov
  • 2026-09-23 15:31Add files via uploadBakdaulet Dagystanov
  • 2026-09-23 15:30Add files via uploadBakdaulet Dagystanov
  • 2026-09-23 14:35Simplify origin validation and command-line argumentsBakdaulet Dagystanov
  • 2026-09-23 14:21Add note about standard library dependenciesBakdaulet Dagystanov
  • 2026-09-23 14:21Set Python version to 3.12Bakdaulet Dagystanov
  • 2026-09-23 14:18Improve cross-origin request handlingBakdaulet Dagystanov
  • 2026-09-23 14:17Update server.pyBakdaulet Dagystanov
  • 2026-09-23 14:11Add files via uploadBakdaulet Dagystanov
  • 2026-09-23 14:10Add files via uploadBakdaulet Dagystanov
  • 2026-09-23 14:09Add files via uploadBakdaulet Dagystanov
  • 2026-09-23 14:09Create .gitkeepBakdaulet Dagystanov
  • 2026-09-23 14:08Create .gitkeepBakdaulet Dagystanov
Структура репозитория (52 файлов)
.dockerignore
.env.example
.gitignore
.python-version
CHANGELOG.md
DEMO_AGENTS.md
Dockerfile
README.md
UPDATE.md
app/.gitkeep
app/__init__.py
app/agents.py
app/assistant.py
app/auth.py
app/brief_workflow.py
app/demo.py
app/demo_summaries.json
app/domain.py
app/intelligence.py
app/matching.py
app/profiles.py
app/seed.py
app/store.py
app/talent_agents.py
data/.gitkeep
docs/.gitkeep
docs/AI.md
docs/CONTRACT.md
docs/DEMO.md
docs/REQUIREMENTS.md
docs/TEST_REPORT.md
package.json
render.yaml
requirements.txt
server.py
static/.gitkeep
static/app.js
static/assistant-ui.js
static/brief-ui.js
static/brief.css
static/catalog.js
static/favicon.svg
static/index.html
static/styles.css
tests/.gitkeep
tests/__init__.py
tests/catalog.test.js
tests/test_agents.py
tests/test_domain.py
tests/test_talent_agents.py
tests/test_v2.py
tests/test_workflow.py

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

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

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