sushilideaclan01's picture
added auto insurance niche
b3adf58
"""
Psychological Triggers - Core emotional drivers that make ads convert.
"""
from typing import Dict, Any, List, Optional
import random
PSYCHOLOGICAL_TRIGGERS: Dict[str, Dict[str, Any]] = {
"fear": {
"name": "Fear / Loss Aversion",
"description": "Fear of losing what you have or missing out on protection",
"copy_angles": ["Don't risk losing your home", "Protect what matters most", "Before disaster strikes"],
"visual_cues": ["warning signs", "protection imagery", "security elements"],
"color_palette": "warning",
"best_for": ["insurance", "security", "protection services"],
},
"greed": {
"name": "Greed / Savings",
"description": "Desire to save money, get more value, maximize gain",
"copy_angles": ["Save $500+ per year", "Get more for less", "Maximize your savings"],
"visual_cues": ["money imagery", "savings charts", "discount badges"],
"color_palette": "savings",
"best_for": ["financial products", "deals", "discounts"],
},
"fomo": {
"name": "FOMO (Fear of Missing Out)",
"description": "Anxiety about missing a limited opportunity",
"copy_angles": ["Limited time offer", "Only 50 spots left", "Offer expires soon"],
"visual_cues": ["countdown timers", "urgency badges", "scarcity indicators"],
"color_palette": "urgency",
"best_for": ["sales", "launches", "limited offers"],
},
"authority": {
"name": "Authority / Expertise",
"description": "Trust in experts, credentials, and established institutions",
"copy_angles": ["Doctor recommended", "Expert approved", "Industry leading"],
"visual_cues": ["credentials", "certifications", "professional imagery"],
"color_palette": "trust",
"best_for": ["health", "professional services", "premium products"],
},
"social_proof": {
"name": "Social Proof",
"description": "Following what others are doing, trust in numbers",
"copy_angles": ["Join 50,000+ customers", "5-star rated", "Most popular choice"],
"visual_cues": ["star ratings", "customer counts", "testimonials"],
"color_palette": "trust",
"best_for": ["consumer products", "services", "subscriptions"],
},
"curiosity": {
"name": "Curiosity",
"description": "Desire to learn, discover, and fill knowledge gaps",
"copy_angles": ["The secret they don't want you to know", "Discover how", "What they won't tell you"],
"visual_cues": ["mystery elements", "reveal moments", "hidden information"],
"color_palette": "premium",
"best_for": ["educational content", "reveals", "discoveries"],
},
"belonging": {
"name": "Belonging / Community",
"description": "Desire to be part of a group, tribe, or community",
"copy_angles": ["Join the community", "Be part of something", "Welcome to the family"],
"visual_cues": ["group imagery", "community symbols", "togetherness"],
"color_palette": "calm",
"best_for": ["memberships", "communities", "brands"],
},
"transformation": {
"name": "Transformation",
"description": "Desire for change, improvement, and becoming better",
"copy_angles": ["Transform your life", "Become the best version", "Change everything"],
"visual_cues": ["before/after", "progression imagery", "improvement indicators"],
"color_palette": "energy",
"best_for": ["fitness", "personal development", "lifestyle"],
},
"relief": {
"name": "Relief / Pain Relief",
"description": "Escaping pain, stress, or uncomfortable situations",
"copy_angles": ["End the stress", "Finally get relief", "Stop the pain"],
"visual_cues": ["relaxation imagery", "relief moments", "calm scenes"],
"color_palette": "calm",
"best_for": ["health", "stress relief", "solutions"],
},
"pride": {
"name": "Pride / Self-Worth",
"description": "Feeling good about oneself, achievements, and status",
"copy_angles": ["You deserve the best", "Treat yourself", "You've earned it"],
"visual_cues": ["success imagery", "achievement symbols", "premium elements"],
"color_palette": "premium",
"best_for": ["luxury", "premium products", "self-care"],
},
"urgency": {
"name": "Urgency / Time Pressure",
"description": "Need to act quickly before time runs out",
"copy_angles": ["Act now", "Today only", "Time is running out"],
"visual_cues": ["clocks", "timers", "urgent badges"],
"color_palette": "urgency",
"best_for": ["sales", "deadlines", "limited offers"],
},
"exclusivity": {
"name": "Exclusivity",
"description": "Desire for special access, VIP treatment, insider status",
"copy_angles": ["Exclusive offer", "VIP access", "By invitation only"],
"visual_cues": ["VIP badges", "exclusive tags", "premium styling"],
"color_palette": "premium",
"best_for": ["premium products", "memberships", "exclusive deals"],
},
}
# Trigger combinations that work well together
TRIGGER_COMBINATIONS: List[Dict[str, Any]] = [
{"primary": "fear", "secondary": "urgency", "name": "Fear + Urgency", "description": "Creates immediate action through fear of loss"},
{"primary": "greed", "secondary": "fomo", "name": "Savings + FOMO", "description": "Limited-time savings opportunity"},
{"primary": "social_proof", "secondary": "authority", "name": "Proof + Authority", "description": "Expert-backed with customer validation"},
{"primary": "transformation", "secondary": "curiosity", "name": "Transform + Curiosity", "description": "Discover the secret to transformation"},
{"primary": "relief", "secondary": "social_proof", "name": "Relief + Proof", "description": "Join thousands who found relief"},
{"primary": "exclusivity", "secondary": "urgency", "name": "Exclusive + Urgent", "description": "Limited VIP opportunity"},
]
def get_all_triggers() -> Dict[str, Dict[str, Any]]:
return PSYCHOLOGICAL_TRIGGERS
def get_trigger(key: str) -> Optional[Dict[str, Any]]:
return PSYCHOLOGICAL_TRIGGERS.get(key)
def get_random_trigger() -> Dict[str, Any]:
key = random.choice(list(PSYCHOLOGICAL_TRIGGERS.keys()))
return {"key": key, **PSYCHOLOGICAL_TRIGGERS[key]}
def get_trigger_combination() -> Dict[str, Any]:
return random.choice(TRIGGER_COMBINATIONS)
def get_triggers_for_niche(niche: str) -> List[Dict[str, Any]]:
niche_lower = niche.lower().replace(" ", "_").replace("-", "_")
niche_triggers = {
"home_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
"glp1": ["transformation", "pride", "social_proof", "authority", "relief"],
"auto_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
}
trigger_keys = niche_triggers.get(niche_lower, list(PSYCHOLOGICAL_TRIGGERS.keys())[:5])
return [{"key": k, **PSYCHOLOGICAL_TRIGGERS[k]} for k in trigger_keys if k in PSYCHOLOGICAL_TRIGGERS]
def get_copy_angles_for_trigger(trigger_key: str) -> List[str]:
trigger = get_trigger(trigger_key)
return trigger.get("copy_angles", []) if trigger else []