""" Hook Styles and Power Words - Language elements for compelling ad copy. """ from typing import Dict, Any, List, Optional import random HOOK_STYLES: Dict[str, Dict[str, Any]] = { "question": { "name": "Question Hook", "description": "Starts with a question to engage curiosity", "examples": ["What if you could save $500/year?", "Are you overpaying for insurance?", "Tired of high premiums?"], "trigger": "Curiosity", }, "statement": { "name": "Statement Hook", "description": "Bold declaration that demands attention", "examples": ["The secret to affordable insurance", "Most people don't know this trick", "The truth about insurance rates"], "trigger": "Curiosity", }, "number": { "name": "Number Hook", "description": "Uses specific numbers for credibility", "examples": ["3 ways to cut insurance costs", "Save $847 in 5 minutes", "97% of users see results"], "trigger": "Logic", }, "transformation": { "name": "Transformation Hook", "description": "Shows before/after change", "examples": ["From $200/month to $50/month", "Before: worried. After: protected.", "The change that saved everything"], "trigger": "Transformation", }, "urgency": { "name": "Urgency Hook", "description": "Creates time pressure", "examples": ["Limited time: Save 40% today", "Offer expires Friday", "Last chance for this rate"], "trigger": "FOMO", }, "notification": { "name": "Notification-Style Hook", "description": "Mimics system notifications", "examples": ["ALERT: Rates dropping now", "New message: Your savings are waiting", "Notice: Rate change detected"], "trigger": "Urgency", }, "curiosity_gap": { "name": "Curiosity Gap Hook", "description": "Creates information gap that needs closing", "examples": ["The reason your rates are so high", "What they don't want you to know", "The hidden trick insurance companies hate"], "trigger": "Curiosity", }, "pattern_interrupt": { "name": "Pattern Interrupt Hook", "description": "Breaks expected patterns to grab attention", "examples": ["Stop saving money (hear me out)", "I was wrong about insurance", "The worst advice that actually works"], "trigger": "Surprise", }, "social_proof": { "name": "Social Proof Hook", "description": "Leverages others' actions or opinions", "examples": ["Join 50,000+ satisfied customers", "Why thousands are switching", "Rated 5 stars by 10,000+ users"], "trigger": "Social Proof", }, "benefit": { "name": "Benefit-First Hook", "description": "Leads with the primary benefit", "examples": ["Save $500/year on home insurance", "Get coverage in 5 minutes", "Lower rates, better coverage"], "trigger": "Greed", }, "shocking_revelation": { "name": "Shocking Revelation Hook", "description": "Reveals surprising or shocking information", "examples": ["The insurance trick that saves you $1,000", "What insurance companies don't want you to know", "The hidden cost of cheap insurance"], "trigger": "Curiosity", }, "direct_command": { "name": "Direct Command Hook", "description": "Tells the reader exactly what to do", "examples": ["Stop overpaying today", "Get your quote now", "Compare rates in 60 seconds"], "trigger": "Action", }, "statistic_driven": { "name": "Statistic-Driven Hook", "description": "Uses compelling statistics to grab attention", "examples": ["9 out of 10 people overpay", "Save an average of $847 per year", "97% see results in 30 days"], "trigger": "Logic", }, "story_opener": { "name": "Story Opener Hook", "description": "Begins a narrative that draws the reader in", "examples": ["Last month, Sarah discovered something that changed everything", "Three years ago, I made a mistake that cost me thousands", "The day I found out I was overpaying..."], "trigger": "Curiosity", }, "contrarian_statement": { "name": "Contrarian Statement Hook", "description": "Challenges conventional wisdom", "examples": ["Everything you know about insurance is wrong", "The worst advice that actually works", "Why the popular choice is the wrong choice"], "trigger": "Curiosity", }, "empathy_first": { "name": "Empathy-First Hook", "description": "Shows understanding of the reader's situation", "examples": ["Tired of confusing insurance policies?", "Frustrated with rising rates?", "Wish insurance was simpler?"], "trigger": "Empathy", }, "exclusive_access": { "name": "Exclusive Access Hook", "description": "Offers special or limited access", "examples": ["Exclusive offer for new customers only", "VIP access to special rates", "Invitation-only pricing"], "trigger": "Exclusivity", }, } POWER_WORDS: Dict[str, List[str]] = { "urgency": ["Now", "Today", "Hurry", "Instant", "Fast", "Quick", "Limited", "Deadline", "Expires", "Final", "Last chance", "Act now"], "exclusivity": ["Exclusive", "Secret", "Hidden", "Private", "VIP", "Insider", "Confidential", "Elite", "Special", "Rare"], "savings": ["Free", "Save", "Discount", "Deal", "Bargain", "Value", "Affordable", "Bonus", "Extra", "Reward", "Cashback"], "trust": ["Guaranteed", "Proven", "Certified", "Verified", "Official", "Trusted", "Reliable", "Secure", "Safe", "Protected"], "transformation": ["Transform", "Change", "Unlock", "Discover", "Reveal", "Breakthrough", "Revolutionary", "New", "Improved", "Ultimate"], "emotion": ["Love", "Happy", "Joy", "Peace", "Confident", "Proud", "Relieved", "Excited", "Amazing", "Incredible"], "fear": ["Warning", "Danger", "Risk", "Threat", "Avoid", "Mistake", "Problem", "Crisis", "Emergency", "Alert"], "curiosity": ["Discover", "Learn", "Find out", "See why", "Uncover", "Secret", "Mystery", "Surprising", "Shocking", "Revealed"], "social_proof": ["Popular", "Trending", "Best-selling", "Top-rated", "Award-winning", "Recommended", "Thousands", "Millions", "Join"], "action": ["Get", "Start", "Try", "Claim", "Grab", "Take", "Join", "Sign up", "Subscribe", "Download", "Order", "Apply"], } CTA_TEMPLATES: Dict[str, List[str]] = { "action": ["Get Started", "Get Your Quote", "Start Saving", "Claim Your Discount", "See Your Rate", "Get Protected"], "urgency": ["Get It Now", "Claim Today", "Don't Miss Out", "Act Now", "Limited Time", "Last Chance"], "curiosity": ["Learn More", "See How", "Find Out", "Discover More", "See If You Qualify", "Check Eligibility"], "value": ["Save Now", "Get Free Quote", "Compare & Save", "See Your Savings", "Unlock Savings", "Get Best Rate"], "low_commitment": ["Try Free", "No Obligation", "See for Yourself", "Take a Look", "Explore Options", "Check It Out"], } def get_all_hook_styles() -> Dict[str, Dict[str, Any]]: return HOOK_STYLES def get_hook_style(key: str) -> Optional[Dict[str, Any]]: return HOOK_STYLES.get(key) def get_random_hook_style() -> Dict[str, Any]: key = random.choice(list(HOOK_STYLES.keys())) return {"key": key, **HOOK_STYLES[key]} def get_power_words(category: Optional[str] = None, count: int = 5) -> List[str]: if category and category in POWER_WORDS: words = POWER_WORDS[category] else: words = [w for cat_words in POWER_WORDS.values() for w in cat_words] return random.sample(words, min(count, len(words))) def get_random_cta(style: Optional[str] = None) -> str: if style and style in CTA_TEMPLATES: ctas = CTA_TEMPLATES[style] else: ctas = [c for style_ctas in CTA_TEMPLATES.values() for c in style_ctas] return random.choice(ctas)