813bd586d6
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---
219 lines
6.7 KiB
YAML
219 lines
6.7 KiB
YAML
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 |