""" Affiliate Marketing Angles Framework (Lite Version) 100 angles organized into 10 categories. Angles answer: "Why should I care?" (Psychological WHY) """ from typing import Dict, List, Any, Optional from enum import Enum import random class AngleCategory(str, Enum): """Angle categories.""" EMOTIONAL = "emotional" FINANCIAL = "financial" CONVENIENCE = "convenience" IDENTITY = "identity" AUTHORITY = "authority" SOCIAL_PROOF = "social_proof" URGENCY = "urgency" INTELLECTUAL = "intellectual" CURIOSITY = "curiosity" PROBLEM_SOLUTION = "problem_solution" # Complete angles framework - 100 angles (10 per category) ANGLES = { AngleCategory.EMOTIONAL: { "name": "Emotional & Psychological", "angles": [ {"key": "fear_loss", "name": "Fear / Loss Prevention", "trigger": "Fear", "example": "Don't lose your home to disaster"}, {"key": "anxiety_reduction", "name": "Anxiety Reduction", "trigger": "Relief", "example": "Sleep better knowing you're protected"}, {"key": "security_safety", "name": "Security / Safety", "trigger": "Security", "example": "Your family's safety is our priority"}, {"key": "peace_of_mind", "name": "Peace of Mind", "trigger": "Relief", "example": "Peace of mind for just $X/month"}, {"key": "stress_relief", "name": "Stress Relief", "trigger": "Relief", "example": "End the stress of [problem]"}, {"key": "relief_escape", "name": "Relief / Escape", "trigger": "Relief", "example": "Finally escape [problem]"}, {"key": "confidence_boost", "name": "Confidence Boost", "trigger": "Pride", "example": "Feel confident about your future"}, {"key": "hope_optimism", "name": "Hope / Optimism", "trigger": "Hope", "example": "A brighter future starts today"}, {"key": "guilt_responsibility", "name": "Guilt (Family)", "trigger": "Guilt", "example": "Do it for your family"}, {"key": "pride_self_worth", "name": "Pride / Self-worth", "trigger": "Pride", "example": "You deserve the best"}, {"key": "emotional_connection", "name": "Emotional Connection", "trigger": "Belonging", "example": "Feel connected to what matters"}, {"key": "nostalgia", "name": "Nostalgia", "trigger": "Emotion", "example": "Remember when things were simpler"}, {"key": "empowerment", "name": "Empowerment", "trigger": "Pride", "example": "Take control of your future"}, ] }, AngleCategory.FINANCIAL: { "name": "Financial", "angles": [ {"key": "save_money", "name": "Save Money", "trigger": "Greed", "example": "Save $600/year"}, {"key": "cut_hidden_costs", "name": "Cut Hidden Costs", "trigger": "Anger", "example": "Stop paying hidden fees"}, {"key": "avoid_overpaying", "name": "Avoid Overpaying", "trigger": "Anger", "example": "Stop overpaying for [service]"}, {"key": "financial_freedom", "name": "Financial Freedom", "trigger": "Desire", "example": "Achieve financial freedom"}, {"key": "budget_control", "name": "Budget Control", "trigger": "Control", "example": "Take control of your budget"}, {"key": "price_comparison", "name": "Price Comparison", "trigger": "Greed", "example": "Compare prices in 30 seconds"}, {"key": "smart_spending", "name": "Smart Spending", "trigger": "Pride", "example": "Make smart financial choices"}, {"key": "long_term_value", "name": "Long-Term Value", "trigger": "Greed", "example": "Invest in your future"}, {"key": "roi_investment", "name": "ROI / Investment", "trigger": "Greed", "example": "Get 3x return on investment"}, {"key": "cost_transparency", "name": "Cost Transparency", "trigger": "Trust", "example": "100% transparent pricing"}, {"key": "hidden_fees_exposed", "name": "Hidden Fees Exposed", "trigger": "Anger", "example": "No hidden fees, ever"}, {"key": "money_back", "name": "Money-Back Guarantee", "trigger": "Security", "example": "Get your money back if not satisfied"}, {"key": "payment_flexibility", "name": "Payment Flexibility", "trigger": "Convenience", "example": "Pay your way, when you want"}, ] }, AngleCategory.CONVENIENCE: { "name": "Convenience & Ease", "angles": [ {"key": "fast_instant", "name": "Fast / Instant", "trigger": "Convenience", "example": "Get a quote in 30 seconds"}, {"key": "simple_easy", "name": "Simple / Easy", "trigger": "Convenience", "example": "It's that simple"}, {"key": "no_paperwork", "name": "No Paperwork", "trigger": "Convenience", "example": "No paperwork required"}, {"key": "no_phone_calls", "name": "No Phone Calls", "trigger": "Convenience", "example": "No phone calls needed"}, {"key": "one_click", "name": "One-Click / Few Steps", "trigger": "Convenience", "example": "Get started in 3 steps"}, {"key": "beginner_friendly", "name": "Beginner-Friendly", "trigger": "Security", "example": "Perfect for beginners"}, {"key": "done_for_you", "name": "Done-For-You", "trigger": "Convenience", "example": "We handle everything"}, {"key": "hassle_free", "name": "Hassle-Free", "trigger": "Convenience", "example": "100% hassle-free"}, {"key": "low_effort", "name": "Low Effort", "trigger": "Convenience", "example": "Minimal effort, maximum results"}, {"key": "time_saving", "name": "Time Saving", "trigger": "Convenience", "example": "Save 10 hours per week"}, {"key": "automated_process", "name": "Automated Process", "trigger": "Convenience", "example": "Fully automated, zero work"}, {"key": "instant_access", "name": "Instant Access", "trigger": "Convenience", "example": "Get instant access now"}, {"key": "no_waiting", "name": "No Waiting", "trigger": "Convenience", "example": "No waiting, start immediately"}, ] }, AngleCategory.IDENTITY: { "name": "Identity & Personalization", "angles": [ {"key": "age_based", "name": "Age-Based", "trigger": "Personalization", "example": "Special rates for seniors 65+"}, {"key": "location_based", "name": "Location-Based", "trigger": "Personalization", "example": "Best rates in [location]"}, {"key": "profession_specific", "name": "Profession-Specific", "trigger": "Personalization", "example": "Special rates for teachers"}, {"key": "life_stage", "name": "Life Stage", "trigger": "Personalization", "example": "Perfect for new homeowners"}, {"key": "lifestyle_match", "name": "Lifestyle Match", "trigger": "Personalization", "example": "Fits your lifestyle"}, {"key": "people_like_you", "name": "People Like You", "trigger": "Social Proof", "example": "Join thousands like you"}, {"key": "custom_fit", "name": "Custom Fit", "trigger": "Personalization", "example": "Customized just for you"}, {"key": "personal_relevance", "name": "Personal Relevance", "trigger": "Personalization", "example": "Built specifically for you"}, {"key": "niche_targeting", "name": "Niche Targeting", "trigger": "Personalization", "example": "Designed for [niche]"}, {"key": "localized_offer", "name": "Localized Offer", "trigger": "Personalization", "example": "Best deals in [city]"}, {"key": "behavioral_match", "name": "Behavioral Match", "trigger": "Personalization", "example": "Fits your lifestyle perfectly"}, {"key": "preference_based", "name": "Preference-Based", "trigger": "Personalization", "example": "Tailored to your preferences"}, {"key": "demographic_specific", "name": "Demographic-Specific", "trigger": "Personalization", "example": "Made for people like you"}, ] }, AngleCategory.AUTHORITY: { "name": "Authority & Trust", "angles": [ {"key": "expert_backed", "name": "Expert-Backed", "trigger": "Authority", "example": "Recommended by experts"}, {"key": "industry_standard", "name": "Industry Standard", "trigger": "Authority", "example": "The industry standard"}, {"key": "government_related", "name": "Government-Related", "trigger": "Authority", "example": "Government-approved program"}, {"key": "trusted_millions", "name": "Trusted by Millions", "trigger": "Social Proof", "example": "Trusted by 2M+ customers"}, {"key": "years_experience", "name": "Years of Experience", "trigger": "Authority", "example": "20+ years of experience"}, {"key": "certified_verified", "name": "Certified / Verified", "trigger": "Authority", "example": "Certified and verified"}, {"key": "brand_reputation", "name": "Brand Reputation", "trigger": "Authority", "example": "Trusted brand name"}, {"key": "compliance", "name": "Compliance / Regulation", "trigger": "Authority", "example": "Fully compliant and regulated"}, {"key": "awards_recognition", "name": "Awards / Recognition", "trigger": "Authority", "example": "Award-winning service"}, {"key": "risk_free", "name": "Risk-Free", "trigger": "Security", "example": "100% risk-free guarantee"}, {"key": "industry_leader", "name": "Industry Leader", "trigger": "Authority", "example": "The industry leader"}, {"key": "proven_track_record", "name": "Proven Track Record", "trigger": "Authority", "example": "Proven results over decades"}, ] }, AngleCategory.SOCIAL_PROOF: { "name": "Social Proof & Validation", "angles": [ {"key": "testimonials", "name": "Testimonials", "trigger": "Social Proof", "example": "See what customers say"}, {"key": "reviews_ratings", "name": "Reviews / Ratings", "trigger": "Social Proof", "example": "4.8/5 stars from 10K+ reviews"}, {"key": "mass_adoption", "name": "Mass Adoption", "trigger": "Social Proof", "example": "Join 2M+ users"}, {"key": "case_studies", "name": "Case Studies", "trigger": "Social Proof", "example": "See real success stories"}, {"key": "word_of_mouth", "name": "Word of Mouth", "trigger": "Social Proof", "example": "Recommended by friends"}, {"key": "community_trust", "name": "Community Trust", "trigger": "Social Proof", "example": "Trusted by our community"}, {"key": "real_stories", "name": "Real Stories", "trigger": "Social Proof", "example": "Real stories from real customers"}, {"key": "viral_popularity", "name": "Viral Popularity", "trigger": "FOMO", "example": "Going viral on [platform]"}, {"key": "trending_now", "name": "Trending Now", "trigger": "FOMO", "example": "Trending now"}, {"key": "most_chosen", "name": "Most Chosen", "trigger": "Social Proof", "example": "The most chosen option"}, {"key": "peer_recommendation", "name": "Peer Recommendation", "trigger": "Social Proof", "example": "Recommended by your peers"}, {"key": "success_rate", "name": "High Success Rate", "trigger": "Social Proof", "example": "95% success rate"}, ] }, AngleCategory.URGENCY: { "name": "Urgency & Scarcity", "angles": [ {"key": "limited_time", "name": "Limited Time", "trigger": "FOMO", "example": "Limited time offer - ends Friday"}, {"key": "ending_soon", "name": "Ending Soon", "trigger": "FOMO", "example": "Offer ending in 48 hours"}, {"key": "price_increase", "name": "Price Increase Warning", "trigger": "FOMO", "example": "Prices increasing on [date]"}, {"key": "seasonal_change", "name": "Seasonal Change", "trigger": "FOMO", "example": "Spring special - ends soon"}, {"key": "renewal_reminder", "name": "Policy Renewal", "trigger": "FOMO", "example": "Renew before [date] to save"}, {"key": "countdown", "name": "Countdown", "trigger": "FOMO", "example": "Only 24 hours left"}, {"key": "last_chance", "name": "Last Chance", "trigger": "FOMO", "example": "Last chance to save"}, {"key": "market_shift", "name": "Market Shift", "trigger": "FOMO", "example": "Market rates changing soon"}, {"key": "deadline_pressure", "name": "Deadline Pressure", "trigger": "FOMO", "example": "Deadline: [date]"}, {"key": "miss_out_avoidance", "name": "Miss-Out Avoidance", "trigger": "FOMO", "example": "Don't miss this opportunity"}, {"key": "early_bird", "name": "Early Bird Special", "trigger": "FOMO", "example": "Early bird pricing ends soon"}, {"key": "flash_sale", "name": "Flash Sale", "trigger": "FOMO", "example": "Flash sale - 24 hours only"}, ] }, AngleCategory.INTELLECTUAL: { "name": "Intellectual / Smart Choice", "angles": [ {"key": "insider_knowledge", "name": "Insider Knowledge", "trigger": "Curiosity", "example": "Insider tip: [secret]"}, {"key": "avoid_mistakes", "name": "Avoid Common Mistakes", "trigger": "Fear", "example": "Avoid these 5 common mistakes"}, {"key": "educated_decision", "name": "Educated Decision", "trigger": "Pride", "example": "Make an educated decision"}, {"key": "comparison_logic", "name": "Comparison Logic", "trigger": "Pride", "example": "Compare and choose wisely"}, {"key": "transparency", "name": "Transparency", "trigger": "Trust", "example": "100% transparent pricing"}, {"key": "informed_buyer", "name": "Informed Buyer", "trigger": "Pride", "example": "For informed buyers"}, {"key": "data_driven", "name": "Data-Driven", "trigger": "Authority", "example": "Backed by data"}, {"key": "rational_choice", "name": "Rational Choice", "trigger": "Pride", "example": "The rational choice"}, {"key": "what_experts_do", "name": "What Experts Do", "trigger": "Authority", "example": "What experts do"}, {"key": "optimization", "name": "Optimization", "trigger": "Pride", "example": "Optimize your [thing]"}, {"key": "smart_investment", "name": "Smart Investment", "trigger": "Pride", "example": "The smart investment choice"}, {"key": "evidence_based", "name": "Evidence-Based", "trigger": "Authority", "example": "Backed by research and data"}, ] }, AngleCategory.CURIOSITY: { "name": "Curiosity & Pattern Interrupt", "angles": [ {"key": "shocking_stats", "name": "Shocking Stats", "trigger": "Curiosity", "example": "Shocking stat: [number]"}, {"key": "did_you_know", "name": "Did You Know?", "trigger": "Curiosity", "example": "Did you know [fact]?"}, {"key": "open_loops", "name": "Open Loops", "trigger": "Curiosity", "example": "Thousands doing THIS instead"}, {"key": "contrarian", "name": "Contrarian Claims", "trigger": "Curiosity", "example": "Why everyone is wrong about [thing]"}, {"key": "myth_busting", "name": "Myth Busting", "trigger": "Curiosity", "example": "Myth busted: [myth]"}, {"key": "unexpected_truth", "name": "Unexpected Truth", "trigger": "Curiosity", "example": "The truth about [thing]"}, {"key": "hidden_secrets", "name": "Hidden Secrets", "trigger": "Curiosity", "example": "The hidden secret to [thing]"}, {"key": "scroll_stopper", "name": "Scroll Stopper", "trigger": "Curiosity", "example": "Stop scrolling - read this"}, {"key": "pattern_break", "name": "Pattern Break", "trigger": "Curiosity", "example": "This breaks all patterns"}, {"key": "curiosity_gap", "name": "Curiosity Gap", "trigger": "Curiosity", "example": "What is THIS?"}, {"key": "reveal_secret", "name": "Reveal Secret", "trigger": "Curiosity", "example": "The secret they don't want you to know"}, {"key": "unexpected_benefit", "name": "Unexpected Benefit", "trigger": "Curiosity", "example": "The benefit nobody talks about"}, ] }, AngleCategory.PROBLEM_SOLUTION: { "name": "Problem–Solution", "angles": [ {"key": "pain_point", "name": "Pain Point Highlight", "trigger": "Anger", "example": "Tired of [problem]?"}, {"key": "frustration_relief", "name": "Frustration Relief", "trigger": "Relief", "example": "End your frustration with [problem]"}, {"key": "complexity_simplified", "name": "Complexity Simplified", "trigger": "Convenience", "example": "We make [thing] simple"}, {"key": "confusion_clarity", "name": "Confusion → Clarity", "trigger": "Relief", "example": "From confusion to clarity"}, {"key": "overwhelm_reduction", "name": "Overwhelm Reduction", "trigger": "Relief", "example": "Stop feeling overwhelmed"}, {"key": "direct_fix", "name": "Direct Fix", "trigger": "Relief", "example": "The direct fix for [problem]"}, {"key": "shortcut", "name": "Shortcut", "trigger": "Convenience", "example": "The shortcut to [goal]"}, {"key": "better_alternative", "name": "Better Alternative", "trigger": "Desire", "example": "A better alternative to [current]"}, {"key": "replace_old_way", "name": "Replace Old Way", "trigger": "Desire", "example": "Replace the old way"}, {"key": "modern_solution", "name": "Modern Solution", "trigger": "Desire", "example": "The modern solution to [problem]"}, {"key": "pain_elimination", "name": "Pain Elimination", "trigger": "Relief", "example": "Eliminate [problem] forever"}, {"key": "simplified_complexity", "name": "Simplified Complexity", "trigger": "Convenience", "example": "We simplified the complex"}, {"key": "one_click_solution", "name": "One-Click Solution", "trigger": "Convenience", "example": "Solve it in one click"}, ] }, } def get_all_angles() -> List[Dict[str, Any]]: """Get all angles as a flat list.""" all_angles = [] for category, data in ANGLES.items(): for angle in data["angles"]: angle_copy = angle.copy() angle_copy["category"] = data["name"] angle_copy["category_key"] = category all_angles.append(angle_copy) return all_angles def get_angles_by_category(category: AngleCategory) -> List[Dict[str, Any]]: """Get angles for a specific category.""" return ANGLES.get(category, {}).get("angles", []) def get_angle_by_key(key: str) -> Optional[Dict[str, Any]]: """Get a specific angle by key.""" for category, data in ANGLES.items(): for angle in data["angles"]: if angle["key"] == key: angle_copy = angle.copy() angle_copy["category"] = data["name"] angle_copy["category_key"] = category return angle_copy return None def get_random_angles(count: int = 6, diverse: bool = True) -> List[Dict[str, Any]]: """Get random angles, optionally ensuring diversity across categories.""" if diverse: # Select one from each category first selected = [] categories = list(ANGLES.keys()) random.shuffle(categories) for category in categories[:count]: angles = ANGLES[category]["angles"] angle = random.choice(angles).copy() angle["category"] = ANGLES[category]["name"] angle["category_key"] = category selected.append(angle) return selected[:count] else: all_angles = get_all_angles() return random.sample(all_angles, min(count, len(all_angles))) def get_angles_for_niche(niche: str) -> List[Dict[str, Any]]: """Get angles best suited for a niche.""" niche_lower = niche.lower() # Niche-specific angle recommendations if "insurance" in niche_lower: recommended_keys = [ "fear_loss", "peace_of_mind", "save_money", "price_comparison", "trusted_millions", "limited_time", "avoid_mistakes", "pain_point" ] elif "glp" in niche_lower or "weight" in niche_lower: recommended_keys = [ "confidence_boost", "pride_self_worth", "before_after_shock", "testimonials", "trending_now", "modern_solution", "shortcut" ] else: # Default mix recommended_keys = [ "save_money", "fast_instant", "testimonials", "limited_time", "shocking_stats", "pain_point" ] angles = [] for key in recommended_keys: angle = get_angle_by_key(key) if angle: angles.append(angle) return angles # Top performing angles for initial testing TOP_ANGLES = [ "save_money", "fear_loss", "fast_instant", "expert_backed", "testimonials", "limited_time", "age_based", "pain_point" ] def get_top_angles() -> List[Dict[str, Any]]: """Get top performing angles for initial testing.""" return [get_angle_by_key(key) for key in TOP_ANGLES if get_angle_by_key(key)]