File size: 3,984 Bytes
aec2fdf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from __future__ import annotations
DIMENSIONS = [
"decision_quality",
"specificity",
"category_fit",
"merchant_fit",
"engagement_compulsion",
]
REFERENCE_BANK: dict[str, str] = {
"dentists:decision_quality": "Dr. Meera, the research digest points to high-risk adult recall timing; use the 3-month fluoride finding before the next recall batch.",
"dentists:specificity": "Dr. Meera, JIDA Oct 2026 cites 124 high-risk adult caries patients for 3-month fluoride recall; want me to draft that recall note?",
"dentists:category_fit": "Clinical angle: use the cited recall evidence, avoid overclaiming, and ask for one approval before any patient outreach.",
"dentists:merchant_fit": "Dr. Meera, your Lajpat Nagar clinic has an active Rs 299 cleaning hook; pair it with the recall cohort instead of a generic discount.",
"dentists:engagement_compulsion": "Reply YES and I will draft the exact patient recall WhatsApp from the JIDA item and your Rs 299 cleaning offer.",
"salons:decision_quality": "Use the customer's occasion or slot window first, then offer a concrete package follow-up instead of a generic promo.",
"salons:specificity": "Kavya's wedding is 42 days away and Saturday slots are preferred; ask to hold one skin-prep slot with the active bridal package.",
"salons:category_fit": "Warm service angle: visual, occasion-led, slot-aware, and never clinical or pressure-heavy.",
"salons:merchant_fit": "Studio11 has bridal follow-up history and a live service package; make Vera prepare the exact WhatsApp and slot hold.",
"salons:engagement_compulsion": "Reply YES and I will hold the Saturday slot plus draft the 4-line bridal follow-up now.",
"restaurants:decision_quality": "Tie the action to the operator signal: orders, covers, delivery delay, IPL timing, or corporate lunch planning.",
"restaurants:specificity": "Delhi IPL night is today and the paneer thali offer is live; draft one banner/menu note before evening orders start.",
"restaurants:category_fit": "Operator angle: concise, service-window aware, focused on orders, delivery, covers, and menu hooks.",
"restaurants:merchant_fit": "Use this restaurant's live offer, locality, recent calls/orders, and review theme before suggesting a campaign.",
"restaurants:engagement_compulsion": "Reply YES and I will prepare the exact banner and WhatsApp text for tonight's order window.",
"gyms:decision_quality": "Pick the retention or trial action that matches the member stage and recent attendance trend.",
"gyms:specificity": "Rashmi is 28 days lapsed after yoga trial; use the no-commitment restart slot and her preferred evening timing.",
"gyms:category_fit": "Coach-to-operator tone: no shame, no body-negative copy, clear class or challenge next step.",
"gyms:merchant_fit": "Use the gym's current class, member count, lapse segment, and previous training focus in the message.",
"gyms:engagement_compulsion": "Reply YES and I will hold one no-commitment restart slot and send the member-safe message.",
"pharmacies:decision_quality": "For stock, refill, or compliance triggers, choose the safest precise action before any promotional angle.",
"pharmacies:specificity": "Atorvastatin batch A12 is affected and 38 chronic-Rx customers are in context; draft the replacement note and counter checklist.",
"pharmacies:category_fit": "Calm precision: molecule, batch, refill date, delivery status, and no diagnosis or panic wording.",
"pharmacies:merchant_fit": "Use the pharmacy's repeat-customer count, saved delivery status, active free-delivery hook, and stock facts.",
"pharmacies:engagement_compulsion": "Reply CONFIRM and I will prepare the customer note plus counter checklist from the exact batch/refill facts.",
}
def reference_for(category: str, dimension: str) -> str:
return REFERENCE_BANK.get(f"{category}:{dimension}") or REFERENCE_BANK.get(f"restaurants:{dimension}", "")
|