Career Quest
Платформа, которая по профилю сотрудника подбирает 1–3 шага развития с объяснением, показывает радар компетенций, моделирует альтернативные…
О проекте
Команда: Gophers
Кейс HackAlem.ai: Менеджмент — Halyk Bank · кейс 1
Стадия: Рабочий MVP
Задача кейса: «Career Quest»: AI-навигатор, связывающий навыки сотрудника с шагами развития
Суть
Платформа, которая по профилю сотрудника подбирает 1–3 шага развития с объяснением, показывает радар компетенций, моделирует альтернативные траектории Career Twin и даёт HR-дашборд.
Как устроено
Анализатор профиля считает разрывы навыков до следующего грейда, critical_skills и метрики истории активностей. Скоринговый движок оценивает gap, history (штрафы за drop/no-show), availability и fit и выбирает топ-1..3 события. LLM-explainer пишет обоснование на kk/ru/en по цепочке OpenAI gpt-4o-mini → NVIDIA API → эвристика, с кэшем и бюджетом 8 с. Отметка «выполнено» пересчитывает навыки. Career Twin строит быстрый и гибкий путь с учётом формата и часов в неделю и прогнозирует readiness %.
Ключевые решения
- gap analysis
- weighted scoring
- multi-LLM fallback chain
- heuristic fallback
- role-based access (X-Role)
- path planning
Особенности
Есть отдельный тест на проверочный профиль жюри с конфликтом факторов (System Design против Public Speaking). Работу разделили между AI-агентами через AGENTS.md и заранее согласованный OpenAPI-контракт. Цепочка fallback из трёх LLM-провайдеров.
Стек
Python · FastAPI · React · TypeScript · Vite · Docker Compose · OpenAPI 3.1 · pytest
Модели
OpenAI gpt-4o-mini · NVIDIA API
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-463da2da-gophers.
README
README.mdCareer Quest — AI-навигатор развития сотрудника
Хакатон: HackAlem AI | Трек: Halyk Bank | Команда: Gophers
Платформа геймификации жизненного цикла сотрудника с объяснимыми AI-рекомендациями развития, динамическим радаром компетенций и моделированием альтернативных карьерных траекторий (Career Twin).
🌟 Ключевые возможности
-
Профиль сотрудника и радар компетенций:
- Наглядная карта hard/soft навыков (текущий уровень vs требования следующего грейда).
- Выделение критичных навыков (
critical_skill) для повышения. - История активностей за 24 месяца со статусами прохождения.
-
Объяснимые AI-рекомендации (Explainability):
- Подбор 1–3 релевантных шагов с обоснованием минимум по 3 факторам: грейд, разрывы компетенций, история участия (штрафы за drop/no-show), критичность для промоушена и пререквизиты.
- Multi-LLM Pipeline: OpenAI
gpt-4o-mini(основная) $\to$ NVIDIA API (фолбэк) $\to$ Heuristic Fallback (без падений при отсутствии ключей/сети). - Локализация обоснования на 3 языка: казахский (
kk), русский (ru), английский (en).
-
Интерактивный цикл развития (Completion):
- Отметка активности как выполненной пересчитывает навыки с учетом правила роста (
gainдоmax_level) и обновляет траекторию в реальном времени.
- Отметка активности как выполненной пересчитывает навыки с учетом правила роста (
-
Career Twin (Альтернативные карьерные пути):
- Сравнение «Быстрого пути» (максимальная скорость закрытия разрывов) и «Гибкого пути» с учетом ограничений сотрудника (формат: онлайн / офлайн / в своем темпе, доступные часы в неделю).
- Прогноз готовности к следующему грейду (
readiness %).
-
HR-дашборд и приватность:
- Агрегированная аналитика по проседающим навыкам и вовлеченности в разрезе департаментов.
- Строгое соблюдение приватности: данные об индивидуальной вовлеченности скрыты от коллег, доступ к HR-аналитике защищен ролью (
X-Role: hr).
-
Проверочные профили жюри (Jury-Ready):
- Эндпоинт
POST /admin/load-datasetдля загрузки дополнительных тестовых профилей и истории в формате стартового кита. - Успешно проходит проверочный сценарий жюри с конфликтом факторов (System Design vs Public Speaking).
- Эндпоинт
🚀 Быстрый запуск и деплой (One-Command Deploy)
Запуск через Docker Compose (Рекомендуемый способ для жюри)
Все сервисы (бэкенд, фронтенд, датасет) поднимаются одной командой:
# 1. Склонируйте репозиторий и перейдите в папку проекта
git clone https://github.com/BAITC-Hacks/hack-463da2da-gophers.git
cd hack-463da2da-gophers
# 2. (Опционально) Создайте .env и укажите ключи для LLM-объяснений:
cp .env.example .env
# Заполните OPENAI_API_KEY и/или NVIDIA_API_KEY в .env (при их отсутствии работает мгновенный heuristic fallback)
# 3. Запустите проект одной командой:
docker compose up --build
После запуска доступны:
- 🌐 Frontend (UI): http://localhost:5173
- 🔌 Backend API: http://localhost:8000
- 📑 Интерактивная документация Swagger/OpenAPI: http://localhost:8000/docs
💻 Локальный запуск для разработки
Бэкенд (Python 3.11+ / FastAPI):
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# Запуск тестов (45 тестов):
pytest
# Запуск сервера:
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
Фронтенд (React / TypeScript / Vite):
cd frontend
npm install
npm run build # Проверка типов и сборка
npm run dev # Запуск дев-сервера на http://localhost:5173
🏗️ Архитектура проекта
hack-463da2da-gophers/
├── backend/
│ ├── app/
│ │ ├── ai/ # AI-ядро
│ │ │ ├── core/ # Анализатор профиля, расчет гэпов и скоринг
│ │ │ ├── llm/ # Мультиязычный LLM Explainer (OpenAI/NVIDIA/Heuristic)
│ │ │ └── recommender.py # Главный оркестратор рекомендаций
│ │ ├── api/ # FastAPI эндпоинты, Pydantic схемы, хранилище
│ │ │ ├── routes.py # REST API маршруты
│ │ │ ├── store.py # In-memory хранилище датасета с валидацией
│ │ │ └── career_paths.py # Движок Career Twin
│ │ └── main.py # Точка входа FastAPI
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── pages/ # Страницы сотрудника, HR-дашборда, Career Twin
│ │ ├── api/ # Клиент API по OpenAPI контракту
│ │ ├── i18n.ts # Локализация на kk/ru/en
│ │ └── theme/ # Темная и светлая темы Halyk
├── docs/
│ └── openapi.yaml # OpenAPI 3.1.0 спецификация контракта
├── career_quest_dataset/ # Датасет стартового кита (200 профилей, 40 событий)
└── docker-compose.yml # Единый конфигуратор запуска
📡 Спецификация API (OpenAPI 3.1)
| Метод | Эндпоинт | Описание | Заголовки / Доступ |
|---|---|---|---|
GET | /health | Проверка работоспособности сервиса | Публичный |
GET | /employees | Список всех сотрудников компании | X-Role: hr |
GET | /employees/{id} | Профиль сотрудника, радар навыков, история | X-Role: employee / hr |
POST | /recommendations/{id} | AI-рекомендации с обоснованием (≥3 фактора) | X-Role: employee / hr |
POST | /employees/{id}/complete/{event_id} | Отметка о прохождении и пересчет навыков | X-Role: employee / hr |
POST | /employees/{id}/career-paths | Моделирование путей Career Twin | X-Role: employee / hr |
GET | /hr/dashboard | HR-аналитика проседающих компетенций | X-Role: hr |
POST | /admin/load-dataset | Загрузка проверочных датасетов жюри | X-Role: hr |
🎯 Сценарий демонстрации для жюри (Demo Script)
-
Открытие профиля сотрудника:
- Перейдите на http://localhost:5173.
- Выберите сотрудника E0028 (Middle Backend Engineer).
- Продемонстрируйте радар компетенций (текущий уровень vs требования Senior) и историю активностей.
-
Генерация AI-рекомендаций:
- В блоке рекомендаций отображаются релевантные курсы и воркшопы.
- Раскройте карточку: отображаются 3+ фактора скоринга и связное человечное обоснование на казахском/русском/английском языке.
-
Интерактивный сдвиг прогресса:
- Нажмите «Выполнено» на одной из карточек.
- Навык мгновенно вырастает с соблюдением
max_level, радар перестраивается, а рекомендации автоматически пересчитываются.
-
Проверка Career Twin:
- Разверните блок «Выбрать другой путь».
- Укажите фильтр (например, только
online, 4 часа в неделю) $\to$ система построит быстрый и гибкий маршруты с прогнозом готовности к промоушену.
-
HR-дашборд и безопасность:
- Перейдите во вкладку «HR-дашборд».
- Показаны топ-проседающие компетенции по департаментам и общая вовлеченность при сохранении приватности личных оценок.
-
Проверочный конфликтный кейс жюри:
- Запустите команду тестирования конфликтного профиля:
pytest backend/app/ai/tests/test_jury_check.py— убедитесь, что алгоритм не ведется на поверхностный гэп и отдает приоритет критическому навыку с учетом истории пропусков.
- Запустите команду тестирования конфликтного профиля:
👥 Команда разработчиков
Проект разработан командой Gophers для хакатона HackAlem AI (Halyk Bank Track).
Авторы коммитов
История коммитов
- 2026-09-23 17:55docs: complete production README with deployment guide and architectureMr.RobotDumbazz
- 2026-09-23 17:52feat(front): align employee and HR requests with API accesstsuyundi
- 2026-09-23 17:41fix(api): align available steps with trajectory rulesalmaltynbek
- 2026-09-23 17:41feat(api): enforce employee and HR access scopesalmaltynbek
- 2026-09-23 17:41fix(api): validate jury upload recordsalmaltynbek
- 2026-09-23 17:41test(api): cover recommendation eligibility for all profilesalmaltynbek
- 2026-09-23 17:39fix(front): improve language menu contrast and Kazakh typographytsuyundi
- 2026-09-23 17:35feat(front): add language switcher and activity timelinetsuyundi
Все коммиты (50)
- 2026-09-23 17:28feat(front): add official Halyk Bank logotsuyundi
- 2026-09-23 17:24feat(front): surface career paths near profiletsuyundi
- 2026-09-23 17:21feat(front): add alternative career pathstsuyundi
- 2026-09-23 17:08feat(api): add Career Twin path planneralmaltynbek
- 2026-09-23 17:01docs: add Career Twin MVP ownership planalmaltynbek
- 2026-09-23 16:27feat(front): add Halyk brand contexttsuyundi
- 2026-09-23 16:24feat(front): apply green gold visual themetsuyundi
- 2026-09-23 16:21feat(front): elevate visual design systemtsuyundi
- 2026-09-23 16:14docs: describe secure OpenAI setup for juryalmaltynbek
- 2026-09-23 16:10feat(front): add employee profile selectortsuyundi
- 2026-09-23 16:08fix(front): keep recommendation selection compatibletsuyundi
- 2026-09-23 16:08feat(front): support selected employee recommendationstsuyundi
- 2026-09-23 16:05fix(front): resolve localized heading typetsuyundi
- 2026-09-23 16:05feat(front): localize profile UI labelstsuyundi
- 2026-09-23 16:03feat(front): expand interface translationstsuyundi
- 2026-09-23 15:55feat(front): show gap closing activitiestsuyundi
- 2026-09-23 15:54feat(front): add profile language localizationtsuyundi
- 2026-09-23 15:51feat(front): load live HR dashboardtsuyundi
- 2026-09-23 15:49test(api): cover jury profile dataset uploadalmaltynbek
- 2026-09-23 15:48feat(front): refresh profile after completiontsuyundi
- 2026-09-23 15:44feat(front): complete recommendations through APItsuyundi
- 2026-09-23 15:40feat(front): load live recommendations with statestsuyundi
- 2026-09-23 15:32docs: add integration follow-up checklistMr.RobotDumbazz
- 2026-09-23 15:26feat(front): add live API client methodstsuyundi
- 2026-09-23 15:25feat(api): align recommendation response with contractalmaltynbek
- 2026-09-23 15:21docs: add demo readiness planalmaltynbek
- 2026-09-23 15:13feat(front): show progress after recommendation completiontsuyundi
- 2026-09-23 15:08feat(front): add privacy-safe HR dashboardtsuyundi
- 2026-09-23 15:03feat(ai): support backend recommendation integrationalmaltynbek
- 2026-09-23 14:54feat(front): add recommendation cardstsuyundi
- 2026-09-23 14:29feat(ai): LLM-слой explainer — OpenAI→NVIDIA→heuristic, кэш до конца дня, бюджет 8 c (замещаю 2-й контекст)Mr.RobotDumbazz
- 2026-09-23 14:28feat(front): add employee profile and skills viewtsuyundi
- 2026-09-23 14:25test(ai): этап 4 — проверочный профиль жюри: SD побеждает PS при негативной истории, контроль симметрииMr.RobotDumbazz
- 2026-09-23 14:24feat(ai): этап 2b — recommender.py: интеграция core+llm, фолбэк-объясненияMr.RobotDumbazz
- 2026-09-23 14:23feat(ai): этап 2 — скоринговый движок: gap/history/availability/fit, фильтры, топ-1..3Mr.RobotDumbazz
- 2026-09-23 14:22feat(front): scaffold Vite React applicationtsuyundi
- 2026-09-23 14:22feat(front): remove generated TypeScript artifactstsuyundi
- 2026-09-23 14:21feat(ai): этап 1 — анализ профиля: разрывы навыков, critical_skills, метрики историиMr.RobotDumbazz
- 2026-09-23 14:12feat(api): implement Career Quest backend endpointsalmaltynbek
- 2026-09-23 14:01feat(ai): контракт AI-ядра (contracts.py) + параллельные зоны core/ (GLM) и llm/ (Codex)Mr.RobotDumbazz
- 2026-09-23 13:53docs: роли по трекам (Backend=Алмас, Frontend=Тим), инструмент не определяет рольMr.RobotDumbazz
- 2026-09-23 13:40feat(ai): этап 0 — скелет репо, роли агентов (AGENTS.md), TODO, docker-compose, OpenAPI-контрактMr.RobotDumbazz
Структура репозитория (67 файлов)
.env.example .gitignore AGENTS.md HackAlem AI_ Career Quest - платформа геймификации жизненного цикла сотрудника..docx README.md TODO.md backend/Dockerfile backend/app/__init__.py backend/app/ai/AGENTS.md backend/app/ai/__init__.py backend/app/ai/contracts.py backend/app/ai/core/__init__.py backend/app/ai/core/analyzer.py backend/app/ai/core/scoring.py backend/app/ai/llm/__init__.py backend/app/ai/llm/explainer.py backend/app/ai/recommender.py backend/app/ai/tests/conftest.py backend/app/ai/tests/fixtures.py backend/app/ai/tests/test_analyzer.py backend/app/ai/tests/test_explainer.py backend/app/ai/tests/test_jury_check.py backend/app/ai/tests/test_recommender.py backend/app/ai/tests/test_scoring.py backend/app/api/AGENTS.md backend/app/api/__init__.py backend/app/api/career_paths.py backend/app/api/routes.py backend/app/api/store.py backend/app/api/test_career_paths.py backend/app/api/test_eligibility.py backend/app/api/test_endpoint_access.py backend/app/api/test_jury_upload.py backend/app/api/test_routes.py backend/app/main.py backend/requirements.txt career_quest_dataset/case_1/career_quest_dataset/README.kz.md career_quest_dataset/case_1/career_quest_dataset/README.md career_quest_dataset/case_1/career_quest_dataset/README.ru.md career_quest_dataset/case_1/career_quest_dataset/activity_history.csv career_quest_dataset/case_1/career_quest_dataset/employees.json career_quest_dataset/case_1/career_quest_dataset/events.json career_quest_dataset/case_1/career_quest_dataset/skills.json docker-compose.yml docs/openapi.yaml frontend/.env.example frontend/AGENTS.md frontend/Dockerfile frontend/index.html frontend/package-lock.json frontend/package.json frontend/public/halyk-logo.svg frontend/src/App.tsx frontend/src/api/client.ts frontend/src/api/mock.ts frontend/src/api/types.ts frontend/src/i18n.ts frontend/src/main.tsx frontend/src/pages/CareerTwin.tsx frontend/src/pages/Placeholders.tsx frontend/src/pages/Recommendations.tsx frontend/src/styles.css frontend/src/theme/ThemeProvider.tsx frontend/src/vite-env.d.ts frontend/tsconfig.json frontend/tsconfig.node.json frontend/vite.config.ts
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.