AAYMA
RU
Войти

Career Quest

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

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

О проекте

Команда: 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.md

Career 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.
  • После complete backend обновляет 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 для защиты.

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

  1. Backend загружает датасет из datasets/career_quest.
  2. Frontend получает список сотрудников и показывает Employee/HR сценарии.
  3. Для сотрудника Career Engine определяет цель: явная career_goal из датасета или следующий грейд, если цель не задана.
  4. Engine сравнивает текущие/effective skills с требованиями target role profile.
  5. На основе gaps и каталога events система считает рекомендации, прогноз влияния и roadmap.
  6. AI Navigator получает только ограниченный evidence packet и объясняет уже рассчитанный результат.
  7. При завершении активности изменения применяются в памяти процесса backend. Исходные JSON/CSV файлы не меняются.
  8. После перезапуска 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.json200 синтетических профилей сотрудников
events.json40 обучающих мероприятий
activity_history.csv2 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

Откройте:

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_PROVIDERtemplate, openai или nvidia
AI_FALLBACK_PROVIDERfallback 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_URLbase URL NVIDIA API

Если ключи не заданы, Navigator остается в offline/template режиме.

Как проверить решение жюри

Быстрый сценарий:

  1. Запустите API и frontend по инструкции выше.
  2. Откройте http://localhost:5173.
  3. В Employee mode используйте предвыбранного сотрудника E0100 или выберите другого.
  4. Проверьте overview: целевая роль, readiness, ключевой gap и первая активность.
  5. Откройте Activities и нажмите Подробнее и начать на рекомендации.
  6. Посмотрите описание, prerequisites, skill gains, forecast и source IDs.
  7. Выполните последовательность Записаться -> Начать -> Отметить выполненным.
  8. Убедитесь, что readiness, recommendations, roadmap и activity history обновились.
  9. Откройте Roadmap и проверьте последовательность шагов.
  10. Откройте AI Navigator и задайте вопрос, например: Почему эта активность лучше второй?.
  11. Перейдите в 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:

MethodPathНазначение
GET/healthПроверка состояния API и датасета
GET/ai/statusСтатус AI provider chain без секретов
GET/employeesСписок сотрудников
GET/employees/{employee_id}Профиль сотрудника
GET/employees/{employee_id}/skill-gapGap analysis
GET/employees/{employee_id}/recommendationsРекомендации
GET/employees/{employee_id}/roadmapRoadmap
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/overviewHR 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 behavior
  • docs/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 contract
  • datasets/career_quest/README.ru.md - описание датасета
Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
21
Авторы
5
Файлы
66
Ветки
9

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

Armat 7topchik77 6AtazhanErbol 5Adil 2areke 1

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

  • 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
Ветки (9)

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

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

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