{ "name": "ShiftOutcome", "type": "object", "properties": { "event_id": { "type": "string", "description": "Associated event ID" }, "event_name": { "type": "string", "description": "Event name for reference" }, "event_date": { "type": "string", "format": "date", "description": "Date of the event" }, "business_name": { "type": "string", "description": "Client business name" }, "hub_location": { "type": "string", "description": "Location where shift occurred" }, "event_type": { "type": "string", "description": "Type of event (lunch, dinner, VIP, etc.)" }, "expected_covers": { "type": "number", "description": "Expected covers/volume for this event" }, "actual_covers": { "type": "number", "description": "Actual covers served" }, "staff_requested": { "type": "number", "description": "Staff requested for the event" }, "staff_actual": { "type": "number", "description": "Staff who actually showed up" }, "no_show_count": { "type": "number", "default": 0, "description": "Number of no-shows" }, "late_arrival_count": { "type": "number", "default": 0, "description": "Number of late arrivals" }, "ot_hours_total": { "type": "number", "default": 0, "description": "Total overtime hours across all staff" }, "client_rating": { "type": "number", "minimum": 1, "maximum": 5, "description": "Client rating after shift (1-5 stars)" }, "client_feedback": { "type": "string", "description": "Client written feedback" }, "qa_score": { "type": "number", "minimum": 0, "maximum": 100, "description": "Internal QA score (0-100)" }, "issues_reported": { "type": "array", "description": "Issues reported during or after the shift", "items": { "type": "object", "properties": { "issue_type": { "type": "string", "enum": [ "late_food", "understaffed", "slow_service", "no_show", "quality", "communication", "other" ] }, "description": { "type": "string" }, "severity": { "type": "string", "enum": [ "low", "medium", "high", "critical" ] } } } }, "prediction_matched": { "type": "boolean", "description": "Did the actual demand match the prediction?" }, "predicted_staff": { "type": "number", "description": "How many staff KROW predicted were needed" }, "was_overstaffed": { "type": "boolean", "description": "Was the event overstaffed?" }, "was_understaffed": { "type": "boolean", "description": "Was the event understaffed?" }, "vendor_id": { "type": "string", "description": "Vendor who staffed this event" }, "vendor_name": { "type": "string", "description": "Vendor name" }, "submitted_by": { "type": "string", "description": "Who submitted this outcome report" }, "notes": { "type": "string", "description": "Internal notes about this outcome" } }, "required": [ "event_id", "event_name", "event_date" ] }