docs(milestone): merge v0.3-mastery-scoring → main
v0.3 milestone merged to main. Mastery scoring + competency rubrics + verifiable credentials (formative-tier) shipped. 13/13 REQ-IDs covered. Next milestone: v0.4 (operator tier — cohort dashboard + auth + Postgres). ---ci--- project: praxis phase: 2 milestone: v0.3 status: complete milestone_complete: true milestone_merged_to_main: true ---/ci---
This commit is contained in:
@@ -0,0 +1,219 @@
|
||||
id: customer_service
|
||||
skill: customer_service
|
||||
archetype: refund_complaint
|
||||
description: |
|
||||
Customer Service rubric for the refund/complaint archetype (D-039).
|
||||
4 criteria, 5-level behavioral anchors per RESEARCH §2 (Dreyfus + Miller "Does"
|
||||
+ EPA entrustment). Professionalism = conjunctive floor ≥2 (RESEARCH §4.1).
|
||||
criteria:
|
||||
- id: empathy
|
||||
name: Empathy / Emotional Attunement
|
||||
weight: 0.35
|
||||
conjunctive_floor: null
|
||||
levels:
|
||||
- level: 1
|
||||
label: Fail
|
||||
anchor: >
|
||||
No acknowledgement of emotion; jumps straight to policy/transactional
|
||||
response. Customer feels unheard.
|
||||
signals:
|
||||
- no_acknowledgement
|
||||
- policy_first_before_emotion
|
||||
- level: 2
|
||||
label: Advanced Beginner
|
||||
anchor: >
|
||||
Cites a scripted empathy line ("I understand your frustration") but
|
||||
moves on mechanically; no follow-up.
|
||||
signals:
|
||||
- scripted_empathy_line
|
||||
- level: 3
|
||||
label: Competent
|
||||
anchor: >
|
||||
Names the emotion in own words, validates it, then transitions to
|
||||
resolution. Appropriate but not tailored.
|
||||
signals:
|
||||
- named_emotion_in_own_words
|
||||
- acknowledged_specific
|
||||
- level: 4
|
||||
label: Proficient
|
||||
anchor: >
|
||||
Adjusts tone to customer's emotional state mid-call; reflects back
|
||||
specifics ("cracked on arrival — that's frustrating").
|
||||
signals:
|
||||
- tone_pace_adjusted
|
||||
- multiple_acknowledgement_instances
|
||||
- level: 5
|
||||
label: Mastery / Entrustable
|
||||
anchor: >
|
||||
Reads shifting emotional cues across the call; de-escalates implicitly
|
||||
through pacing and acknowledgment; could model this for new hires.
|
||||
signals:
|
||||
- reads_shifting_emotional_cues
|
||||
- implicit_de_escalation_via_pacing
|
||||
- coaches_peers
|
||||
|
||||
- id: resolution
|
||||
name: Resolution Concreteness
|
||||
weight: 0.30
|
||||
conjunctive_floor: null
|
||||
levels:
|
||||
- level: 1
|
||||
label: Fail
|
||||
anchor: >
|
||||
Vague ("we'll look into it") or no resolution offered; customer left
|
||||
without a path.
|
||||
signals:
|
||||
- vague_resolution
|
||||
- no_resolution_offered
|
||||
- level: 2
|
||||
label: Advanced Beginner
|
||||
anchor: >
|
||||
Offers a resolution but missing key specifics (no timeline, no method,
|
||||
no amount).
|
||||
signals:
|
||||
- resolution_missing_specifics
|
||||
- level: 3
|
||||
label: Competent
|
||||
anchor: >
|
||||
Offers a concrete resolution with method (refund/replacement), amount
|
||||
/channel, and next step.
|
||||
signals:
|
||||
- concrete_method
|
||||
- concrete_amount_or_channel
|
||||
- concrete_next_step
|
||||
- level: 4
|
||||
label: Proficient
|
||||
anchor: >
|
||||
Offers a decision-tree of concrete options matched to the customer's
|
||||
stated preference; confirms acceptance.
|
||||
signals:
|
||||
- decision_tree_of_options
|
||||
- matched_to_customer_preference
|
||||
- confirms_acceptance
|
||||
- level: 5
|
||||
label: Mastery / Entrustable
|
||||
anchor: >
|
||||
Tailors resolution to policy + customer constraint, names the exception
|
||||
/risk considered, and closes the loop with a verification step.
|
||||
signals:
|
||||
- names_exception_or_risk
|
||||
- closes_loop_with_verification
|
||||
- coaches_peers
|
||||
|
||||
- id: de_escalation
|
||||
name: De-escalation
|
||||
weight: 0.20
|
||||
conjunctive_floor: null
|
||||
levels:
|
||||
- level: 1
|
||||
label: Fail
|
||||
anchor: >
|
||||
Defensive, blames customer/company policy, or matches the customer's
|
||||
escalation.
|
||||
signals:
|
||||
- defensive
|
||||
- blames_customer_or_policy
|
||||
- matches_escalation
|
||||
- level: 2
|
||||
label: Advanced Beginner
|
||||
anchor: >
|
||||
Avoids escalation but through avoidance/deflection rather than active
|
||||
de-escalation.
|
||||
signals:
|
||||
- avoidance_or_deflection
|
||||
- level: 3
|
||||
label: Competent
|
||||
anchor: >
|
||||
Uses an explicit de-escalation move (acknowledge → reframe → offer),
|
||||
one cycle.
|
||||
signals:
|
||||
- explicit_acknowledge_reframe_offer
|
||||
- level: 4
|
||||
label: Proficient
|
||||
anchor: >
|
||||
Cycles through acknowledge/reframe as needed; lowers intensity without
|
||||
conceding policy inappropriately.
|
||||
signals:
|
||||
- cycles_acknowledge_reframe
|
||||
- lowers_intensity_without_conceding_policy
|
||||
- level: 5
|
||||
label: Mastery / Entrustable
|
||||
anchor: >
|
||||
Prevents re-escalation by reading early signals; preserves relationship
|
||||
and policy simultaneously.
|
||||
signals:
|
||||
- prevents_re_escalation
|
||||
- reads_early_signals
|
||||
- preserves_relationship_and_policy
|
||||
- coaches_peers
|
||||
|
||||
- id: professionalism
|
||||
name: Professionalism / Conduct
|
||||
weight: 0.15
|
||||
conjunctive_floor: 2
|
||||
levels:
|
||||
- level: 1
|
||||
label: Fail
|
||||
anchor: >
|
||||
Unprofessional language, breaks role, gives prohibited advice
|
||||
(legal/medical/financial), or insults customer.
|
||||
signals:
|
||||
- unprofessional_language
|
||||
- breaks_role
|
||||
- prohibited_advice
|
||||
- insults_customer
|
||||
- level: 2
|
||||
label: Advanced Beginner
|
||||
anchor: >
|
||||
Mostly professional but uses jargon ("RMA", "SLA") or breaks tone once.
|
||||
signals:
|
||||
- uses_jargon
|
||||
- breaks_tone_once
|
||||
- level: 3
|
||||
label: Competent
|
||||
anchor: >
|
||||
Plain-language, in-role throughout, no prohibited advice.
|
||||
signals:
|
||||
- plain_language
|
||||
- in_role_throughout
|
||||
- no_prohibited_advice
|
||||
- level: 4
|
||||
label: Proficient
|
||||
anchor: >
|
||||
Adapts register to customer; concise for voice (1–3 sentences); manages
|
||||
silence well.
|
||||
signals:
|
||||
- adapts_register
|
||||
- concise_for_voice
|
||||
- manages_silence
|
||||
- level: 5
|
||||
label: Mastery / Entrustable
|
||||
anchor: >
|
||||
Consistently concise, on-brand, voice-appropriate; could serve as a
|
||||
call-center exemplar.
|
||||
signals:
|
||||
- consistently_concise
|
||||
- on_brand
|
||||
- voice_appropriate
|
||||
- call_center_exemplar
|
||||
- coaches_peers
|
||||
|
||||
archetype_weights:
|
||||
refund:
|
||||
empathy: 0.35
|
||||
resolution: 0.30
|
||||
de_escalation: 0.20
|
||||
professionalism: 0.15
|
||||
complaint:
|
||||
empathy: 0.40
|
||||
resolution: 0.25
|
||||
de_escalation: 0.20
|
||||
professionalism: 0.15
|
||||
|
||||
# Dynamic re-weighting when the escalate branch triggers (RESEARCH §6.3 —
|
||||
# static config in v0.3; dynamic re-weighting is a future feature per grill Axis 9).
|
||||
escalated_weights:
|
||||
empathy: 0.30
|
||||
resolution: 0.20
|
||||
de_escalation: 0.40
|
||||
professionalism: 0.10
|
||||
Reference in New Issue
Block a user