AI SANA
MVP на Streamlit: бизнес описывает задачу своими словами, AI задаёт уточняющие вопросы и собирает карточку.
О проекте
Команда: 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.mdAI 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
- Бизнес вводит слабое описание:
Хотим чат-бота для клиентов. - Показываем низкий preview score.
- AI задаёт уточняющие вопросы.
- Добавляем пользователей, данные, ожидаемый результат и измеримый критерий.
- Показываем рост readiness.
- Подтверждаем карточку и публикуем.
- Переключаемся на студенческую команду.
- Открываем каталог.
- Отправляем предложение.
- Возвращаемся как бизнес.
- Открываем отклики.
- Вручную выбираем или отклоняем команду.
Правила каталога
- все опубликованные задачи доступны командам;
- задачи сортируются по 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 готов к сквозной демонстрации.
Основной фокус проекта: превратить слабую бизнес-идею в качественную задачу, дать прозрачную мотивацию улучшить её и довести сценарий до реального отклика студенческой команды и ручного решения бизнеса.
Авторы коммитов
История коммитов
- 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 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.