AAYMA
RU
Войти

AI SANA

MVP на Streamlit: бизнес описывает задачу своими словами, AI задаёт уточняющие вопросы и собирает карточку.

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

О проекте

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

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

Суть

MVP на Streamlit: бизнес описывает задачу своими словами, AI задаёт уточняющие вопросы и собирает карточку. Готовность оценивается рейтингом 0–100, затем задача публикуется в каталоге для откликов студенческих команд.

Как устроено

analyze_task через OpenAI (или локальный fallback) находит недостающие данные и формирует уточняющие вопросы. build_card собирает карточку только из того, что сообщил пользователь. Детерминированный core/rating.py считает готовность по 7 категориям с весами 20/20/15/15/10/10/10; мусорные и неподтверждённые ответы получают 0. Есть live preview с рекомендациями, что добавить. Задачи и отклики хранятся в SQLite, каталог сортируется по рейтингу, команду бизнес выбирает вручную.

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

  • clarifying questions generation
  • deterministic readiness scoring
  • junk/vague input detection
  • prompt templates
  • local fallback

Особенности

Геймификация направлена на качество формулировки бизнес-задачи. Строгий рейтинг не даёт баллов за «asdf», «все» и неподтверждённые поля, итоговый score считает код, а не LLM. По README проходят 127 тестов.

Стек

Python · Streamlit · SQLite · pytest

Модели

OpenAI API


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

README

README.md

AI SANA

AI SANA — MVP платформы, которая превращает сырую бизнес-идею в понятную, структурированную и готовую к работе задачу для студенческих команд.

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

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

  • выбор роли: Бизнес / Студенческая команда;
  • лёгкие профили для обеих ролей;
  • создание бизнес-задачи из свободного текста;
  • AI-анализ недостающих данных;
  • уточняющие вопросы;
  • редактируемая карточка задачи;
  • live readiness preview во время заполнения;
  • строгий рейтинг готовности 0–100;
  • объяснение начисленных баллов;
  • top-рекомендации, что добавить для повышения рейтинга;
  • каталог опубликованных задач;
  • отклики студенческих команд;
  • ручной выбор / отклонение команды бизнесом;
  • SQLite-хранилище;
  • работа без OpenAI API через локальный fallback;
  • автоматические тесты рейтинга и интеграционного сценария.

Главный сценарий

Бизнес
→ выбирает роль
→ заполняет профиль
→ описывает задачу
→ AI анализирует описание
→ AI задаёт уточняющие вопросы
→ пользователь дополняет данные
→ readiness preview растёт
→ формируется редактируемая карточка
→ бизнес подтверждает данные
→ рассчитывается официальный рейтинг
→ задача публикуется
→ студент открывает каталог
→ отправляет предложение
→ бизнес просматривает отклик
→ вручную выбирает или отклоняет команду

Ключевая идея

Главная геймификация направлена на качество бизнес-задачи.

Чем конкретнее и полезнее описание, тем выше readiness score и тем лучше позиция задачи в каталоге.

Важно:

  • AI не выставляет итоговый score сам;
  • рейтинг считает core/rating.py по прозрачным правилам;
  • AI не выбирает команду;
  • финальное решение остаётся за человеком.

Рейтинг готовности

Максимум: 100 баллов.

КатегорияВес
Контекст и потребность20
Данные и материалы20
Ожидаемый результат15
Критерии успеха15
Ограничения10
Пользователи10
Связь с бизнесом10

Уровни

  • 0–39 — Черновик
  • 40–69 — Рабочая
  • 70–89 — Готовая
  • 90–100 — Приоритетная

Как начисляются баллы

Рейтинг намеренно строгий:

  • пустое поле → 0;
  • неподтверждённое поле → 0;
  • мусорные ответы вроде asdf, -, повторов слов → 0;
  • расплывчатые ответы вроде «все», «есть данные», «чтобы работало» не получают полный балл;
  • полный балл выдаётся только за конкретную и полезную информацию.

Live readiness preview

Во время заполнения пользователь видит прогноз готовности:

  • текущий score;
  • уровень;
  • progress bar;
  • сколько баллов не хватает до следующего уровня;
  • top-рекомендации по самым ценным недостающим данным.

После подтверждения карточки считается официальный score.

AI-функции

AI используется для двух задач:

1. Анализ полноты

analyze_task(raw_text, card)

Определяет, каких данных не хватает, и формирует уточняющие вопросы.

2. Сборка карточки

build_card(raw_text, answers)

Формирует структурированную карточку только из информации, которую сообщил пользователь.

AI не должен придумывать неизвестные факты.

Если OpenAI API недоступен, используется локальный deterministic fallback.

Архитектура

app.py                 # Streamlit UI и пользовательский flow
ui.css                 # визуальные стили

