diff --git a/resources/structuredOutputs/starlight-qa-engagement.yml b/resources/structuredOutputs/starlight-qa-engagement.yml new file mode 100644 index 0000000..b840b74 --- /dev/null +++ b/resources/structuredOutputs/starlight-qa-engagement.yml @@ -0,0 +1,232 @@ +name: starlight_qa_engagement +type: ai +target: messages +description: | + Evaluates the ENGAGEMENT quality of a Brent Council Housing Benefits call. + This is 1 of 4 equally-weighted QA categories for the Starlight project. + + IMPORTANT - AUTO-FAIL RULES: + Questions 1.3, 1.4, and 1.5 are auto-fail. If ANY of these receives a "no" result, + set auto_fail to true. When auto_fail is true across ANY of the 4 QA categories, + the ENTIRE call evaluation fails (not just this section). + + MULTILINGUAL TRANSCRIPTS: + The call may be conducted in any language. Evaluate the transcript in whatever language + it occurs in. Do not penalise the agent for using a language other than English if the + caller initiated in that language. + + AI AGENT ADAPTATION NOTES: + - Question 1.3 (data security check): Use not_applicable if the call scenario did not + require identity verification (e.g. general enquiry with no account lookup). + - Question 1.6 (hold time): Use not_applicable if no hold occurred during the call. + - Question 1.7 (after call work): Use not_applicable as AI agents do not perform ACW. + + GLOSSARY OF BRENT COUNCIL TERMS: + RSF - Resident Support Fund | DHP - Discretionary Housing Payment | + CIC/s - Change in Circumstances | CTS - Council Tax Support | + HB - Housing Benefit | UC - Universal Credit | Recons - Reconsideration | + Portal/My Account/CAS - Citizen Access Service (customer self-service portal) | + Non Dep - Non dependants | OP - Overpayments | LHA - Local Housing Allowance | + HSF - Household Support Fund | SB - Switchboard | + Welfare Benefit - PIP, Disability Allowance, ESA, etc. +model: + provider: openai + model: gpt-4.1 + temperature: 0 +assistant_ids: [] +workflow_ids: [] +schema: + type: object + description: "Engagement QA evaluation for Brent Council Housing Benefits calls." + properties: + question_1_1: + type: object + description: "1.1 Warm greeting, gave service and own name and asked for their name if not SB." + properties: + result: + type: string + description: "yes if the agent provided a warm greeting with service name and own name and asked for caller name; no if not; not_applicable if this was a switchboard transfer." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given, referencing specific parts of the conversation." + evidence: + type: array + description: "Relevant excerpts from the transcript supporting the evaluation." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation where this occurred." + question_1_2: + type: object + description: "1.2 Apology given for the long wait / acknowledged and recognised service failure if mentioned." + properties: + result: + type: string + description: "yes if an apology or acknowledgement was given when appropriate; no if the caller mentioned a wait or service failure and it was not acknowledged; not_applicable if the caller did not mention any wait or service failure." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_1_3: + type: object + description: "1.3 Completed data security check. AUTO-FAIL: If result is 'no', the entire evaluation fails." + properties: + result: + type: string + description: "yes if identity/security verification was completed before accessing account details; no if account details were accessed without verification; not_applicable if the call did not require account access." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_1_4: + type: object + description: "1.4 Controlled the call and maintained professionalism throughout. AUTO-FAIL: If result is 'no', the entire evaluation fails." + properties: + result: + type: string + description: "yes if the agent maintained control and professionalism throughout; no if the agent lost control or was unprofessional at any point; not_applicable only in exceptional circumstances." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_1_5: + type: object + description: "1.5 Listened actively, positive tone, showed interest, empathy, patience and helpfulness. AUTO-FAIL: If result is 'no', the entire evaluation fails." + properties: + result: + type: string + description: "yes if the agent demonstrated active listening, positive tone, interest, empathy, patience and helpfulness; no if the agent was dismissive, impatient, or unhelpful; not_applicable only in exceptional circumstances." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_1_6: + type: object + description: "1.6 Explained any hold time, kept the customer updated, apologised for the hold." + properties: + result: + type: string + description: "yes if hold time was explained and apology given; no if the caller was put on hold without explanation or apology; not_applicable if no hold occurred during the call." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_1_7: + type: object + description: "1.7 Was the After Call Work necessary and justified for the full duration?" + properties: + result: + type: string + description: "yes if ACW was necessary and justified; no if ACW was unnecessary or excessive; not_applicable if this is an AI agent call (AI agents do not perform ACW)." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + auto_fail: + type: boolean + description: "Set to true if ANY auto-fail question (1.3, 1.4, 1.5) received a 'no' result. When true, the ENTIRE call evaluation fails across all categories." + overall_pass: + type: boolean + description: "Set to true only if auto_fail is false. When auto_fail is true, this must be false regardless of other question results." + category_score: + type: string + description: "Fraction of questions that received 'yes' out of total applicable questions, e.g. '5/7' or '4/5'. Exclude not_applicable questions from both numerator and denominator." diff --git a/resources/structuredOutputs/starlight-qa-explaining.yml b/resources/structuredOutputs/starlight-qa-explaining.yml new file mode 100644 index 0000000..59c0f13 --- /dev/null +++ b/resources/structuredOutputs/starlight-qa-explaining.yml @@ -0,0 +1,103 @@ +name: starlight_qa_explaining +type: ai +target: messages +description: | + Evaluates the EXPLAINING quality of a Brent Council Housing Benefits call. + This is 1 of 4 equally-weighted QA categories for the Starlight project. + + AUTO-FAIL RULES: + This category has no auto-fail questions. However, if any OTHER category (Engagement, + Right First Time, Signposting) triggers an auto-fail, the entire call evaluation still + fails. The consuming application must check auto_fail across all 4 categories. + + MULTILINGUAL TRANSCRIPTS: + The call may be conducted in any language. Evaluate the transcript in whatever language + it occurs in. Do not penalise the agent for using a language other than English if the + caller initiated in that language. + + EXPLAINING CONTEXT: + This category assesses whether the agent clearly communicated what has been done, what + will happen next, and any relevant terms, conditions, or timescales. For Housing Benefit + calls this includes explaining processing times, required documentation, appeal rights, + overpayment recovery terms, and any conditions attached to DHP, RSF, or CTS awards. + + GLOSSARY OF BRENT COUNCIL TERMS: + RSF - Resident Support Fund | DHP - Discretionary Housing Payment | + CIC/s - Change in Circumstances | CTS - Council Tax Support | + HB - Housing Benefit | UC - Universal Credit | Recons - Reconsideration | + Portal/My Account/CAS - Citizen Access Service (customer self-service portal) | + Non Dep - Non dependants | OP - Overpayments | LHA - Local Housing Allowance | + HSF - Household Support Fund | SB - Switchboard | + Welfare Benefit - PIP, Disability Allowance, ESA, etc. | + T&Cs - Terms and Conditions +model: + provider: openai + model: gpt-4.1 + temperature: 0 +assistant_ids: [] +workflow_ids: [] +schema: + type: object + description: "Explaining QA evaluation for Brent Council Housing Benefits calls." + properties: + question_4_1: + type: object + description: "4.1 Clarified details logged, actions taken and timescales for accuracy." + properties: + result: + type: string + description: "yes if the agent clearly explained what details were logged, what actions were taken or will be taken, and provided accurate timescales; no if the agent failed to clarify these to the caller; not_applicable if no actions or timescales were relevant to this call." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given, referencing specific parts of the conversation." + evidence: + type: array + description: "Relevant excerpts from the transcript supporting the evaluation." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation where this occurred." + question_4_2: + type: object + description: "4.2 T&Cs explained/indicated." + properties: + result: + type: string + description: "yes if relevant terms and conditions were explained or indicated to the caller (e.g. overpayment recovery terms, DHP conditions, appeal rights, reporting obligations for change in circumstances); no if T&Cs should have been mentioned but were not; not_applicable if no T&Cs were relevant to this call." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + auto_fail: + type: boolean + description: "Always false for this category as it has no auto-fail questions. The consuming application must still check auto_fail across all 4 QA categories." + overall_pass: + type: boolean + description: "Set to true if the agent performed well on explaining. Since there are no auto-fail questions in this category, this is based purely on the question results." + category_score: + type: string + description: "Fraction of questions that received 'yes' out of total applicable questions, e.g. '2/2' or '1/1'. Exclude not_applicable questions from both numerator and denominator." diff --git a/resources/structuredOutputs/starlight-qa-right-first-time.yml b/resources/structuredOutputs/starlight-qa-right-first-time.yml new file mode 100644 index 0000000..508df1f --- /dev/null +++ b/resources/structuredOutputs/starlight-qa-right-first-time.yml @@ -0,0 +1,259 @@ +name: starlight_qa_right_first_time +type: ai +target: messages +description: | + Evaluates the RIGHT FIRST TIME quality of a Brent Council Housing Benefits call. + This is 1 of 4 equally-weighted QA categories for the Starlight project. + + IMPORTANT - AUTO-FAIL RULES: + Questions 2.3, 2.4, and 2.5 are auto-fail. If ANY of these receives a "no" result, + set auto_fail to true. When auto_fail is true across ANY of the 4 QA categories, + the ENTIRE call evaluation fails (not just this section). + + MULTILINGUAL TRANSCRIPTS: + The call may be conducted in any language. Evaluate the transcript in whatever language + it occurs in. Do not penalise the agent for using a language other than English if the + caller initiated in that language. + + AI AGENT ADAPTATION NOTES: + - Question 2.3 (safeguarding): Evaluate whether the agent properly identified and + handled any safeguarding concerns such as vulnerability indicators, signs of abuse, + or welfare concerns. Use not_applicable only if no safeguarding scenario arose. + - Question 2.4 (system logging): Use not_applicable for AI agent calls as AI agents + do not directly update case management systems. + + GLOSSARY OF BRENT COUNCIL TERMS: + RSF - Resident Support Fund | DHP - Discretionary Housing Payment | + CIC/s - Change in Circumstances | CTS - Council Tax Support | + HB - Housing Benefit | UC - Universal Credit | Recons - Reconsideration | + Portal/My Account/CAS - Citizen Access Service (customer self-service portal) | + Non Dep - Non dependants | OP - Overpayments | LHA - Local Housing Allowance | + HSF - Household Support Fund | SB - Switchboard | + Welfare Benefit - PIP, Disability Allowance, ESA, etc. +model: + provider: openai + model: gpt-4.1 + temperature: 0 +assistant_ids: [] +workflow_ids: [] +schema: + type: object + description: "Right First Time QA evaluation for Brent Council Housing Benefits calls." + properties: + question_2_1: + type: object + description: "2.1 Asked open ended questions to fully understand the enquiry and didn't interrupt inappropriately." + properties: + result: + type: string + description: "yes if the agent asked open-ended questions and did not interrupt inappropriately; no if the agent failed to probe or interrupted the caller; not_applicable only in exceptional circumstances." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given, referencing specific parts of the conversation." + evidence: + type: array + description: "Relevant excerpts from the transcript supporting the evaluation." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation where this occurred." + question_2_2: + type: object + description: "2.2 Took ownership of the customer's enquiry and all concerns addressed." + properties: + result: + type: string + description: "yes if the agent took ownership and addressed all concerns raised; no if concerns were ignored or ownership was not demonstrated; not_applicable only in exceptional circumstances." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_2_3: + type: object + description: "2.3 Effectively managed any presented safeguarding. AUTO-FAIL: If result is 'no', the entire evaluation fails." + properties: + result: + type: string + description: "yes if safeguarding concerns were properly identified and handled (e.g. vulnerability indicators, signs of abuse, welfare concerns); no if safeguarding concerns were present but not addressed; not_applicable if no safeguarding scenario arose during the call." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_2_4: + type: object + description: "2.4 Details and case history checked and logged and systems accurately updated. AUTO-FAIL: If result is 'no', the entire evaluation fails." + properties: + result: + type: string + description: "yes if case details were checked and systems updated accurately; no if details were not checked or systems not updated when required; not_applicable for AI agent calls as AI agents do not directly update case management systems." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_2_5: + type: object + description: "2.5 Escalation process followed correctly. AUTO-FAIL: If result is 'no', the entire evaluation fails." + properties: + result: + type: string + description: "yes if escalation was handled correctly when needed; no if escalation was required but not followed or followed incorrectly; not_applicable if no escalation was needed during the call." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_2_6: + type: object + description: "2.6 Correct disposition allocated." + properties: + result: + type: string + description: "yes if the correct disposition or outcome code was allocated; no if the wrong disposition was used; not_applicable if disposition allocation was not relevant to this call." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_2_7: + type: object + description: "2.7 Reference number provided where available." + properties: + result: + type: string + description: "yes if a reference number was provided to the caller when one was available; no if a reference number was available but not provided; not_applicable if no reference number was available or relevant." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + question_2_8: + type: object + description: "2.8 Any remaining questions answered and other possible queries addressed." + properties: + result: + type: string + description: "yes if the agent asked whether there were any remaining questions and addressed them; no if the agent did not check for further questions or left queries unanswered; not_applicable only in exceptional circumstances." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + auto_fail: + type: boolean + description: "Set to true if ANY auto-fail question (2.3, 2.4, 2.5) received a 'no' result. When true, the ENTIRE call evaluation fails across all categories." + overall_pass: + type: boolean + description: "Set to true only if auto_fail is false. When auto_fail is true, this must be false regardless of other question results." + category_score: + type: string + description: "Fraction of questions that received 'yes' out of total applicable questions, e.g. '6/8' or '5/6'. Exclude not_applicable questions from both numerator and denominator." diff --git a/resources/structuredOutputs/starlight-qa-signposting.yml b/resources/structuredOutputs/starlight-qa-signposting.yml new file mode 100644 index 0000000..e94caeb --- /dev/null +++ b/resources/structuredOutputs/starlight-qa-signposting.yml @@ -0,0 +1,102 @@ +name: starlight_qa_signposting +type: ai +target: messages +description: | + Evaluates the SIGNPOSTING quality of a Brent Council Housing Benefits call. + This is 1 of 4 equally-weighted QA categories for the Starlight project. + + AUTO-FAIL RULES: + This category has no auto-fail questions. However, if any OTHER category (Engagement, + Right First Time, Explaining) triggers an auto-fail, the entire call evaluation still + fails. The consuming application must check auto_fail across all 4 categories. + + MULTILINGUAL TRANSCRIPTS: + The call may be conducted in any language. Evaluate the transcript in whatever language + it occurs in. Do not penalise the agent for using a language other than English if the + caller initiated in that language. + + SIGNPOSTING CONTEXT: + Signposting means directing the caller to the correct service, department, or resource + for their enquiry. This includes directing to online self-service portals (My Account / + CAS), other council departments, external agencies (DWP for UC, etc.), or community + support services (RSF, HSF, DHP). + + GLOSSARY OF BRENT COUNCIL TERMS: + RSF - Resident Support Fund | DHP - Discretionary Housing Payment | + CIC/s - Change in Circumstances | CTS - Council Tax Support | + HB - Housing Benefit | UC - Universal Credit | Recons - Reconsideration | + Portal/My Account/CAS - Citizen Access Service (customer self-service portal) | + Non Dep - Non dependants | OP - Overpayments | LHA - Local Housing Allowance | + HSF - Household Support Fund | SB - Switchboard | + Welfare Benefit - PIP, Disability Allowance, ESA, etc. +model: + provider: openai + model: gpt-4.1 + temperature: 0 +assistant_ids: [] +workflow_ids: [] +schema: + type: object + description: "Signposting QA evaluation for Brent Council Housing Benefits calls." + properties: + question_3_1: + type: object + description: "3.1 Correctly signposted." + properties: + result: + type: string + description: "yes if the agent correctly directed the caller to the appropriate service, department, or resource; no if the agent provided incorrect signposting or failed to signpost when needed; not_applicable if the call did not require any signposting." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given, referencing specific parts of the conversation." + evidence: + type: array + description: "Relevant excerpts from the transcript supporting the evaluation." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation where this occurred." + question_3_2: + type: object + description: "3.2 Self-help options promoted and customer guided where appropriate." + properties: + result: + type: string + description: "yes if self-service options (My Account, CAS portal, online forms) were promoted and the caller was guided on how to use them; no if self-service options existed but were not mentioned; not_applicable if self-service was not relevant to this enquiry." + enum: + - "yes" + - "no" + - "not_applicable" + reasoning: + type: string + description: "Explanation of why this result was given." + evidence: + type: array + description: "Relevant excerpts from the transcript." + items: + type: object + properties: + message_text: + type: string + description: "The exact text from the transcript." + timestamp: + type: string + description: "The timestamp or position in the conversation." + auto_fail: + type: boolean + description: "Always false for this category as it has no auto-fail questions. The consuming application must still check auto_fail across all 4 QA categories." + overall_pass: + type: boolean + description: "Set to true if the agent performed well on signposting. Since there are no auto-fail questions in this category, this is based purely on the question results." + category_score: + type: string + description: "Fraction of questions that received 'yes' out of total applicable questions, e.g. '2/2' or '1/1'. Exclude not_applicable questions from both numerator and denominator." diff --git a/resources/structuredOutputs/starlight-wrap-up-code.yml b/resources/structuredOutputs/starlight-wrap-up-code.yml new file mode 100644 index 0000000..b2db8dd --- /dev/null +++ b/resources/structuredOutputs/starlight-wrap-up-code.yml @@ -0,0 +1,82 @@ +name: starlight_wrap_up_code +type: ai +target: messages +description: | + Classifies a Brent Council Housing Benefits call into the appropriate wrap-up code. + This is used for call categorisation in the Starlight project. + + MULTILINGUAL TRANSCRIPTS: + The call may be conducted in any language. Classify based on the topic discussed + regardless of the language used. + + CLASSIFICATION GUIDANCE: + - Analyse the full conversation to determine the primary reason for the call. + - If multiple topics were discussed, select the wrap-up code for the PRIMARY enquiry + (the main reason the caller rang). + - "query" codes are for callers asking questions or seeking information. + - "self serve" codes are for callers who could be or were directed to self-service. + - "Transfer to CTAX" is for calls that needed to be redirected to Council Tax. + - "Transfer to Others" is for calls redirected to any other department. + + SECOND-TIER CLASSIFICATION: + A more granular second-tier classification system is pending definition. Use + secondary_classification_notes to capture any additional categorisation detail + that may be relevant for future second-tier implementation. + + GLOSSARY OF BRENT COUNCIL TERMS: + RSF - Resident Support Fund | DHP - Discretionary Housing Payment | + CIC/s - Change in Circumstances | CTS - Council Tax Support | + HB - Housing Benefit | UC - Universal Credit | Recons - Reconsideration | + Portal/My Account/CAS - Citizen Access Service (customer self-service portal) | + Non Dep - Non dependants | OP - Overpayments | LHA - Local Housing Allowance | + HSF - Household Support Fund | SB - Switchboard | + Welfare Benefit - PIP, Disability Allowance, ESA, etc. | + CC - Contact Centre | CTAX - Council Tax | + Backdate - date of application query | New Claim - wanted to apply | + Bedroom Tax - under-occupancy charge | Benefit cap - maximum benefit limit +model: + provider: openai + model: gpt-4.1 + temperature: 0 +assistant_ids: [] +workflow_ids: [] +schema: + type: object + description: "Wrap-up code classification for Brent Council Housing Benefits calls." + properties: + wrap_up_code: + type: string + description: "The primary wrap-up code for this call. Select the single most appropriate code based on the main reason for the call." + enum: + - "CC - HB - UC - query" + - "HB - CIC - query" + - "HB - CIC - self serve" + - "HB - Council tax Support (CTS)" + - "HB - DHP - query" + - "HB - DHP - self serve" + - "HB - Dispute/Reconsideration - query" + - "HB - Dispute/Reconsideration - Self serve" + - "HB - Entitlement - query" + - "HB - MyAccount/CAS - query" + - "HB - Myaccount/CAS - self serve" + - "HB - new claim - query" + - "HB - new claim - self serve" + - "HB - Overpayment - query" + - "HB - RSF - query" + - "HB - RSF - self serve" + - "HB - Transfer to CTAX" + - "HB - Transfer to Others" + - "Welfare Benefit HB - query" + reasoning: + type: string + description: "Explanation of why this wrap-up code was selected, referencing the key topics and enquiry type discussed in the call." + confidence: + type: string + description: "How confident the classification is. Use 'high' when the call clearly matches one code, 'medium' when there are two plausible codes, 'low' when the call topic is ambiguous or spans multiple categories." + enum: + - "high" + - "medium" + - "low" + secondary_classification_notes: + type: string + description: "Any additional categorisation notes for future second-tier classification. Include details such as specific sub-topic (e.g. 'bedroom tax query within CIC'), caller demographic notes, or other granular classification detail that may be useful when the second-tier system is defined."