Инструмент профориентации: подбирает подходящие профессии по чертам характера и предметным интересам человека. Задумано как помощь родителю в выборе профессии для ребёнка — но движок универсален.
Разработчикам и агентам: правила и workflow разработки — в CLAUDE.md; дизайн и планы — в
docs/superpowers/.
Интерес к работе зависит от того, как человеку нравится работать и чем он любит заниматься. Поэтому подбор идёт по двум слоям:
- 5 осей стиля (на основе RIASEC + Big Five): People↔Things, Logic↔Creativity,
Introvert↔Extravert, Order↔Freedom, Hands↔Head. Каждая ось —
levelот 1 (мало) до 3 (много) в сторону полюса. - ~11 тегов предметных областей (техника, природа, данные, искусство, медицина и т.д.) — «с каким материалом интересно».
Профессии лежат в дереве кластер → [группа] → поднаправление → профессия. Подбор считает
близость профиля к поднаправлениям и показывает подходящие профессии. Глубина показа
зависит от возраста (reveal_stage): младшим всё «схлопывается» в широкие узлы (например,
«врач»), старшим раскрывается до конкретных специальностей.
npm install
npm test # юнит-тесты (Vitest)
npm run lint # Biome: формат + правила
npm run validate # проверка целостности каталога
npm run dev:web # дев-сервер игры на http://localhost:8000 (пересборка по обновлению, source maps)
npm run build:web # собрать статический бандл web/app.jsИгра: npm run dev:web и открыть http://localhost:8000 (при сохранении — обновить вкладку).
src/
types.ts типы (контракт)
registries.ts загрузка конфигов (оси/области/этапы/веса)
catalog.ts загрузка каталога, индекс, наследование подписей
scoring/style.ts близость по осям (взвешенное евклидово → 0..1)
scoring/domain.ts совпадение предметных интересов → 0..1
rollup.ts видимость по возрасту, сворачивание к видимому предку
match.ts движок подбора: профиль → ранжированные результаты
validator/ проверка каталога + CLI
data/
config/ axes / domains / stages / scoring (реестры-конфиги)
catalog/catalog.json дерево профессий (источник истины)
tests/ юнит-тесты + фикстуры
docs/superpowers/ спецификации и планы
Поток подбора: профиль (оси + интересы + возраст) → match() → топ-результаты
(с разворачиванием/сворачиванием по возрасту).
import { loadCatalog } from "./src/catalog";
import { loadRegistries } from "./src/registries";
import { match } from "./src/match";
const reg = loadRegistries("data/config");
const catalog = loadCatalog("data/catalog/catalog.json");
const result = match(catalog, reg, {
axes: { people_things: 3, logic_creativity: -2, introvert_extravert: -2, order_freedom: -3, hands_head: 3 },
domains: { digital_it: 1, law_order: 1 },
stage: "university",
});
console.log(result[0]); // { nodeId, label, score, style, domain, members }- Этап 1 — движок, формат, валидатор: готово.
- Этап 2 — наполнение каталога: кластер «IT и данные» готов; остальные кластеры в работе.
- Этап 3 — интерактивная мини-игра (квиз → профиль → карта профессий): запланирован.
Подробности и роадмап — в CLAUDE.md и docs/superpowers/.