core/
├── ai.py              # AI-анализ, вопросы, сборка карточки, fallback
├── models.py          # структуры данных
├── rating.py          # детерминированный readiness score
└── storage.py         # SQLite: задачи и отклики

data/
└── seed/              # демо-данные

prompts/
├── analyze_task.md
└── build_card.md

tests/
├── test_rating.py
└── test_integration_flow.py

requirements.txt
.env.example
AGENTS.md
README.md

Поток данных

Streamlit UI
   ↓
analyze_task(...)
   ↓
build_card(...)
   ↓
calculate_rating(...)
   ↓
save_task(...)
   ↓
list_tasks(...)
   ↓
save_proposal(...)
   ↓
list_proposals(...)
   ↓
set_proposal_status(...)

Хранилище

Используется SQLite.

По умолчанию база создаётся локально:

data/aisana.db

Установка

git clone https://github.com/BAITC-Hacks/hack-c1d91e20-bsmlh.git
cd hack-c1d91e20-bsmlh
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

Windows:

py -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt

OpenAI API

OpenAI API не обязателен.

cp .env.example .env

.env:

OPENAI_API_KEY=your_key_here

Без ключа приложение автоматически использует fallback и остаётся запускаемым.

Запуск

streamlit run app.py

Обычно:

http://localhost:8501

Тесты

python -m pytest -q

На текущей версии:

127 passed

Покрываются:

  • строгая формула рейтинга;
  • vague / junk inputs;
  • неподтверждённые данные;
  • уровни readiness;
  • backend integration flow;
  • сохранение задачи;
  • публикация;
  • создание отклика;
  • изменение статуса отклика.

Быстрый demo script

  1. Бизнес вводит слабое описание: Хотим чат-бота для клиентов.
  2. Показываем низкий preview score.
  3. AI задаёт уточняющие вопросы.
  4. Добавляем пользователей, данные, ожидаемый результат и измеримый критерий.
  5. Показываем рост readiness.
  6. Подтверждаем карточку и публикуем.
  7. Переключаемся на студенческую команду.
  8. Открываем каталог.
  9. Отправляем предложение.
  10. Возвращаемся как бизнес.
  11. Открываем отклики.
  12. Вручную выбираем или отклоняем команду.

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

  • все опубликованные задачи доступны командам;
  • задачи сортируются по readiness score;
  • низкий score не скрывает задачу;
  • студент может откликнуться даже на задачу с низкой готовностью.

Профили ролей

Бизнес

Лёгкий профиль содержит основные данные компании и контактную информацию.

Студенческая команда

Профиль команды используется как мини-резюме и содержит:

  • название;
  • описание;
  • интересы;
  • навыки;
  • технологии;
  • контакты.

Безопасность и устойчивость AI

Даже если AI ошибается или API недоступен:

  • score не контролируется LLM;
  • core/rating.py остаётся источником истины;
  • неподтверждённые поля не получают официальный балл;
  • приложение продолжает работу через fallback;
  • выбор команды не автоматизируется AI.

Ограничения MVP

Не являются обязательной частью текущего MVP:

  • production login/password;
  • email verification;
  • сложная система прав;
  • realtime WebSocket chat;
  • notifications;
  • file uploads;
  • vector database;
  • ML model training;
  • production deployment.

Использованные инструменты

  • ChatGPT
  • OpenAI Codex
  • Figma AI
  • OpenAI API — опционально
  • Streamlit
  • SQLite
  • pytest

Текущий статус

Hackathon MVP готов к сквозной демонстрации.

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

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

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

smglvabi 4user23236 4daintel 2

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

  • 2026-09-23 17:55docs: update README for final MVPsmglvabi
  • 2026-09-23 17:45feat(ui): add task workflow, profiles and readiness previewdaintel
  • 2026-09-23 17:16docs: complete project READMEsmglvabi
  • 2026-09-23 17:02Tighten readiness scoring and cover vague and unconfirmed answersuser23236
  • 2026-09-23 15:46feat: add Streamlit MVP user flowdaintel
  • 2026-09-23 15:46test: verify end-to-end backend flowsmglvabi
  • 2026-09-23 15:11Align rating result with shared UI contractuser23236
  • 2026-09-23 15:08Implement transparent task rating and demo seed datauser23236
Все коммиты (10)
  • 2026-09-23 15:00Add shared task contracts, SQLite storage, and AI helpersuser23236
  • 2026-09-23 14:45chore: initialize AI SANA project structuresmglvabi
Структура репозитория (18 файлов)
.env.example
.gitignore
AGENTS.md
README.md
app.py
core/ai.py
core/models.py
core/rating.py
core/storage.py
data/seed/proposals.json
data/seed/tasks.json
data/seed/teams.json
prompts/analyze_task.md
prompts/build_card.md
requirements.txt
tests/test_integration_flow.py
tests/test_rating.py
ui.css

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

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

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