Creative_Breakthrough / data /frameworks.py
sushilideaclan01's picture
refactored the files
d4a4da7
"""
Ad Frameworks - Different structural approaches for ad creatives.
Each framework has a unique style and is suited for different marketing goals.
"""
from typing import Dict, Any, List, Optional
import random
# Complete list of 10 ad frameworks with detailed configurations
FRAMEWORKS: Dict[str, Dict[str, Any]] = {
"breaking_news": {
"name": "Breaking News",
"description": "Creates urgency through news-style presentation, feels like breaking news",
"best_for": ["announcements", "limited offers", "new discoveries", "price drops"],
"visual_style": "News channel aesthetic, red/white ticker, urgent feel",
"hook_examples": [
"BREAKING: Home Insurance Rates Drop 40%",
"URGENT: Limited Time Savings Available Now",
"ALERT: New Insurance Savings Discovered",
"FLASH: This Week Only - Save $500",
"EXCLUSIVE: Secret Savings Method Revealed",
],
"headline_style": "ALL CAPS with news prefix (BREAKING:, URGENT:, ALERT:)",
"tone": "Urgent, newsworthy, time-sensitive",
"psychological_triggers": ["FOMO", "Urgency", "Curiosity"],
"tags": [],
},
"mobile_post": {
"name": "Mobile Post",
"description": "Optimized for mobile scrolling, short and punchy",
"best_for": ["quick engagement", "thumb-stopping content", "social feeds"],
"visual_style": "Mobile-first design, clean, easy to read on small screens",
"hook_examples": [
"Save $500/Year in 2 Minutes",
"Get Your Quote - Tap to Start",
"See Your Savings Instantly",
"One tap. Big savings.",
"30 seconds to lower rates",
],
"headline_style": "Short, punchy, action-oriented (under 8 words)",
"tone": "Quick, casual, conversational",
"psychological_triggers": ["Convenience", "Speed", "Ease"],
"tags": [],
},
"before_after": {
"name": "Before/After",
"description": "Shows transformation, contrast between old and new state",
"best_for": ["transformations", "improvements", "results showcase"],
"visual_style": "Split-screen comparison, clear before/after contrast",
"hook_examples": [
"From $200/Month to $50/Month",
"Before: High Rates. After: Big Savings",
"Transform Your Insurance Costs Today",
"See What Changed Everything",
"The Difference One Call Made",
],
"headline_style": "Comparison format, specific numbers, transformation language",
"tone": "Results-focused, proof-based, transformation",
"psychological_triggers": ["Transformation", "Proof", "Results"],
"tags": [],
},
"testimonial": {
"name": "Testimonial",
"description": "Social proof through customer stories and reviews",
"best_for": ["trust building", "social proof", "credibility"],
"visual_style": "Quote cards, star ratings, real customer photos",
"hook_examples": [
"Join 50,000+ Happy Customers",
"Rated 5 Stars by Thousands",
"See Why Customers Love Us",
'"Best decision I ever made"',
"Real people. Real savings.",
],
"headline_style": "Quote format, numbers, social proof indicators",
"tone": "Trustworthy, relatable, authentic",
"psychological_triggers": ["Social Proof", "Trust", "Belonging"],
"tags": [],
},
"lifestyle": {
"name": "Lifestyle",
"description": "Aspirational imagery showing the desired lifestyle",
"best_for": ["aspiration", "emotional connection", "dream selling"],
"visual_style": "Aspirational imagery, happy people, dream scenarios",
"hook_examples": [
"Live Life Fully Protected",
"Drive with Complete Confidence",
"Peace of Mind on Every Journey",
"The Life You Deserve",
"Freedom Starts Here",
],
"headline_style": "Aspirational, emotional, lifestyle-focused",
"tone": "Aspirational, emotional, inspiring",
"psychological_triggers": ["Aspiration", "Desire", "Freedom"],
"tags": [],
},
"educational": {
"name": "Educational",
"description": "Provides value through information and tips",
"best_for": ["authority building", "value-first approach", "complex topics"],
"visual_style": "Infographic style, lists, clear information hierarchy",
"hook_examples": [
"3 Things Your Insurance Agent Won't Tell You",
"The Hidden Costs of Cheap Insurance",
"What Every Homeowner Must Know",
"Learn the Secret to Lower Rates",
"5 Mistakes That Cost You Money",
],
"headline_style": "Numbers, curiosity gaps, valuable information promise",
"tone": "Informative, helpful, authoritative",
"psychological_triggers": ["Curiosity", "Knowledge", "Fear of Missing Out"],
"tags": [],
},
"comparison": {
"name": "Comparison",
"description": "Compares to competitors or alternatives",
"best_for": ["differentiation", "competitive positioning", "value demonstration"],
"visual_style": "Side-by-side comparison, checkmarks vs X marks",
"hook_examples": [
"Why Customers Are Switching",
"The Difference Is Clear",
"Compare and Save Hundreds",
"What Others Charge vs Our Price",
"See the Better Option",
],
"headline_style": "Comparison language, competitive positioning",
"tone": "Confident, comparative, fact-based",
"psychological_triggers": ["Comparison", "Value", "Smart Choice"],
"tags": [],
},
"storytelling": {
"name": "Storytelling",
"description": "Narrative-driven content that tells a story",
"best_for": ["emotional connection", "memorable content", "brand building"],
"visual_style": "Narrative imagery, sequential scenes, story elements",
"hook_examples": [
"When Sarah Lost Everything...",
"The Day That Changed My Life",
"I Never Thought It Would Happen to Me",
"Here's What Happened Next",
"The Story Nobody Tells You",
],
"headline_style": "Narrative hooks, story beginnings, curiosity builders",
"tone": "Narrative, emotional, personal",
"psychological_triggers": ["Empathy", "Curiosity", "Emotion"],
"tags": [],
},
"problem_solution": {
"name": "Problem/Solution",
"description": "Identifies a problem and presents the solution",
"best_for": ["pain point targeting", "solution selling", "problem awareness"],
"visual_style": "Problem visualization, solution presentation, relief imagery",
"hook_examples": [
"Tired of High Insurance Rates?",
"Finally, a Solution That Works",
"The Problem Nobody Talks About",
"End Your Insurance Frustration",
"There's a Better Way",
],
"headline_style": "Problem questions, solution statements, relief language",
"tone": "Empathetic, problem-aware, solution-focused",
"psychological_triggers": ["Pain Relief", "Problem Awareness", "Hope"],
"tags": [],
},
"authority": {
"name": "Authority",
"description": "Establishes expertise and credibility",
"best_for": ["credibility building", "expert positioning", "trust establishment"],
"visual_style": "Professional imagery, credentials, expert endorsements",
"hook_examples": [
"Expert-Recommended Insurance",
"Backed by 50 Years of Experience",
"What the Pros Know About Insurance",
"Industry-Leading Protection",
"Trusted by Professionals",
],
"headline_style": "Authority indicators, credentials, expert language",
"tone": "Professional, authoritative, trustworthy",
"psychological_triggers": ["Authority", "Trust", "Expertise"],
"tags": [],
},
"scarcity": {
"name": "Scarcity",
"description": "Creates urgency through limited availability",
"best_for": ["limited offers", "exclusive deals", "time-sensitive promotions"],
"visual_style": "Countdown timers, limited stock indicators, exclusive badges",
"hook_examples": [
"Only 50 Spots Left This Month",
"Limited Availability - Act Fast",
"Exclusive Offer for First 100",
"While Supplies Last",
"Don't Miss Your Chance",
],
"headline_style": "Numbers, time limits, availability language",
"tone": "Urgent, exclusive, time-sensitive",
"psychological_triggers": ["FOMO", "Urgency", "Exclusivity"],
"tags": [],
},
"benefit_stack": {
"name": "Benefit Stack",
"description": "Lists multiple benefits in quick succession",
"best_for": ["value demonstration", "feature highlights", "quick scanning"],
"visual_style": "Bullet points, checkmarks, organized list format",
"hook_examples": [
"Save Money, Save Time, Save Stress",
"3 Benefits in One Solution",
"Everything You Need, All in One",
"More Coverage, Lower Cost, Better Service",
"Protection + Savings + Peace of Mind",
],
"headline_style": "Multiple benefits, parallel structure, value stacking",
"tone": "Value-focused, comprehensive, efficient",
"psychological_triggers": ["Value", "Convenience", "Completeness"],
"tags": [],
},
"risk_reversal": {
"name": "Risk Reversal",
"description": "Removes risk and uncertainty from the decision",
"best_for": ["overcoming objections", "building confidence", "reducing hesitation"],
"visual_style": "Guarantee badges, risk-free indicators, confidence builders",
"hook_examples": [
"100% Risk-Free Guarantee",
"Try It Free - No Commitment",
"Cancel Anytime, No Questions",
"Money-Back Guarantee",
"No Risk, All Reward",
],
"headline_style": "Guarantee language, risk removal, confidence builders",
"tone": "Reassuring, confident, risk-free",
"psychological_triggers": ["Security", "Trust", "Risk Reduction"],
"tags": [],
},
"contrarian": {
"name": "Contrarian",
"description": "Challenges conventional wisdom or expectations",
"best_for": ["differentiation", "attention-grabbing", "thought leadership"],
"visual_style": "Bold statements, unexpected visuals, pattern breaks",
"hook_examples": [
"Why Everything You Know About Insurance Is Wrong",
"The Unpopular Truth About Rates",
"Stop Following the Crowd",
"The Counter-Intuitive Way to Save",
"What They Don't Want You to Know",
],
"headline_style": "Contrarian statements, pattern breaks, unexpected angles",
"tone": "Bold, provocative, thought-provoking",
"psychological_triggers": ["Curiosity", "Differentiation", "Intellectual"],
"tags": [],
},
"case_study": {
"name": "Case Study",
"description": "Shows real results and specific outcomes",
"best_for": ["proof demonstration", "results showcase", "credibility"],
"visual_style": "Before/after data, specific numbers, real examples",
"hook_examples": [
"How Sarah Saved $1,200 in 6 Months",
"Real Results from Real Customers",
"The Exact Steps That Worked",
"See the Numbers That Matter",
"From Problem to Solution: The Journey",
],
"headline_style": "Specific examples, real names, concrete results",
"tone": "Proof-based, specific, results-focused",
"psychological_triggers": ["Proof", "Social Proof", "Results"],
"tags": [],
},
"interactive": {
"name": "Interactive",
"description": "Engages through questions, quizzes, or participation",
"best_for": ["engagement", "personalization", "interaction"],
"visual_style": "Interactive elements, questions, quiz formats",
"hook_examples": [
"Take Our 30-Second Quiz",
"Answer 3 Questions, Get Your Rate",
"See If You Qualify in 60 Seconds",
"What's Your Insurance Personality?",
"Find Your Perfect Match",
],
"headline_style": "Questions, interactive prompts, participation language",
"tone": "Engaging, interactive, personalized",
"psychological_triggers": ["Engagement", "Personalization", "Curiosity"],
"tags": [],
},
"imessage": {
"name": "iMessage",
"description": "iOS iMessage screenshot style",
"best_for": ["personal connection", "conversation", "informal offers"],
"visual_style": "iOS iMessage screenshot style, blue/green message bubbles, iPhone interface, authentic conversation look",
"headline_style": "Short, conversational, text-message phrasing",
"tone": "Personal, native, conversational",
"hook_examples": [
"You need to see this",
"Just saved a ton on this",
"Wait have you tried this?",
"My friend sent me this",
"This actually worked for me",
],
"psychological_triggers": ["Personalization", "Trust", "Intimacy"],
"container_type": True,
"tags": ["container_type", "native", "chat_style"],
"font_style": "San Francisco, system font",
"colors": {
"primary": "#007AFF",
"secondary": "#34C759",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include battery %, time, signal bars",
"Use realistic conversation format",
"Keep messages short (2–4 messages)",
],
},
"whatsapp": {
"name": "WhatsApp",
"description": "WhatsApp chat screenshot style",
"best_for": ["personal recommendations", "peer-to-peer", "urgent messages"],
"visual_style": "WhatsApp chat interface, green bubbles, checkmarks, authentic conversation feel",
"headline_style": "Casual chat-style lines, informal phrasing",
"tone": "Friendly, casual, personal",
"hook_examples": [
"Hey did you see this?",
"Just got this deal",
"You have to check this out",
"OMG this actually works",
"Sent you the link",
],
"psychological_triggers": ["Trust", "Social Proof", "Urgency"],
"container_type": True,
"tags": ["container_type", "native", "chat_style"],
"font_style": "Helvetica Neue, system font",
"colors": {
"primary": "#25D366",
"secondary": "#128C7E",
"background": "#ECE5DD",
"text": "#000000",
},
"authenticity_tips": [
"Include double checkmarks (read receipts)",
"Add timestamps",
"Use typical WhatsApp formatting",
],
},
"sms": {
"name": "SMS/Text",
"description": "Standard SMS text message style",
"best_for": ["urgent alerts", "personal messages", "time-sensitive offers"],
"visual_style": "Android/iOS SMS interface, simple text bubbles, notification style",
"headline_style": "Ultra-short alert-style text",
"tone": "Direct, urgent, concise",
"hook_examples": [
"Urgent: Your rate is ready",
"Limited time - reply now",
"Action required",
"Expires in 24 hrs",
"You qualify - tap to see",
],
"psychological_triggers": ["Urgency", "Attention", "Interrupt"],
"container_type": True,
"tags": ["container_type", "native", "chat_style"],
"font_style": "Roboto or San Francisco",
"colors": {
"primary": "#2196F3",
"secondary": "#4CAF50",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Keep messages very short",
"Use typical SMS abbreviations",
"Include carrier/time info",
],
},
"news_chyron": {
"name": "News Chyron",
"description": "Breaking news ticker style",
"best_for": ["breaking announcements", "urgent news", "time-sensitive offers"],
"visual_style": "Red/white scrolling ticker, TV news channel aesthetic, urgent feel",
"headline_style": "ALL CAPS with BREAKING / ALERT prefixes",
"tone": "Urgent, authoritative, time-sensitive",
"hook_examples": [
"BREAKING: Rates Drop 40%",
"ALERT: Limited Time Offer",
],
"psychological_triggers": ["Urgency", "FOMO", "Attention"],
"container_type": True,
"tags": ["container_type", "alert"],
"font_style": "Impact, Arial Black, bold sans-serif",
"colors": {
"primary": "#FF0000",
"secondary": "#FFFFFF",
"background": "#000000",
"text": "#FFFFFF",
},
"authenticity_tips": [
"Use BREAKING/ALERT prefix",
"Include news channel logo area",
"Add scrolling ticker effect",
],
},
"email_notification": {
"name": "Email Notification",
"description": "Email notification/preview style",
"best_for": ["official communications", "professional offers", "formal announcements"],
"visual_style": "Email client notification preview, sender + subject UI",
"headline_style": "Subject-line driven, professional phrasing",
"tone": "Professional, official, composed",
"hook_examples": [
"Your quote is ready for review",
"Important: Savings confirmation",
"Official notice - action required",
"Your application has been approved",
"Document attached: Your new rate",
],
"psychological_triggers": ["Authority", "Trust"],
"container_type": True,
"tags": ["container_type", "native", "document_style"],
"font_style": "System font, Segoe UI, Roboto",
"colors": {
"primary": "#1A73E8",
"secondary": "#EA4335",
"background": "#FFFFFF",
"text": "#202124",
},
"authenticity_tips": [
"Include sender and subject",
"Add unread badge if relevant",
"Use realistic timestamps",
],
},
"reddit_post": {
"name": "Reddit Post",
"description": "Reddit post/comment style",
"best_for": ["social proof", "user discussions", "authentic testimonials"],
"visual_style": "Reddit thread UI, upvotes, comments, forum-style layout",
"headline_style": "Casual post titles, story-driven",
"tone": "Authentic, conversational, community-driven",
"hook_examples": [
"Unpopular opinion but this actually saved me",
"Has anyone else tried this?",
"Finally something that worked",
"PSA: You might be overpaying",
"TIL there's a way to get lower rates",
],
"psychological_triggers": ["Social Proof", "Belonging", "Authenticity"],
"container_type": True,
"tags": ["container_type", "ugc", "chat_style"],
"font_style": "Noto Sans, Arial",
"colors": {
"primary": "#FF4500",
"secondary": "#0079D3",
"background": "#DAE0E6",
"text": "#1A1A1B",
},
"authenticity_tips": [
"Include upvote counts",
"Add anonymous-style usernames",
"Reference subreddit context",
],
},
"system_notification": {
"name": "System Notification",
"description": "iOS/Android system notification popup",
"best_for": ["urgent alerts", "app notifications", "system messages"],
"visual_style": "Minimal OS notification banner, plain system UI",
"headline_style": "1-line alert text",
"tone": "Neutral, urgent, system-level",
"hook_examples": [
"Your savings are ready",
"New message: Quote available",
"Reminder: Offer expires soon",
"Update: Action required",
"You have a new offer",
],
"psychological_triggers": ["Interrupt", "Urgency", "Attention"],
"container_type": True,
"tags": ["container_type", "native", "alert"],
"font_style": "San Francisco, Roboto, system font",
"colors": {
"primary": "#000000",
"secondary": "#666666",
"background": "#F2F2F2",
"text": "#000000",
},
"authenticity_tips": [
"NO emojis or decorative elements",
"Keep to 1–2 short lines",
"Use app icon if relevant",
],
"avoid": ["emojis", "decorative elements", "gradients"],
},
"push_notification": {
"name": "Push Notification",
"description": "Mobile app push notification style",
"best_for": ["app alerts", "time-sensitive messages", "quick updates"],
"visual_style": "Mobile push banner with app icon and timestamp",
"headline_style": "5–7 word alert headline",
"tone": "Immediate, concise, action-oriented",
"hook_examples": [
"Your quote is ready - tap to view",
"Limited time: Save up to 40%",
"New offer just for you",
"Don't miss out - ends soon",
"You're approved - see your rate",
],
"psychological_triggers": ["Urgency", "Attention"],
"container_type": True,
"tags": ["container_type", "native", "alert"],
"font_style": "System font",
"colors": {
"primary": "#007AFF",
"secondary": "#8E8E93",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include app icon",
"Very short headline",
"Add timestamp (now / 2m ago)",
],
},
"sticky_note": {
"name": "Sticky Note",
"description": "Handwritten sticky note overlay",
"best_for": ["personal reminders", "quick tips", "informal notes"],
"visual_style": "Yellow sticky note overlay on image, handwritten-style text, slightly wrinkled paper texture",
"headline_style": "Short handwritten notes, casual phrasing",
"tone": "Casual, personal, informal",
"hook_examples": [
"Try this first!",
"Don't forget - call them",
"Saved me $$$",
"Best tip I got",
"Do this before Friday",
],
"psychological_triggers": ["Personalization", "Informality", "Authenticity"],
"container_type": True,
"tags": ["container_type", "ugc"],
"font_style": "Handwriting fonts, marker style",
"colors": {
"primary": "#FFEB3B",
"secondary": "#FFC107",
"background": "#FFEB3B",
"text": "#000000",
},
"authenticity_tips": [
"Slight angle/tilt",
"Handwritten font style",
"Paper texture/wrinkles",
],
},
"memo": {
"name": "Internal Memo",
"description": "Office memo/document style",
"best_for": ["official announcements", "leaked documents", "internal secrets"],
"visual_style": "Typewritten internal memo on yellow/white paper, document-style layout",
"headline_style": "Formal memo headers, internal document language",
"tone": "Formal, serious, confidential",
"hook_examples": [
"CONFIDENTIAL: Rate reduction notice",
"INTERNAL: New savings program",
"MEMO: Policy update effective immediately",
"RESTRICTED: Preferred customer rates",
"OFFICIAL: Your eligibility confirmed",
],
"psychological_triggers": ["Authority", "Curiosity", "Exclusivity"],
"container_type": True,
"tags": ["container_type", "ugc", "document_style"],
"font_style": "Courier, typewriter fonts",
"colors": {
"primary": "#000000",
"secondary": "#333333",
"background": "#FFFFCC",
"text": "#000000",
},
"authenticity_tips": [
"Add CONFIDENTIAL stamp if relevant",
"Include date, to/from fields",
"Paper texture or fold marks",
],
},
"browser_alert": {
"name": "Browser Alert",
"description": "Browser popup / alert dialog",
"best_for": ["urgent warnings", "system alerts", "confirmation messages"],
"visual_style": "Browser dialog box with alert icon, OK/Cancel buttons",
"headline_style": "Short alert-style system messages",
"tone": "Urgent, system-level, direct",
"hook_examples": [
"You qualify for savings. Continue?",
"Limited offer detected. Accept?",
"Your rate is ready. View now?",
"Warning: Price increases tomorrow",
"Confirm your discount before it expires",
],
"psychological_triggers": ["Urgency", "Interrupt", "Attention"],
"container_type": True,
"tags": ["container_type", "alert", "document_style"],
"font_style": "System font, Segoe UI",
"colors": {
"primary": "#0078D4",
"secondary": "#D83B01",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include browser chrome",
"Add alert icon",
"Use realistic button styling",
],
},
"social_post": {
"name": "Social Media Post",
"description": "Facebook / Instagram feed post style",
"best_for": ["social proof", "user content", "organic feel"],
"visual_style": "Social media feed UI with profile, likes, comments",
"headline_style": "Casual post captions, organic phrasing",
"tone": "Social, relatable, authentic",
"hook_examples": [
"Okay so I finally did the thing",
"No one talks about this but",
"Just had to share this",
"Game changer honestly",
"Why did I wait so long",
],
"psychological_triggers": ["Social Proof", "Belonging", "Authenticity"],
"container_type": True,
"tags": ["container_type", "ugc", "chat_style"],
"font_style": "Helvetica, system font",
"colors": {
"primary": "#1877F2",
"secondary": "#E4405F",
"background": "#FFFFFF",
"text": "#1C1E21",
},
"authenticity_tips": [
"Include profile picture",
"Add like/comment counts",
"Use platform-native formatting",
],
},
"standard": {
"name": "Standard Ad",
"description": "Clean, professional ad format",
"best_for": ["professional campaigns", "brand awareness", "general advertising"],
"visual_style": "Clean ad layout, clear headline and CTA, professional design",
"headline_style": "Clear benefit-driven headline",
"tone": "Professional, neutral, brand-safe",
"hook_examples": [
"Get your free quote in minutes",
"Compare rates. Save money.",
"Trusted by thousands of customers",
"Simple. Fast. Affordable.",
"See how much you could save",
],
"psychological_triggers": ["Clarity", "Trust", "Professionalism"],
"container_type": True,
"tags": ["container_type"],
"font_style": "Clean sans-serif fonts",
"colors": {
"primary": "#2196F3",
"secondary": "#FF9800",
"background": "#FFFFFF",
"text": "#212121",
},
"authenticity_tips": [
"Clear visual hierarchy",
"Prominent CTA",
"Brand-consistent styling",
],
},
"telegram": {
"name": "Telegram",
"description": "Telegram chat message style",
"best_for": ["personal messages", "group chats", "informal communication"],
"visual_style": "Telegram chat interface, blue message bubbles",
"headline_style": "Casual chat-style lines",
"tone": "Informal, conversational",
"hook_examples": [
"Check this out",
"Thought you'd want to see",
"This is the one",
"Finally found it",
"Sending you the link",
],
"psychological_triggers": ["Personalization", "Trust"],
"container_type": True,
"tags": ["container_type", "native", "chat_style"],
"font_style": "Roboto, system font",
"colors": {
"primary": "#3390EC",
"secondary": "#0088CC",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include Telegram UI elements",
"Use typical Telegram formatting",
"Add read receipts if relevant",
],
},
"slack": {
"name": "Slack",
"description": "Slack workspace message style",
"best_for": ["team communication", "workplace announcements", "professional updates"],
"visual_style": "Slack channel UI with avatars and message threads",
"headline_style": "Short internal-style announcements",
"tone": "Professional, internal, conversational",
"hook_examples": [
"Heads up - new rates live",
"FYI team discount available",
"Quick update on savings program",
"Reminder: Enrollment closes Friday",
"PSA: Worth checking your rate",
],
"psychological_triggers": ["Authority", "Belonging", "Professionalism"],
"container_type": True,
"tags": ["container_type", "native", "chat_style"],
"font_style": "Lato, Slack font",
"colors": {
"primary": "#4A154B",
"secondary": "#36C5F0",
"background": "#FFFFFF",
"text": "#1D1C1D",
},
"authenticity_tips": [
"Include channel name",
"Add user avatar",
"Use Slack message formatting",
],
},
"instagram_story": {
"name": "Instagram Story",
"description": "Instagram story frame style",
"best_for": ["social media engagement", "story-style content", "mobile-first ads"],
"visual_style": "Vertical 9:16 Instagram story UI with overlays",
"headline_style": "Big bold overlays, short phrases",
"tone": "Energetic, visual, trendy",
"hook_examples": [
"Swipe to see 👆",
"No one talks about this",
"POV: You finally save",
"Wait for it...",
"This changed everything",
],
"psychological_triggers": ["Engagement", "FOMO", "Visual Appeal"],
"container_type": True,
"tags": ["container_type", "ugc"],
"font_style": "Instagram font, system font",
"colors": {
"primary": "#E4405F",
"secondary": "#833AB4",
"background": "#000000",
"text": "#FFFFFF",
},
"authenticity_tips": [
"Vertical format (9:16)",
"Include story UI elements",
"Use Instagram-style fonts",
],
},
"tiktok_style": {
"name": "TikTok Style",
"description": "TikTok video frame style",
"best_for": ["youth engagement", "viral content", "trending topics"],
"visual_style": "Vertical TikTok video UI with overlays",
"headline_style": "Bold, punchy on-screen text",
"tone": "High-energy, playful, trend-driven",
"hook_examples": [
"POV: you finally get a good rate",
"Wait this actually works??",
"No one told me this",
"The secret they don't want you to know",
"Drop a 👋 if you need this",
],
"psychological_triggers": ["Novelty", "Engagement", "Trendiness"],
"container_type": True,
"tags": ["container_type", "ugc"],
"font_style": "TikTok font, bold sans-serif",
"colors": {
"primary": "#000000",
"secondary": "#FE2C55",
"background": "#000000",
"text": "#FFFFFF",
},
"authenticity_tips": [
"Vertical video format",
"Bold text overlays",
"Trending style elements",
],
},
"linkedin_post": {
"name": "LinkedIn Post",
"description": "LinkedIn feed post style",
"best_for": ["professional networking", "B2B marketing", "career-focused content"],
"visual_style": "LinkedIn feed UI with professional profile elements",
"headline_style": "Professional, insight-driven headlines",
"tone": "Professional, authoritative, thoughtful",
"hook_examples": [
"3 lessons I learned about saving on coverage",
"Why most people overpay (and how to fix it)",
"The one change that cut my costs 40%",
"A thread on what actually moves the needle",
"Unpopular take: You might be underinsured",
],
"psychological_triggers": ["Authority", "Credibility", "Professionalism"],
"container_type": True,
"tags": ["container_type", "ugc"],
"font_style": "LinkedIn font, professional sans-serif",
"colors": {
"primary": "#0077B5",
"secondary": "#000000",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include profile elements",
"Maintain professional tone",
"Use LinkedIn-style formatting",
],
},
"app_store_listing": {
"name": "App Store Listing",
"description": "App store screenshot style",
"best_for": ["app promotion", "mobile apps", "app features"],
"visual_style": "App store listing UI with icon, ratings, screenshots",
"headline_style": "Feature-focused, benefit-driven",
"tone": "Polished, product-focused",
"hook_examples": [
"Get your quote in 2 minutes",
"Compare. Save. Done.",
"Rated 4.9 by 50,000+ users",
"Simple quotes. Real savings.",
"The easy way to lower your rate",
],
"psychological_triggers": ["Trust", "Clarity", "Social Proof"],
"container_type": True,
"tags": ["container_type", "native"],
"font_style": "San Francisco, system font",
"colors": {
"primary": "#007AFF",
"secondary": "#FF9500",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include app icon",
"Star ratings",
"Use app store UI elements",
],
},
"email_signature": {
"name": "Email Signature",
"description": "Professional email signature style",
"best_for": ["professional communication", "B2B outreach", "formal announcements"],
"visual_style": "Professional email signature with contact details and logo",
"headline_style": "Name / role driven hierarchy",
"tone": "Formal, professional",
"hook_examples": [
"Get your free quote today",
"Trusted advisor | Licensed agent",
"Let's find your best rate",
"Serving clients since 2010",
"Reply for a personalized quote",
],
"psychological_triggers": ["Authority", "Trust"],
"container_type": True,
"tags": ["container_type", "document_style"],
"font_style": "Arial, Helvetica, professional fonts",
"colors": {
"primary": "#000000",
"secondary": "#666666",
"background": "#FFFFFF",
"text": "#000000",
},
"authenticity_tips": [
"Include contact information",
"Clean professional formatting",
"Company logo if relevant",
],
},
}
def get_all_frameworks() -> Dict[str, Dict[str, Any]]:
"""Get all available frameworks."""
return FRAMEWORKS
def get_framework(key: str) -> Optional[Dict[str, Any]]:
"""Get a specific framework by key."""
return FRAMEWORKS.get(key)
def get_random_framework() -> Dict[str, Any]:
"""Get a random framework."""
key = random.choice(list(FRAMEWORKS.keys()))
return {"key": key, **FRAMEWORKS[key]}
def get_frameworks_for_niche(niche: str, count: int = 3) -> List[Dict[str, Any]]:
"""Get recommended frameworks for a niche."""
niche_lower = niche.lower().replace(" ", "_").replace("-", "_")
# Niche-specific framework preferences
niche_preferences = {
"home_insurance": ["testimonial", "problem_solution", "authority", "before_after", "lifestyle"],
"glp1": ["testimonial", "lifestyle", "authority", "problem_solution", "before_after"],
"auto_insurance": ["testimonial", "problem_solution", "authority", "before_after", "comparison"],
}
# Get preferred frameworks or use all
preferred_keys = niche_preferences.get(niche_lower, list(FRAMEWORKS.keys()))
# Shuffle so we don't always pick the first (e.g. GLP-1 was always getting before_after when count=1)
shuffled_preferred = preferred_keys.copy()
random.shuffle(shuffled_preferred)
remaining = [k for k in FRAMEWORKS.keys() if k not in preferred_keys]
random.shuffle(remaining)
all_keys = shuffled_preferred + remaining
# Take first count from the shuffled list (random variety per niche)
selected = all_keys[:count]
return [{"key": k, **FRAMEWORKS[k]} for k in selected]
# ---------------------------------------------------------------------------
# Container-type framework helpers (visual format / "container" = framework with container_type=True)
# ---------------------------------------------------------------------------
def get_framework_visual_guidance(framework_key: str) -> str:
"""Get visual guidance for a framework (used for image generation)."""
fw = FRAMEWORKS.get(framework_key)
if fw:
return fw.get("visual_style", "") or fw.get("visual_guidance", "")
return f"Framework: {framework_key}, authentic appearance"
def get_all_container_type_frameworks() -> Dict[str, Dict[str, Any]]:
"""Get all frameworks that are container-type (native/visual format styles)."""
return {k: v for k, v in FRAMEWORKS.items() if v.get("container_type")}
def get_frameworks_by_tag(tag: str) -> List[str]:
"""Return framework keys that have the given tag."""
return [k for k, v in FRAMEWORKS.items() if tag in v.get("tags", [])]
def get_native_frameworks() -> List[str]:
"""Framework keys that look like native app interfaces."""
return get_frameworks_by_tag("native")
def get_ugc_frameworks() -> List[str]:
"""Framework keys that look like user-generated content."""
return get_frameworks_by_tag("ugc")
def get_alert_frameworks() -> List[str]:
"""Framework keys that create urgency / alert style."""
return get_frameworks_by_tag("alert")
def get_random_container_type_framework() -> Dict[str, Any]:
"""Get a random framework that is a container-type (for ad format selection)."""
container_frameworks = get_all_container_type_frameworks()
if not container_frameworks:
return get_random_framework()
key = random.choice(list(container_frameworks.keys()))
return {"key": key, **container_frameworks[key]}