StoryLens / benchmarks.py
Marek4321's picture
Upload 13 files
6bdfadc verified
from typing import Dict
BENCHMARKS = {
"Apparel & Accessories": {
"retention": {
"best_arc": "Hook-Feature-Benefit-Action",
"best_arc_short": "HFBA",
"uplift_percent": 5.8,
"recommendation": "Start with strong hook, quickly show product features and benefits"
},
"ctr": {
"best_arc": "AIDA",
"best_arc_short": "AIDA",
"uplift_percent": 8.9,
"recommendation": "Build desire through aspirational content before call-to-action"
},
"cvr": {
"best_arc": "Social-Proof-Action",
"best_arc_short": "SPA",
"uplift_percent": 4.6,
"recommendation": "Lead with testimonials and reviews to build trust"
}
},
"Beauty": {
"retention": {
"best_arc": "Hook-Problem-Demo-Solution",
"best_arc_short": "HPDS",
"uplift_percent": 4.9,
"recommendation": "Hook attention, show problem, demonstrate product solving it"
},
"ctr": {
"best_arc": "Hook-Feature-Benefit-Action",
"best_arc_short": "HFBA",
"uplift_percent": 2.8,
"recommendation": "Focus on product features and benefits after initial hook"
},
"cvr": {
"best_arc": "Social-Proof-Action",
"best_arc_short": "SPA",
"uplift_percent": 3.7,
"recommendation": "Beauty buyers respond well to testimonials and reviews"
}
},
"Food": {
"retention": {
"best_arc": "Problem-Agitate-Solution",
"best_arc_short": "PAS",
"uplift_percent": 6.3,
"recommendation": "Amplify the problem/need before showing solution"
},
"ctr": {
"best_arc": "AIDA",
"best_arc_short": "AIDA",
"uplift_percent": 4.8,
"recommendation": "Build appetite and desire psychologically"
},
"cvr": {
"best_arc": "Problem-Agitate-Solution",
"best_arc_short": "PAS",
"uplift_percent": 8.5,
"recommendation": "Strong problem-solution narrative drives food conversions"
}
},
"Beverages": {
"retention": {
"best_arc": "Hook-Problem-Solution",
"best_arc_short": "HPS",
"uplift_percent": 4.1,
"recommendation": "Quick hook into problem-solution flow"
},
"ctr": {
"best_arc": "Feature-Benefit-Action",
"best_arc_short": "FBA",
"uplift_percent": 3.9,
"recommendation": "Direct product focus works for beverages"
},
"cvr": {
"best_arc": "Feature-Benefit-Action",
"best_arc_short": "FBA",
"uplift_percent": 5.1,
"recommendation": "Detailed feature explanation drives beverage conversions"
}
},
"Other": {
"retention": {
"best_arc": "Hook-Feature-Benefit-Action",
"best_arc_short": "HFBA",
"uplift_percent": 5.0,
"recommendation": "General best practice: hook + features + benefits"
},
"ctr": {
"best_arc": "AIDA",
"best_arc_short": "AIDA",
"uplift_percent": 5.0,
"recommendation": "Classic AIDA funnel works across categories"
},
"cvr": {
"best_arc": "Social-Proof-Action",
"best_arc_short": "SPA",
"uplift_percent": 4.0,
"recommendation": "Social proof generally effective for conversions"
}
}
}
MISSING_ELEMENT_IMPACT = {
"Hook": {
"impact": "+5-8% retention in first 2 seconds",
"suggestion": "Add attention-grabbing opening (question, surprising visual, bold statement)"
},
"Problem Setup": {
"impact": "+4-6% retention",
"suggestion": "Establish relatable pain point before showing product"
},
"Social Proof": {
"impact": "+3-5% CVR",
"suggestion": "Add testimonial, review, or crowd validation before CTA"
},
"Urgency Trigger": {
"impact": "+2-4% CVR",
"suggestion": "Add time-limited element (limited time offer, countdown)"
},
"Call-to-Action": {
"impact": "Critical for conversions",
"suggestion": "Add clear CTA (Shop Now, Learn More, Get Started)"
},
"Outcome": {
"impact": "+3-5% retention and CVR",
"suggestion": "Show transformation or result after using product"
}
}
GOAL_MAPPING = {
"Retention (Dwell Rate)": "retention",
"Click-Through (CTR)": "ctr",
"Conversions (CVR)": "cvr"
}
def get_benchmark(industry: str, goal: str) -> Dict:
"""Get benchmark data for industry and goal."""
goal_key = GOAL_MAPPING.get(goal, "retention")
return BENCHMARKS.get(industry, BENCHMARKS["Other"]).get(goal_key, {})
def get_missing_element_recommendation(element: str) -> Dict:
"""Get recommendation for missing element."""
return MISSING_ELEMENT_IMPACT.get(element, {
"impact": "May improve ad performance",
"suggestion": f"Consider adding {element} to strengthen narrative"
})