Career Quest
AI-навигатор карьерного развития: по профилю сотрудника считает разрыв навыков до целевой роли, рекомендует до 3 обучающих активностей, строит…
О проекте
Команда: ADLabs
Кейс HackAlem.ai: Менеджмент — Halyk Bank · кейс 1
Стадия: Доведённый продукт
Задача кейса: «Career Quest»: AI-навигатор, связывающий навыки сотрудника с шагами развития
Суть
AI-навигатор карьерного развития: по профилю сотрудника считает разрыв навыков до целевой роли, рекомендует до 3 обучающих активностей, строит roadmap и объясняет выбор; есть симуляция завершения активности и HR-обзор.
Как устроено
Датасет (200 сотрудников, 40 мероприятий, 2 743 записи истории) загружается в FastAPI; детерминированный движок ml/engine.py определяет цель, считает skill gaps, ранжирует активности по score (покрытие критичных навыков, gap coverage, соответствие цели, вероятность завершения, time efficiency) и строит roadmap до 3 шагов с пересчётом. AI Navigator получает ограниченный evidence packet и только объясняет рассчитанное; ответы провайдера валидируются Pydantic и проверяются на неизвестные ID и неподдержанные числа. Провайдеры: template (offline), OpenAI Responses API, NVIDIA API с fallback-цепочкой.
Ключевые решения
- skill gap analysis
- weighted recommendation scoring
- roadmap re-computation
- evidence packet grounding
- provider fallback chain
- Pydantic output validation
Особенности
Жёсткое разделение: ранжирование и прогноз делает детерминированный движок, LLM только объясняет по evidence packet с проверкой на выдуманные ID/числа; симуляция enroll→start→complete пересчитывает readiness и рекомендации в памяти; трёхъязычный UI и командный workflow с Codex-субагентами.
Стек
Python · FastAPI · Uvicorn · Pydantic · httpx · pytest · React · TypeScript · Vite
Модели
GPT-4o-mini · openai/gpt-oss-20b (NVIDIA API)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-6a0e416e-adlabs.
README
README.mdCareer Quest
Career Quest - hackathon MVP для персонального развития сотрудников. Проект помогает сотруднику увидеть разрыв навыков до целевой роли, получить объяснимый план развития и проверить, как конкретная обучающая активность меняет готовность к карьерной цели.
Для HR реализован агрегированный обзор прогресса по сотрудникам и отделам. В демо нет авторизации: выбор Employee/HR режима меняет пользовательский сценарий в интерфейсе.
Кратко о проблеме
В компаниях часто уже есть данные о ролях, навыках, обучающих мероприятиях и истории участия, но сотруднику сложно понять:
- какие навыки мешают перейти на следующий грейд;
- какая активность даст максимальный эффект;
- почему система рекомендует именно этот шаг;
- что изменится после завершения обучения.
Career Quest собирает эти данные в один сценарий: профиль сотрудника -> gap analysis -> рекомендации -> roadmap -> объяснение AI Navigator -> симуляция завершения активности.
Что реализовано
- Выбор сотрудника из синтетического датасета.
- Employee mode с профилем, карьерной целью, readiness и gap analysis.
- Расчет skill gaps до целевой роли/грейда.
- Рекомендации 0-3 активностей, отсортированные по score.
- Score breakdown: покрытие критичных навыков, общий gap coverage, соответствие цели, вероятность завершения и time efficiency.
- Roadmap до 3 последовательных шагов с пересчетом после каждого виртуального шага.
- Детальная карточка активности: описание, формат, длительность, prerequisites, developed skills, forecast, eligibility.
- Демо-действия
enroll,start,complete. - После
completebackend обновляет in-memory состояние: effective skills, readiness, recommendations, roadmap и activity history. - AI Navigator с ответами по evidence packet: факты, причина, ожидаемый эффект, ограничения, следующий шаг и source IDs.
- Offline/template режим AI Navigator без API-ключей.
- Опциональные интеграции с OpenAI Responses API и NVIDIA API при наличии ключей.
- HR overview: количество сотрудников, цели, готовность, средний прогресс, распределение по грейдам и отделам.
- API contract, demo script, финальные notes для защиты.
Как работает решение
- Backend загружает датасет из
datasets/career_quest. - Frontend получает список сотрудников и показывает Employee/HR сценарии.
- Для сотрудника Career Engine определяет цель: явная
career_goalиз датасета или следующий грейд, если цель не задана. - Engine сравнивает текущие/effective skills с требованиями target role profile.
- На основе gaps и каталога events система считает рекомендации, прогноз влияния и roadmap.
- AI Navigator получает только ограниченный evidence packet и объясняет уже рассчитанный результат.
- При завершении активности изменения применяются в памяти процесса backend. Исходные JSON/CSV файлы не меняются.
- После перезапуска backend демо-состояние сбрасывается к данным из датасета.
Технологии
Backend
- Python 3.11+
- FastAPI
- Uvicorn
- Pydantic
- httpx
- python-dotenv
- pytest
Frontend
- React 18
- TypeScript
- Vite
- lucide-react
AI, API и внешние сервисы
TemplateAIProvider- режим по умолчанию, работает без интернета и ключей.- OpenAI Responses API - опционально через
OPENAI_API_KEY. - NVIDIA API - опционально через
NVIDIA_API_KEY. - Внешняя модель не выбирает и не ранжирует активности. Ranking, forecast и roadmap считает локальный deterministic engine.
- Ответ внешнего провайдера валидируется Pydantic-схемой и проверяется на неизвестные ID и неподдержанные числа.
Архитектура проекта
datasets/career_quest
|
v
backend/app/data.py
загрузка и валидация JSON/CSV
|
v
ml/engine.py
target resolution
skill gaps
recommendations
roadmap
|
v
backend/app/main.py
FastAPI JSON API
|
v
frontend/src
React/Vite интерфейс
Основные директории:
| Путь | Назначение |
|---|---|
backend/app/ | FastAPI backend, API endpoints, Pydantic models, AI providers |
backend/app/services/ | Navigator service и AI provider chain |
ml/engine.py | Детерминированная логика рекомендаций, gaps, roadmap и skill gains |
frontend/ | React + TypeScript frontend |
datasets/career_quest/ | Датасет сотрудников, навыков, ролей, events и истории |
contracts/ | API contract и shared types |
docs/ | MVP spec, demo script, jury Q&A, final checklist, AI integration notes |
scripts/ | Smoke/eval/check scripts для демо и AI providers |
Данные
Датасет находится в datasets/career_quest.
| Файл | Содержимое |
|---|---|
skills.json | Каталог навыков, шкала 0-5, требования role profiles |
employees.json | 200 синтетических профилей сотрудников |
events.json | 40 обучающих мероприятий |
activity_history.csv | 2 743 записи истории участия |
Дата среза данных: 2026-10-01.
Все люди и компании в датасете вымышлены. Подробное описание структуры есть в datasets/career_quest/README.ru.md.
Установка и запуск
Требования
- Python 3.11 или новее
- Node.js 20.19 или новее
- npm
Проект в main запускается локально без Docker.
Windows PowerShell
Первичная установка из корня репозитория:
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt
npm --prefix frontend install
Запуск API в первом окне PowerShell:
.\.venv\Scripts\python.exe -m uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000
Запуск frontend во втором окне PowerShell:
npm --prefix frontend run dev
Откройте:
- Frontend: http://localhost:5173
- API health: http://localhost:8000/api/health
- Swagger/OpenAPI docs: http://localhost:8000/docs
macOS/Linux
python3 -m venv .venv
.venv/bin/python -m pip install -r backend/requirements.txt
npm --prefix frontend install
API:
.venv/bin/python -m uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000
Frontend:
npm --prefix frontend run dev
Откройте http://localhost:5173.
Конфигурация AI Navigator
По умолчанию проект работает без .env и без внешних API:
AI_PROVIDER=template
AI_FALLBACK_PROVIDER=template
Чтобы попробовать реальные провайдеры, скопируйте .env.example в .env и заполните ключи:
OPENAI_API_KEY=
NVIDIA_API_KEY=
Поддерживаемые переменные:
| Переменная | Назначение |
|---|---|
AI_PROVIDER | template, openai или nvidia |
AI_FALLBACK_PROVIDER | fallback provider |
OPENAI_API_KEY | ключ OpenAI |
NVIDIA_API_KEY | ключ NVIDIA |
OPENAI_MODEL | модель OpenAI, default gpt-4o-mini |
NVIDIA_MODEL | модель NVIDIA, default openai/gpt-oss-20b |
NVIDIA_BASE_URL | base URL NVIDIA API |
Если ключи не заданы, Navigator остается в offline/template режиме.
Как проверить решение жюри
Быстрый сценарий:
- Запустите API и frontend по инструкции выше.
- Откройте http://localhost:5173.
- В Employee mode используйте предвыбранного сотрудника
E0100или выберите другого. - Проверьте overview: целевая роль, readiness, ключевой gap и первая активность.
- Откройте Activities и нажмите Подробнее и начать на рекомендации.
- Посмотрите описание, prerequisites, skill gains, forecast и source IDs.
- Выполните последовательность Записаться -> Начать -> Отметить выполненным.
- Убедитесь, что readiness, recommendations, roadmap и activity history обновились.
- Откройте Roadmap и проверьте последовательность шагов.
- Откройте AI Navigator и задайте вопрос, например:
Почему эта активность лучше второй?. - Перейдите в HR overview и проверьте агрегированные показатели.
Повторяемый golden path описан в docs/DEMO_SCRIPT.md. Smoke script проверяет тот же сценарий в API:
.venv/bin/python scripts/demo_smoke_test.py
Для Windows PowerShell:
.\.venv\Scripts\python.exe scripts\demo_smoke_test.py
API
Base URL:
http://localhost:8000/api
Основные endpoints:
| Method | Path | Назначение |
|---|---|---|
GET | /health | Проверка состояния API и датасета |
GET | /ai/status | Статус AI provider chain без секретов |
GET | /employees | Список сотрудников |
GET | /employees/{employee_id} | Профиль сотрудника |
GET | /employees/{employee_id}/skill-gap | Gap analysis |
GET | /employees/{employee_id}/recommendations | Рекомендации |
GET | /employees/{employee_id}/roadmap | Roadmap |
GET | /employees/{employee_id}/activities/{event_id} | Детали активности |
GET | /employees/{employee_id}/activity-history | История активности |
POST | /employees/{employee_id}/activities/{event_id}/actions/enroll | Записаться |
POST | /employees/{employee_id}/activities/{event_id}/actions/start | Начать |
POST | /employees/{employee_id}/activities/{event_id}/complete | Завершить |
POST | /employees/{employee_id}/navigator/ask | Вопрос AI Navigator |
GET | /hr/overview | HR overview |
Полный контракт: contracts/api.md.
Проверки
Backend tests:
.venv/bin/python -m pytest backend/tests tests -q --basetemp .pytest_local
Frontend typecheck/build:
npm --prefix frontend run typecheck
npm --prefix frontend run build
Проверка AI provider credentials:
.venv/bin/python scripts/check_ai_providers.py
Eval на пяти cases:
.venv/bin/python scripts/eval_ai_providers.py
Если ключи отсутствуют, AI scripts сообщат BLOCKED_BY_MISSING_KEY. Это ожидаемо для offline/template режима.
Ограничения текущей версии
- Это hackathon MVP, не production HR/LMS платформа.
- Данные синтетические; реальные персональные данные не используются.
- Демо-действия хранятся в памяти backend и сбрасываются после перезапуска.
- Нет авторизации, ролей доступа и SSO.
- Полноценная интеграция с LMS/HRIS не реализована; dataset содержит только ссылки, если они явно есть в данных.
- Внешние OpenAI/NVIDIA ответы считаются опциональными и требуют ключей.
- В репозитории не подтверждена deployed-версия.
Deployed-версия
Подтвержденной deployed-ссылки в репозитории нет. Проект рассчитан на локальный запуск.
Полезные документы
docs/MVP_SPEC.md- описание MVP behaviordocs/DEMO_SCRIPT.md- сценарий демонстрацииdocs/FINAL_GAP_ANALYSIS.md- финальные gaps и ограниченияdocs/AI_INTEGRATION.md- статус AI-интеграцииdocs/JURY_QA.md- вопросы и ответы для защитыdocs/FINAL_CHECKLIST.md- checklist перед демонстрациейcontracts/api.md- API contractdatasets/career_quest/README.ru.md- описание датасета
Авторы коммитов
История коммитов
- 2026-09-23 18:02feat(coach): persist employee chat history and follow-up contextAtazhanErbol
- 2026-09-23 17:57Merge pull request #5 from BAITC-Hacks/armatis/docs-main-readmeareke
- 2026-09-23 17:50chore(armatis): write README for main MVPArmat
- 2026-09-23 17:50docs: rewrite README in Russian for hackathon juryAtazhanErbol
- 2026-09-23 17:48chore(adil): verify OpenAI Navigator and improve free text answerstopchik77
- 2026-09-23 17:46chore(armatis): write Russian jury READMEArmat
- 2026-09-23 17:44fix(career-quest): polish mobile and tablet prototype layoutAtazhanErbol
- 2026-09-23 17:41chore(adil): checkpoint AI integration and demo flowtopchik77
Все коммиты (21)
- 2026-09-23 17:37fix(career-quest): award chain XP and clean imported active stateAtazhanErbol
- 2026-09-23 17:30feat(career-quest): build tested MVP, trilingual UI and jury READMEAtazhanErbol
- 2026-09-23 17:11feat(adil): harden Career Quest demo and navigatortopchik77
- 2026-09-23 16:44chore(adil): final Career Quest audit and demo flow; integrated frontend/backend/docs require cross-area overridetopchik77
- 2026-09-23 16:34chore(codex): add production runtime and CIArmat
- 2026-09-23 16:11feat(adil): bootstrap runnable Career Quest MVPtopchik77
- 2026-09-23 16:02chore(codex): implement Career Quest MVPArmat
- 2026-09-23 16:00chore(adil): career quest mvptopchik77
- 2026-09-23 15:25chore(armat): finalize Career Quest technical specificationArmat
- 2026-09-23 14:42Merge pull request #1 from BAITC-Hacks/adil/docs-career-quest-materialsAdil
- 2026-09-23 14:37chore(adil): add Career Quest dataset and cleaned specAdil
- 2026-09-23 12:46chore: add zero-token task routerArmat
- 2026-09-23 12:43chore: add codex team workflowArmat
Структура репозитория (66 файлов)
.env.example .gitignore AGENTS.md COMMIT_LOG.md FRIEND_SETUP.md MULTI_REPO_STRATEGY.md PROMPTS.md README.md SUBAGENTS.md TEAM_WORKFLOW.md backend/__init__.py backend/app/__init__.py backend/app/data.py backend/app/main.py backend/app/models.py backend/app/services/__init__.py backend/app/services/ai_provider.py backend/app/services/navigator.py backend/requirements.txt backend/tests/test_ai_provider.py backend/tests/test_api.py contracts/README.md contracts/api.md contracts/env.md contracts/events.md contracts/model-routing.md contracts/types.md datasets/career_quest/README.kz.md datasets/career_quest/README.md datasets/career_quest/README.ru.md datasets/career_quest/activity_history.csv datasets/career_quest/employees.json datasets/career_quest/events.json datasets/career_quest/skills.json docs/AI_INTEGRATION.md docs/DEMO_SCRIPT.md docs/FINAL_CHECKLIST.md docs/FINAL_GAP_ANALYSIS.md docs/JURY_QA.md docs/JURY_SCORECARD.md docs/MVP_SPEC.md docs/career-quest/Career_Quest_technical_spec.pdf frontend/.gitignore frontend/index.html frontend/package-lock.json frontend/package.json frontend/src/App.tsx frontend/src/api.ts frontend/src/audit.css frontend/src/main.tsx frontend/src/styles.css frontend/src/types.ts frontend/src/vite-env.d.ts frontend/tsconfig.json frontend/vite.config.ts ml/__init__.py ml/engine.py scripts/check_ai_providers.py scripts/demo_smoke_test.py scripts/eval_ai_providers.py scripts/route-task scripts/team-commit team-logs/.gitkeep team-logs/adil.md team-logs/armatis.md tests/test_engine.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.