Capablio

Data contract

Two JSON artifacts are produced by the pipeline. Both use "schema_version": 1.

Updated

data.json (parse stage)

Written by feedback360.parse_360.parse(). Top-level object:

Field Type Description
schema_version int Always 1.
subject string Feedback recipient name from the Thomas PDF cover.
sources object thomas_pdf path string; snapshot_pdf path or omitted when no snapshot was passed; packaged always false; note explains PDFs are external inputs not bundled in generated packages.
scale object min, max (1 and 7), labels map for anchor text on the frequency scale.
respondents object Keys: Self, Manager, Peer, Team, Customer. Each value has minimum (required invite count) and completed (actual responses).
importance array One object per competency, sorted by ascending avg_rank as printed in the report.
competencies array Twelve competencies in fixed Thomas order (see COMPETENCY_ORDER in parse_360.py).
qualitative array Three question objects with verbatim comments (15 each for current PDFs).
snapshot_highlights array {page, text, status, correction?} bullets from optional snapshot deck; empty when --snapshot omitted.
overrides_applied array Deterministic pipeline correction tags (snapshot_p*_…_reclassified_as_overclaim, plus fixed pipeline tags) and optional JSON paths merged from overrides.json.
warnings array Optional. Parser notes when distribution geometry could not be validated.

importance[] entry

Field Type Description
competency string Full competency name.
ranks object Integer ranks for Self, Manager, Peer, Team, Customer.
avg_rank float Report-printed average rank (one decimal); not recomputed.
rating float Demonstration rating from importance table (one decimal).

competencies[] entry

Field Type Description
name string Competency title.
code int Thomas competency number (1–12).
definition string Competency definition paragraph from PDF.
overall_rating object excluding_self and including_self floats from PDF.
statements array Behavioral statements for this competency.

competencies[].statements[] entry

Field Type Description
text string Statement wording.
averages object Mean score per rater group present (SelfCustomer). Keys omitted when group has no rating.
ranges object Optional per-group [min, max] when PDF prints “X to Y” for multi-rater groups.
distributions object or null Per-group score histograms; null if geometric parse failed (see warnings).
avg_excluding_self float Mean of non-self group averages (computed, 2 decimals).
avg_including_self float Mean including self when present (computed, 2 decimals).

distributions[group]

Field Type Description
scores object Map score string "1""7" to integer count; zero counts omitted.
not_observed int Count of “not observed” responses for that group.

qualitative[] entry

Field Type Description
question string Survey question text.
comments array Verbatim anonymized comments.

snapshot_highlights[] entry

Field Type Description
page int 1-based page number in snapshot PDF.
text string Highlight bullet text (verbatim deck quote).
status string verified, overclaim, or context — audit vs Thomas data.
correction string Optional data-grounded correction when status is overclaim.

metrics.json (analyze stage)

Written by feedback360.analyze.analyze().

Field Type Description
schema_version int Always 1.
weights object Default w_importance, w_performance, w_blindspot, and exec_relevance map per competency.
competency_metrics array One derived record per competency (same order as data.competencies).
statement_metrics array One record per statement (54 total).
inversions array Competencies with |rank_gap| ≥ 4.
cta array Prioritized development action cards.
qual_themes array Keyword-grouped qualitative excerpts.
sentiment object Per-comment lexicon scores, plus by_question and by_theme aggregates.
swot object strengths, weaknesses, opportunities, threats arrays of rule-extracted items.
section_summaries object Executive summary strings for each tab (summary, matrix, gaps, …) plus themes map.
kpis object Summary-tab KPI snapshot derived from current params (see below).
headline_findings array 5–8 expandable executive findings with comment-backed detail (see below).
priority_matrix array Cohort priority heatmap rows ordered by ascending avg_rank (see below).
priority_matrix_summary object Per-rater-group one-sentence summaries of flagged cohort gaps.
johari object Johari 2×2 perception partition with quadrant items and findings (see below).

priority_matrix[] entry

