console: show the WhatsApp exchange, and let ops answer through it
Engage can now answer a customer's question from the policy wordings (82), so the lead file has a conversation in it rather than a single recorded reply. The audit trail renders both halves — "The customer said", then "We replied" — so the exchange reads as one, which is what an operator reviewing an acceptance nobody in the office made actually needs. The lead file gets a Conversation group beside Proposal: the question, the answer, and the count. Acceptance stays in Proposal, one tab away from the words that produced it. "Reply to the customer" is offered to ops_admin only. Engage declines anything it cannot answer from the wordings, anything that is a negotiation, and everything past three answers — so a person needs a way to take over, and it has to be through the same thread or the reply lands somewhere the lead file never sees. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e5b413ecac
commit
927d335280
@ -143,6 +143,7 @@ const STATE_ACTIVITIES = {
|
|||||||
{ uid: 'zk-act-accept', label: 'Record the acceptance by hand', by: 'you, on consent', role: 'force' },
|
{ uid: 'zk-act-accept', label: 'Record the acceptance by hand', by: 'you, on consent', role: 'force' },
|
||||||
{ uid: 'zk-act-quote', label: 'Re-quote', by: 'Engage AI', role: 'again' },
|
{ uid: 'zk-act-quote', label: 'Re-quote', by: 'Engage AI', role: 'again' },
|
||||||
{ uid: 'zk-act-collect-docs', label: 'Add a document', by: 'you', role: 'again' },
|
{ uid: 'zk-act-collect-docs', label: 'Add a document', by: 'you', role: 'again' },
|
||||||
|
{ uid: 'zk-act-answer-customer', label: 'Reply to the customer', by: 'you, on WhatsApp', role: 'again' },
|
||||||
{ uid: 'zk-act-kyc', label: 'Verify KYC', by: 'KYC AI', role: 'force' },
|
{ uid: 'zk-act-kyc', label: 'Verify KYC', by: 'KYC AI', role: 'force' },
|
||||||
{ uid: 'zk-act-uw-screen', label: 'Underwriting Screen', by: 'KYC AI', role: 'force' },
|
{ uid: 'zk-act-uw-screen', label: 'Underwriting Screen', by: 'KYC AI', role: 'force' },
|
||||||
],
|
],
|
||||||
|
|||||||
@ -33,6 +33,11 @@ export const ACTIVITY_ROLES = {
|
|||||||
'zk-act-advise': ['ai_advisor'],
|
'zk-act-advise': ['ai_advisor'],
|
||||||
'zk-act-quote': ['ops_admin', 'ai_engage'],
|
'zk-act-quote': ['ops_admin', 'ai_engage'],
|
||||||
'zk-act-accept': ['ops_admin', 'partner_agent', 'bank_rm', 'csr_direct'],
|
'zk-act-accept': ['ops_admin', 'partner_agent', 'bank_rm', 'csr_direct'],
|
||||||
|
// Ops only. The customer's questions are normally Engage's, and this is
|
||||||
|
// the way a person answers one Engage declined — through the same WhatsApp
|
||||||
|
// thread, so the reply lands on the lead file instead of somewhere nobody
|
||||||
|
// can find it later.
|
||||||
|
'zk-act-answer-customer': ['ops_admin'],
|
||||||
'zk-act-kyc': ['ops_admin', 'ai_kyc'],
|
'zk-act-kyc': ['ops_admin', 'ai_kyc'],
|
||||||
'zk-act-uw-screen': ['ops_admin', 'ai_kyc'],
|
'zk-act-uw-screen': ['ops_admin', 'ai_kyc'],
|
||||||
'zk-act-uw-prepare': ['ai_uw_referral'],
|
'zk-act-uw-prepare': ['ai_uw_referral'],
|
||||||
|
|||||||
@ -38,6 +38,7 @@ const NARRATIVE = [
|
|||||||
['uw_decision_notes', 'Underwriting decision'],
|
['uw_decision_notes', 'Underwriting decision'],
|
||||||
['documents_notes', 'Documents'],
|
['documents_notes', 'Documents'],
|
||||||
['customer_reply', 'The customer said'],
|
['customer_reply', 'The customer said'],
|
||||||
|
['customer_answer', 'We replied'],
|
||||||
['lost_reason', 'Why it was dropped'],
|
['lost_reason', 'Why it was dropped'],
|
||||||
['resume_note', 'Why now'],
|
['resume_note', 'Why now'],
|
||||||
]
|
]
|
||||||
|
|||||||
@ -69,7 +69,8 @@ const GROUPS = [
|
|||||||
['Motor risk', ['motor_reg_no','motor_make_model','motor_mfg_year','motor_cc','motor_fuel','motor_idv','motor_ncb_pct','motor_addons','motor_prev_insurer','motor_prev_policy_no','motor_prev_expiry','motor_prev_claim']],
|
['Motor risk', ['motor_reg_no','motor_make_model','motor_mfg_year','motor_cc','motor_fuel','motor_idv','motor_ncb_pct','motor_addons','motor_prev_insurer','motor_prev_policy_no','motor_prev_expiry','motor_prev_claim']],
|
||||||
['AI advice', ['ai_recommended_cover','ai_recommended_addons','ai_recommendation_rationale','ai_recommendation_confidence']],
|
['AI advice', ['ai_recommended_cover','ai_recommended_addons','ai_recommendation_rationale','ai_recommendation_confidence']],
|
||||||
['Quote', ['product_code','quoted_od_premium','quoted_tp_premium','quoted_addon_premium','quoted_section_premiums','quoted_gst','quoted_premium','quoted_breakup','quote_valid_till']],
|
['Quote', ['product_code','quoted_od_premium','quoted_tp_premium','quoted_addon_premium','quoted_section_premiums','quoted_gst','quoted_premium','quoted_breakup','quote_valid_till']],
|
||||||
['Proposal', ['acceptance_ref','accepted_at','customer_reply','customer_reply_from']],
|
['Conversation', ['customer_reply','customer_reply_from','customer_answer','answer_count']],
|
||||||
|
['Proposal', ['acceptance_ref','accepted_at']],
|
||||||
['KYC', ['kyc_mode','kyc_ref','kyc_outcome','kyc_mismatch_notes']],
|
['KYC', ['kyc_mode','kyc_ref','kyc_outcome','kyc_mismatch_notes']],
|
||||||
['Underwriting', ['uw_outcome','uw_survey_required','referral_analysis','uw_referral_reason','uw_decision_notes']],
|
['Underwriting', ['uw_outcome','uw_survey_required','referral_analysis','uw_referral_reason','uw_decision_notes']],
|
||||||
['Policy', ['payment_link','payment_ref','premium_realised','realised_at','policy_no','policy_issued_at']],
|
['Policy', ['payment_link','payment_ref','premium_realised','realised_at','policy_no','policy_issued_at']],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user