File size: 7,313 Bytes
f201243
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b3adf58
f201243
 
 
 
 
 
 
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
"""
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 []