Each diagnosis mode compares normalized answers with material-persona feature vectors
Selected-mode answers → normalization → ranking by similarity to persona featuresSOUL/ALLOY treats the original 4 axes, Big Five, and RIASEC as separate layers for different purposes. Enneagram is not the main public diagnosis axis; it is a supplementary layer for interpretation and character understanding.
SOUL/ALLOY's original personality 4-axis items
Measures four axes: External Link/Internal Cohesion, Pattern Forecast/Concrete Observation, Logic Crystal/Resonant Judgment, Fluid Exploration/Solidified Design
International Personality Item Pool
Big Five: O, C, E, A, N factors
9-type organization as a typological framework
Uses motivations, fears, and desires across 9 types as supporting information for persona interpretation
Calculate similarity from score differences on each axis
Compare vector directions (tendency patterns)
References both absolute values and vector direction according to each scale's characteristics
// Original 4-axis similarity
const fourAxisSimilarity = 1 - Math.sqrt(
Math.pow(user.ei - persona.ei, 2) +
Math.pow(user.sn - persona.sn, 2) +
Math.pow(user.tf - persona.tf, 2) +
Math.pow(user.jp - persona.jp, 2)
) / 200; // max distance = sqrt(100^2 * 4) = 200
// Reference layers use each mode's vector space
const bigFiveSimilarity = compareBigFive(user.bigFive, persona.bigFive);
const riasecSimilarity = compareRiasec(user.riasec, persona.riasec);
// Supplementary labels can enrich interpretation without becoming
// the public diagnosis axis.
const result = rankPersonasBySelectedMode({
fourAxisSimilarity,
bigFiveSimilarity,
riasecSimilarity,
enneagramHint: persona.enneagram,
});Normalized to 0-100, designed to avoid extreme values
Main type and wing are used as interpretive support, not as the primary public diagnosis decision
Calculated with reverse scoring for negative items
詳細な計算式は docs/35_technical_guide/03_DIAGNOSIS_MECHANISM.md をご参照ください。