File size: 2,619 Bytes
026f283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Ecom verticals for creative variety.
Angles, concepts, and motivators can be adapted to different verticals to increase diversity.
"""

from typing import Dict, List, Any, Optional
import random

# Vertical name -> suggested angle keys (must exist in data.angles ANGLES)
ECOM_VERTICALS: List[Dict[str, Any]] = [
    {"key": "fashion", "name": "Fashion & Apparel", "angle_hint": "trending_now, confidence_boost, people_like_you, viral_popularity"},
    {"key": "beauty", "name": "Beauty & Skincare", "angle_hint": "pride_self_worth, testimonials, confidence_boost, real_stories"},
    {"key": "supplements", "name": "Supplements & Health", "angle_hint": "expert_backed, relief_escape, modern_solution, stress_relief"},
    {"key": "fitness", "name": "Fitness & Wellness", "angle_hint": "shortcut, pain_point, empowerment, hope_optimism"},
    {"key": "electronics", "name": "Electronics & Tech", "angle_hint": "modern_solution, smart_investment, comparison_logic, fast_instant"},
    {"key": "home_goods", "name": "Home & Living", "angle_hint": "peace_of_mind, save_money, lifestyle_match, risk_free"},
    {"key": "pets", "name": "Pet Products", "angle_hint": "emotional_connection, guilt_responsibility, relief_escape, community_trust"},
    {"key": "food_beverage", "name": "Food & Beverage", "angle_hint": "nostalgia, word_of_mouth, simple_easy, mass_adoption"},
    {"key": "jewelry_accessories", "name": "Jewelry & Accessories", "angle_hint": "pride_self_worth, personal_relevance, lifestyle_match, custom_fit"},
    {"key": "subscription", "name": "Subscription & Memberships", "angle_hint": "save_money, limited_time, community_trust, hassle_free"},
]

VERTICAL_KEYS = [v["key"] for v in ECOM_VERTICALS]


def get_random_vertical() -> Dict[str, Any]:
    """Return a random ecom vertical for variety."""
    return random.choice(ECOM_VERTICALS)


def get_vertical_by_key(key: str) -> Optional[Dict[str, Any]]:
    """Return vertical by key."""
    for v in ECOM_VERTICALS:
        if v.get("key") == key:
            return v
    return None


def get_verticals_for_prompt(count: int = 5) -> str:
    """Return a comma-separated list of vertical names for use in prompts."""
    chosen = random.sample(ECOM_VERTICALS, min(count, len(ECOM_VERTICALS)))
    return ", ".join(v["name"] for v in chosen)


def get_angle_keys_for_vertical(vertical_key: str) -> List[str]:
    """Return list of angle keys suggested for this ecom vertical (for variety)."""
    v = get_vertical_by_key(vertical_key)
    if not v or "angle_hint" not in v:
        return []
    return [k.strip() for k in v["angle_hint"].split(",")]