# B3: Owner Routing Matrix Documentation ## Universal Review Taxonomy v5.1 **Status**: Production Ready **Release Date**: 2026-01-23 **Prerequisite**: B1-urt-codes.yaml (Code Registry) **Configuration File**: B3-owner-routing.yaml --- ## Table of Contents 1. [Overview](#1-overview) 2. [Routing Resolution Logic](#2-routing-resolution-logic) 3. [SLA Definitions](#3-sla-definitions) 4. [Escalation Paths](#4-escalation-paths) 5. [On-Call Rotation](#5-on-call-rotation) 6. [Ticketing System Integration](#6-ticketing-system-integration) 7. [Configuration Examples](#7-configuration-examples) 8. [Multi-Location Override Patterns](#8-multi-location-override-patterns) 9. [Special Routing Rules](#9-special-routing-rules) 10. [Appendix: Domain-Team Mapping](#appendix-domain-team-mapping) --- ## 1. Overview The Owner Routing Matrix maps URT codes to responsible teams and individuals. When feedback is classified using URT codes, the routing matrix determines: - **Who owns the ticket** (primary team) - **Who should be notified** (co-owners) - **When to escalate** (SLA and intensity rules) - **How quickly to respond** (priority-based SLA) ### Key Principles 1. **Specificity wins**: More specific routes override less specific ones 2. **Safety first**: E4 (Safety) issues always take priority 3. **Intensity drives urgency**: I3 (Strong) triggers auto-escalation 4. **Primary code determines owner**: Secondary codes add co-owners --- ## 2. Routing Resolution Logic ### Resolution Order Routes are resolved in the following order (most specific first): ``` subcode_overrides > category_overrides > domain_defaults (O1.01) (O1) (O) ``` ### Resolution Algorithm ``` FUNCTION resolve_route(primary_code, secondary_codes, intensity, valence): # Step 1: Check subcode-level override IF primary_code IN subcode_overrides: route = subcode_overrides[primary_code] # Step 2: Check category-level override ELSE IF category(primary_code) IN category_overrides: route = category_overrides[category(primary_code)] # Step 3: Fall back to domain default ELSE: route = domain_defaults[domain(primary_code)] # Step 4: Apply intensity modifiers IF intensity == "I3": route.auto_escalate = TRUE route.sla_hours = MIN(route.sla_hours, 4) # Step 5: Add co-owners from secondary codes FOR code IN secondary_codes: co_owner = resolve_route(code, [], intensity, valence) route.co_owners.append(co_owner.team) # Step 6: Check cross-functional patterns all_codes = [primary_code] + secondary_codes FOR pattern IN cross_functional_patterns: IF pattern.triggered_by(all_codes): route = merge_routes(route, pattern.route) RETURN route ``` ### Example Resolutions | Primary Code | Category | Domain | Resolution Path | Final Team | |--------------|----------|--------|-----------------|------------| | E2.02 | E2 | E | subcode_overrides["E2.02"] | engineering | | O2.03 | O2 | O | category_overrides["O2"] | quality_control | | R4.05 | R4 | R | category_overrides["R4"] | marketing | | O3.02 | O3 | O | category_overrides["O3"] | fulfillment | --- ## 3. SLA Definitions ### Priority Levels | Priority | Initial Response | Resolution Target | Update Frequency | |----------|------------------|-------------------|------------------| | **Critical** | 1 hour | 4 hours | Every hour | | **High** | 4 hours | 24 hours | Every 4 hours | | **Normal** | 24 hours | 72 hours | Daily | | **Low** | 48 hours | 1 week | Every 2 days | ### Intensity-to-Priority Mapping | Intensity | Valence | Priority | Auto-Escalate | |-----------|---------|----------|---------------| | I3 | V- | Critical | Yes | | I3 | V+ | High | No | | I2 | V- | High | No | | I2 | V+ | Normal | No | | I1 | V- | Normal | No | | I1 | V+ | Low | No | ### SLA Override Rules Certain subcodes have hardcoded SLA overrides that supersede intensity-based SLAs: | Subcode | Override SLA | Reason | |---------|--------------|--------| | E4.01 | 1 hour | Physical safety | | E4.02 | 2 hours | Health/hygiene | | E4.03 | 1 hour | Security breach | | E4.05 | 1 hour | Emergency readiness | | A3.05 | 4 hours | Discrimination | | R1.04 | 4 hours | Ethics violation | --- ## 4. Escalation Paths ### Escalation Hierarchy Diagram ``` +--------+ | CEO | +--------+ | +---------------------+---------------------+ | | | +-------+ +-------+ +-------+ | CFO | | COO | | CTO | +-------+ +-------+ +-------+ | | | +---------------+ +---------------+ +---------------+ |Finance Director| |Ops Director | |Engineering Lead| +---------------+ +---------------+ +---------------+ | | | +---------------+ +---------------+ +---------------+ | Finance Mgr | | Ops Manager | | Tech Lead | +---------------+ +---------------+ +---------------+ | | | +---------------+ +---------------+ +---------------+ | Finance Team | | Ops Team | | Eng Team | +---------------+ +---------------+ +---------------+ ``` ### Domain-Specific Escalation Paths ``` O (Offering): Team -> Product Mgr -> Product Director -> VP Product -> COO -> CEO P (People): Team -> HR Manager -> HR Director -> CHRO -> CEO J (Journey): Team -> Ops Manager -> Ops Director -> COO -> CEO E (Environment): Physical: Team -> Facilities Mgr -> Facilities Dir -> COO -> CEO Digital: Team -> Tech Lead -> Engineering Lead -> CTO -> CEO A (Access): Team -> Compliance Mgr -> Compliance Dir -> General Counsel -> CEO V (Value): Team -> Finance Mgr -> Finance Dir -> CFO -> CEO R (Relationship): Team -> CX Manager -> CX Director -> CMO -> CEO (Integrity issues go directly to Leadership -> CEO) ``` ### Auto-Escalation Triggers | Trigger | Condition | Escalation Action | |---------|-----------|-------------------| | SLA Breach | >100% of SLA elapsed | Escalate +1 level | | Repeated Issue | Same code 3x in 30 days | Escalate +1 level | | VIP Customer | Flagged account | Notify director immediately | | Safety Issue | E4.* with I2+ | Auto-escalate to safety officer | | Ethics Issue | R1.04 | Auto-escalate to CEO | --- ## 5. On-Call Rotation ### Coverage Requirements | Team | Coverage | Hours | Handles | |------|----------|-------|---------| | Support | 24/7 | All hours | I3, E4.*, security | | Operations | Extended | 06:00-22:00 | J4, J1, high-priority ops | | Engineering | On-call | After hours | E2.* critical, outages | ### On-Call Responsibilities **Primary On-Call (Support)**: - Monitor all incoming I3 (critical) tickets - Triage E4 (safety) issues immediately - Escalate security incidents (E4.03) - Acknowledge all critical tickets within 15 minutes **Secondary On-Call (Operations)**: - Handle J4 (resolution) escalations - Address J1 (timing) issues affecting active customers - Coordinate with primary on-call for cross-functional issues ### Holiday Coverage - Minimum: Support team on-call - SLA multiplier: 1.5x (extended response times) - Escalation: Only for critical/safety issues - Other tickets: Queued for next business day --- ## 6. Ticketing System Integration ### Webhook Payload Structure When integrating with ticketing systems, the routing matrix produces: ```json { "ticket": { "urt_code": "P1.02", "intensity": "I3", "valence": "V-", "routing": { "primary_team": "hr", "primary_email": "hr@example.com", "escalation_contact": "hr_director", "co_owners": ["training"], "priority": "critical", "sla_hours": 4, "auto_escalate": true }, "tags": ["people", "attitude", "respect", "critical"], "metadata": { "resolution_path": "subcode_override", "pattern_matched": null } } } ``` ### Supported Integrations | System | Integration Method | Notes | |--------|-------------------|-------| | Zendesk | Webhook + Triggers | Map teams to groups | | Jira Service Management | REST API | Map to request types | | Freshdesk | Webhook | Map teams to agent groups | | Intercom | API | Map to team inboxes | | Custom | Generic webhook | Use payload above | ### Field Mapping | URT Field | Zendesk | Jira | Freshdesk | |-----------|---------|------|-----------| | primary_team | Group | Project | Group | | priority | Priority | Priority | Priority | | urt_code | Custom Field | Label | Tag | | sla_hours | SLA Policy | SLA | SLA Policy | | co_owners | CCs | Watchers | CCs | --- ## 7. Configuration Examples ### Restaurant Configuration ```yaml # Restaurant-specific overrides category_overrides: O1: team: "kitchen" escalation: "head_chef" notes: "Food function issues go to kitchen" O2: team: "kitchen" escalation: "head_chef" notes: "Food quality is kitchen responsibility" E1: team: "front_of_house" escalation: "foh_manager" notes: "Physical space is FOH concern" P1: team: "front_of_house" escalation: "foh_manager" notes: "Server attitude is FOH responsibility" subcode_overrides: J1.01: # Wait time team: "host_station" escalation: "foh_manager" J1.05: # Pacing team: "kitchen" escalation: "head_chef" notes: "Pacing often kitchen-driven" ``` ### SaaS Company Configuration ```yaml # SaaS-specific overrides category_overrides: O1: team: "engineering" escalation: "engineering_lead" notes: "Product function is eng responsibility" E2: team: "product" escalation: "product_director" notes: "Digital experience is product" J3: team: "devops" escalation: "sre_lead" notes: "Reliability is SRE concern" subcode_overrides: E2.03: # Performance team: "sre" escalation: "sre_lead" auto_escalate: true notes: "Performance issues often infra" J3.03: # System availability team: "sre" escalation: "sre_lead" auto_escalate: true sla_override_hours: 1 ``` ### Healthcare Provider Configuration ```yaml # Healthcare-specific overrides category_overrides: O1: team: "clinical" escalation: "chief_medical_officer" notes: "Treatment outcomes are clinical" P2: team: "clinical" escalation: "chief_medical_officer" notes: "Clinical competence" E4: team: "compliance" escalation: "compliance_director" auto_escalate: true notes: "All safety issues are compliance" subcode_overrides: A3.03: # Dietary/Medical accommodations team: "clinical" escalation: "chief_nursing_officer" notes: "Medical accommodations are clinical" E4.02: # Health/Hygiene team: "infection_control" escalation: "chief_medical_officer" auto_escalate: true sla_override_hours: 1 ``` ### Retail Store Configuration ```yaml # Retail-specific overrides category_overrides: O1: team: "merchandising" escalation: "merchandising_director" O3: team: "inventory" escalation: "inventory_manager" A1: team: "store_ops" escalation: "store_director" P1: team: "store_ops" escalation: "store_manager" subcode_overrides: A1.03: # Inventory team: "inventory" escalation: "inventory_manager" J1.01: # Wait time (checkout) team: "store_ops" escalation: "store_manager" ``` --- ## 8. Multi-Location Override Patterns ### Location-Specific Routing For businesses with multiple locations, use location prefixes: ```yaml # Location-specific team definitions teams: store_001_ops: name: "Store 001 Operations" email: "store001-ops@example.com" manager: "store_001_manager" location: "store_001" store_002_ops: name: "Store 002 Operations" email: "store002-ops@example.com" manager: "store_002_manager" location: "store_002" # Location override rules location_routing: enabled: true # Default: route to location team if exists resolution_order: 1: "location_team" # e.g., store_001_ops 2: "regional_team" # e.g., west_region_ops 3: "central_team" # e.g., operations # Escalation: location -> regional -> central escalation_path: location: "regional" regional: "central" central: "executive" ``` ### Regional Aggregation ```yaml regional_routing: west_region: locations: ["store_001", "store_002", "store_003"] regional_team: "west_ops" regional_director: "west_director" east_region: locations: ["store_004", "store_005", "store_006"] regional_team: "east_ops" regional_director: "east_director" # Pattern: systemic issues across multiple locations escalate regionally multi_location_patterns: same_issue_multiple_locations: threshold: 3 window_days: 7 action: "escalate_to_regional" notes: "Same issue at 3+ locations triggers regional review" ``` ### Franchise Model ```yaml franchise_routing: # Franchisee handles local issues franchisee_owned: - "P1" # Staff attitude - "P2" # Staff competence - "E1" # Physical space - "J1" # Timing # Franchisor handles brand/system issues franchisor_owned: - "O1" # Product function (brand standards) - "O2" # Product quality (brand standards) - "R1" # Integrity (brand reputation) - "V2" # Transparency (policy) # Shared responsibility shared: - "E4" # Safety (both) - "A3" # Inclusivity (both) ``` --- ## 9. Special Routing Rules ### Multi-Code Span Routing When a span has multiple codes: ``` Primary: P1.02 (Respect) - I3 Secondary: V2.04 (Terms Fairness) Resolution: 1. Primary team: HR (from P1.02) 2. Co-owner: Legal (from V2.04) 3. Priority: Critical (from I3) 4. Escalation: HR Director + General Counsel notified ``` **Priority Domain Order** (for conflict resolution): 1. E4 (Safety) - always first 2. R1 (Integrity/Ethics) 3. A3 (Discrimination) 4. P (People) 5. V (Value) 6. J (Journey) 7. O (Offering) 8. E (non-safety) 9. A (non-discrimination) 10. R (non-integrity) ### Valence Differentiation | Valence | Routing Behavior | |---------|------------------| | V+ | Route to recognition workflow, lower priority | | V- | Standard routing, priority by intensity | | V0 | Log only, no ticket created | | V+- | Route as V-, note positive elements | **V+ Special Handling**: - Positive feedback about staff (P domain, V+) routes to HR for recognition - Positive feedback about product (O domain, V+) routes to marketing for testimonial potential - SLA: 48 hours (acknowledgment, not resolution) ### Causal Code Routing Causal codes indicate root cause and route to strategic teams: | Layer | Codes | Typical Route | Purpose | |-------|-------|---------------|---------| | Conditions | CD-* | Operational teams | Fix immediate cause | | Management | MG-* | Management | Address management gap | | Systemic | SY-* | Leadership | Strategic intervention | **Example**: ``` Review: "Staff seemed exhausted and made mistakes" Primary: J3.05 (Error Rate) Causal: CD-S (Staff State) -> MG-P (Planning) -> SY-H (Human Capital) Routing: - Ticket: Operations (for immediate errors) - Root cause ticket: HR (staffing/wellness) - Strategic flag: Leadership (compensation/retention review) ``` ### Cross-Functional Triggers Certain code combinations automatically involve multiple teams: | Pattern | Trigger Codes | Teams Involved | |---------|---------------|----------------| | Security Breach | E4.03 + R1.04 | Security, Legal, Leadership | | Discrimination | A3.05 + P1.02 | HR, Legal, DEI | | Billing Dispute | V1.04 + V2.02 | Billing, Legal, CX | | Product Failure (Critical) | O1.01 (I3) | Engineering, QA, CX | | Systemic Issue | SY-* codes | Leadership, Operations | --- ## Appendix: Domain-Team Mapping ### Complete Domain-to-Team Matrix | Domain | Category | Default Team | Escalation Path | |--------|----------|--------------|-----------------| | **O** | O1 Function | product_engineering | eng_lead -> product_dir | | | O2 Quality | quality_control | qa_mgr -> product_dir | | | O3 Completeness | fulfillment | fulfillment_mgr -> ops_dir | | | O4 Fit | product | product_mgr -> product_dir | | **P** | P1 Attitude | hr_training | hr_dir | | | P2 Competence | training | training_mgr -> hr_dir | | | P3 Responsiveness | operations | ops_mgr -> ops_dir | | | P4 Communication | training | training_mgr -> hr_dir | | **J** | J1 Timing | operations | ops_mgr -> ops_dir | | | J2 Ease | process_improvement | ops_dir | | | J3 Reliability | operations | ops_mgr -> ops_dir | | | J4 Resolution | customer_service | cx_dir | | **E** | E1 Physical | facilities | facilities_mgr -> facilities_dir | | | E2 Digital | it | tech_lead -> cto | | | E3 Ambiance | facilities | facilities_mgr -> facilities_dir | | | E4 Safety | safety | safety_officer -> coo | | **A** | A1 Availability | operations | ops_mgr -> ops_dir | | | A2 Accessibility | accessibility | accessibility_lead -> compliance_dir | | | A3 Inclusivity | dei | dei_dir -> hr_dir | | | A4 Convenience | operations | ops_mgr -> ops_dir | | **V** | V1 Price | pricing | pricing_mgr -> finance_dir | | | V2 Transparency | legal | legal_counsel -> general_counsel | | | V3 Effort | cx | cx_mgr -> cx_dir | | | V4 Worth | leadership | cx_dir -> cmo -> ceo | | **R** | R1 Integrity | leadership | legal -> ceo | | | R2 Dependability | operations | ops_dir -> coo | | | R3 Recovery | cx | cx_mgr -> cx_dir | | | R4 Loyalty | marketing | marketing_mgr -> cmo | --- ## Version History | Version | Date | Changes | |---------|------|---------| | 1.0 | 2026-01-23 | Initial release with URT v5.1 | --- *This document is part of Track B (Engineering/Implementation) for the Universal Review Taxonomy v5.1.*