# @leumas adapter — personality

Personality & psychometrics pack: score self-report questionnaires and look up types across the five most-used psychology frameworks — MBTI / Myers-Briggs (16 personality types, four dichotomies E/I...


Psychometric-frameworks capability pack. Score self-report personality questionnaires and look up
types across the five most-used psychology frameworks, then compare two types for heuristic
compatibility. Pure, deterministic, zero npm dependencies (Node built-ins only). All framework data
lives in [`data/frameworks.json`](./data/frameworks.json).

## Frameworks covered

| Key | Framework | Output |
|---|---|---|
| `mbti` | Myers–Briggs Type Indicator | 4-letter type (e.g. `INTJ`) + per-axis breakdown |
| `enneagram` | Enneagram of Personality | type 1–9 + wing (e.g. `4w5`) + ranked scores |
| `bigFive` | Big Five / OCEAN (five-factor) | percentile scores for O, C, E, A, N |
| `disc` | DISC assessment | primary/secondary style (e.g. `DI`) + percentages |
| `loveLanguage` | The Five Love Languages | primary language + ranked profile |

## Tools

- **`systems()`** — list every supported framework and its question count.
- **`questions({ system })`** — the quiz items for one system (to render a form).
- **`mbti({ answers })`** — score answers → 4-letter MBTI type + description, strengths, careers, breakdown.
- **`enneagram({ answers })`** — score answers → Enneagram type + wing + core desire/fear + ranked scores.
- **`bigFive({ answers })`** — score answers → OCEAN percentile scores + level (low/moderate/high) + descriptions.
- **`loveLanguage({ answers })`** — score answers → primary love language + ranked profile + tips.
- **`disc({ answers })`** — score answers → primary/secondary DISC style + percentage profile.
- **`typeInfo({ system, type })`** — rich lookup: description, strengths, weaknesses/watch-outs, careers.
- **`compatibility({ system, typeA, typeB })`** — heuristic compatibility score + factors (guidance, not prediction).

Every tool takes ONE args object (so an HTTP POST body maps 1:1) and returns a plain JSON object.

### Answer shapes

`answers` accepts either an **array** aligned to `questions(system).questions`, or an **object keyed by
question id**. Values may be a 1–5 Likert number, a boolean, or an `agree`/`disagree` string
(also `strongly agree`, `neutral`, `yes`/`no`, etc.). Unanswered items are simply skipped.

```js
import personality from './index.js';

// 1. get the items to show the user
const quiz = personality.adapters.questions({ system: 'mbti' });

// 2. score their answers (id-keyed here; an aligned array works too)
const result = personality.adapters.mbti({
  answers: { ei1: 5, ei3: 4, sn2: 5, sn4: 4, tf1: 5, tf3: 4, jp1: 5, jp3: 4 },
});
// -> { system: 'mbti', type: 'ENTJ', nickname: 'The Commander', description, strengths, careers, breakdown }

// 3. describe a type / compare two types
personality.adapters.typeInfo({ system: 'enneagram', type: 4 });
personality.adapters.compatibility({ system: 'mbti', typeA: 'INTJ', typeB: 'ENFP' });
```

## DRY boundary

This pack is **psychometrics** — evidence-derived self-report frameworks with data-driven scoring
that depend only on a person's own answers. It deliberately does **not** overlap the ecosystem's
**mystic / entertainment** packs:

- **`astrology`** — zodiac, natal charts, horoscopes (sign/date-based divination).
- **`numerology`** — life-path / expression numbers from a name and birthdate.

There is no sign, date, or name math here, and none of those packs score questionnaires. If you need
personality *from answers*, use `personality`; if you want zodiac/numerology novelty, use those.

## Notes

- **Deterministic:** the same answers always produce the same result; ties resolve by a stable,
  documented order (MBTI ties favor the first pole; Enneagram/DISC/love-language ties favor the
  declared item order).
- **Not clinical.** Results are for self-reflection, team-building, and guidance — not diagnosis or
  prediction. Compatibility scores are heuristic.


---
Source: shared/engines/adapters/domain/personality/README.md
Canonical: https://docs.leumas.tech/p/adapters/domain/personality