Field Type Description
competency string Full competency name.
short string Abbreviated label for UI chips.
avg_rank float Report average importance rank.
ranks object Self, Manager, Peer, Team, Customer importance ranks from data.importance.
ratings object self (self_score), others (current rating_excluding_self, weight-aware), plus per-group rater_scores.
cohort_gaps object Per non-self group: rank, rating, median (of that group's 12 competency ratings), gap (= median − rating, 2 decimals), flag (true when rank ≤ 4 and rating ≤ median − 0.25), borderline (true when rank ≤ 4 and median − 0.25 < rating < median).

priority_matrix_summary object

Keys: Manager, Peer, Team, Customer. Each value is a one-sentence template naming full-gap and borderline competencies (within 0.25 of the group median), with ranks, ratings, and medians (or stating none).

johari object

Field Type Description
thresholds object gap (0.25) and divergence (2.0) cutoffs.
quadrants object Keys: arena, blind_spot, hidden_strength, contested.

Partition rules (first match wins): divergence ≥ threshold → contested; self_gap ≥ gap → blind_spot; self_gap ≤ −gap → hidden_strength; else arena. Arena items include kind: strength when rating_excluding_self ≥ median of 12, else development.

Each quadrant object:

Field Type Description
label string Human-readable sector title.
items array {competency, short, self, others, self_gap, kind?} — every competency appears in exactly one quadrant.
finding string 2–4 sentence executive paragraph (≥120 chars, ≥2 numbers); empty quadrants use a one-sentence placeholder.
sources array Optional {question_index, comment_index, excerpt} when a qualitative quote is embedded in finding.

section_summaries.perception

Executive summary for the Perception tab: cohort-gap count, Johari quadrant counts, and how to use both views together (≥120 chars, includes numbers).

kpis object

Field Type Description
overall_avg float Mean of the 12 rating_excluding_self values (2 decimals); uses weighted ratings when rater weights are non-uniform.
develop_count int Count of competencies in the develop quadrant under current params.
lowest_statement object {text, score, competency} for the lowest avg_excluding_self in statement_metrics.
widest_inversion object {competency, self_rank, others_rank_mean, gap} for the largest |self_rank − others_rank_mean|.
max_divergence object {competency, value, high_group, high, low_group, low} for peak rater spread.

explainers map

Element-specific flyout copy generated inside compute_metrics (recomputed with every /api/metrics POST). Keys are stable ids; values are objects:

Field Type Description
title string Short heading for the flyout.
body string 2–4 sentences (≥120 chars) citing the element's current value(s).
computation string Formula or extraction source (≥30 chars).
interpretation string Executive-development meaning of the current value (≥40 chars).
sources array Non-empty list of JSON paths and/or PDF references.

Id naming (slug = competency lowercased, non-alphanumerics → hyphens):

Pattern Count Explains
kpi.overall_avg, kpi.develop_count, kpi.lowest_statement, kpi.widest_inversion, kpi.max_divergence 5 Summary KPI cards
competency.<slug> 12 Competency scores, gap, quadrant, importance
stmt.<idx>.avg, stmt.<idx>.spread 108 Statement averages and spread (idx 0–53)
heatmap.<group>.<slug> 48 group ∈ manager/peer/team/customer
quadrant.develop, quadrant.leverage, quadrant.maintain, quadrant.monitor 4 Quadrant definition + current members
flag.lowest_overall, flag.low_score, flag.high_disagreement, flag.manager_low, flag.self_overrated 5 Flag rules + current counts
sentiment.positive, sentiment.mixed, sentiment.neutral, sentiment.negative 4 Sentiment rules + comment counts
johari.arena, johari.blind_spot, johari.hidden_strength, johari.contested 4 Johari quadrants + members
section.summary, section.matrix, … section.cta 8 Tab summaries
cta.<rank> one per CTA Priority score composition for that action

headline_findings[] entry

Field Type Description
id string Stable slug (e.g. vision-inversion).
tab string Related view: matrix, gaps, divergence, statements, voices, or cta.
text string One-line headline with numeric citations from current metrics.
detail string 2–5 sentence executive paragraph (≥200 chars) blending numbers with a verbatim qualitative excerpt.
sources array {question_index, comment_index, excerpt} references into data.qualitative.
confidence string high, moderate, directional, or audience-split — epistemic strength of the finding.

Findings are recomputed inside compute_metrics for every params POST so KPI cards, headline blocks, and CTA evidence stay aligned with rater weights, importance lens, and exec relevance.

significance object

Margin-of-error layer for small-sample interpretation.

Field Type Description
method string Always group-mean t-interval.
note string Canonical margin-of-error guidance paragraph.
statements array One entry per statement (54 total).
competencies array One entry per competency (12 total).

Each significance.statements[] entry: text, competency, n_groups, group_moe95 (float or null), self_gap, verdict (robust, directional, or insufficient), score_signal (high-confidence strength, solid, development signal, or low-confidence).

Each significance.competencies[] entry: name, group_moe95, self_gap, verdict, score_signal.

score_signal rules (statement mean = avg_excluding_self; competency mean = others_score): high-confidence strength when mean ≥ 6.2 and group_moe95 ≤ 1.0; solid when mean ≥ 5.5 and group_moe95 ≤ 1.5; development signal when mean < 5.2; otherwise low-confidence. verdict retains self-gap semantics (robust when |self_gap| ≥ MOE).

cta[] confidence

Each CTA card includes confidence (high, moderate, or directional): high when the importance weight term dominates the priority formula; directional when both self gap < 0.5 and rank gap < 3; otherwise moderate.

competency_metrics[] entry

Field Type Description
name string Competency name.
self_score float Mean of statement averages.Self (2 decimals).
others_score float overall_rating.excluding_self from data.
self_gap float self_score - others_score (2 decimals).
rater_scores object Mean statement average per Manager, Peer, Team, Customer.
divergence float max(rater_scores) − min(rater_scores) (2 decimals).
importance object self_rank, others_rank_mean, avg_rank, rank_gap.
rating_excluding_self float Copy of competency overall excluding self.
quadrant string develop, leverage, maintain, or monitor.
importance_norm float (13 - avg_rank) / 12.
performance_need float clamp((7 - rating_excluding_self) / 2, 0, 1).
blindspot float clamp(self_gap, 0, 1).
priority_score float Weighted formula × exec_relevance (3 decimals).

statement_metrics[] entry

Field Type Description
competency string Parent competency name.
text string Statement text (matches data).
avg_excluding_self float From data statement.
self_gap float Self average minus avg_excluding_self when self present.
spread int Max group range width; 0 if no ranges.
flags array Subset of: lowest_overall, low_score, high_disagreement, manager_low, self_overrated.

inversions[] entry

Field Type Description
competency string Competency name.
self_rank int Self importance rank.
others_rank_mean float Mean of Manager/Peer/Team/Customer ranks.
direction string underweighted_by_self or overweighted_by_self.
note string Human-readable summary.

cta[] entry

Field Type Description
rank int 1-based priority order after sort by priority_score desc.
title string Short action headline.
competency string Linked competency.
priority_score float Score used for ordering.
evidence array Data-grounded bullet strings.
actions array 2–4 concrete development steps.

qual_themes[] entry

Field Type Description
theme string Theme label from keyword map.
competencies array Related competency names.
comments array {question_index, comment_index, excerpt} references into qualitative data.

sentiment object

Field Type Description
comments array One entry per qualitative comment: question_index, comment_index, score (−1..1), label, evidence_terms.
by_question array Per-question avg_score and label counts.
by_theme array Per qual-theme avg_score and label counts.

swot object

Each category (strengths, weaknesses, opportunities, threats) is an array of items:

Field Type Description
statement string One-sentence synthesized summary.
competencies array Related competency names.
sources array {question_index, comment_index, excerpt} references.
corroboration string Quantitative tie-in with numeric citations.

section_summaries object

Field Type Description
summarycta string 2–4 sentence tab executive summaries (≥120 chars, include numbers).
perception string Perception tab summary (cohort matrix + Johari counts).
themes object Map theme name → 1–2 sentence summary with sentiment counts.

See pipeline.md for how these files are produced and README.md for CLI usage.