File size: 12,995 Bytes
0943fed
520c50f
0943fed
 
bf165e3
 
1bd2548
bf165e3
 
 
 
 
f186297
 
 
1bd2548
f186297
1bd2548
 
0943fed
1bd2548
bf165e3
 
27908d2
bf165e3
e74b643
26ce1d0
 
 
81df141
e74b643
 
 
520c50f
e74b643
 
 
bf165e3
 
 
 
81df141
4362780
0625c7b
40b0916
0943fed
bf165e3
 
 
 
 
 
 
81df141
bf165e3
 
b53d55e
bf165e3
26ce1d0
 
 
c3badaa
bf165e3
 
 
61c1e67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40b0916
bf165e3
 
520c50f
aac9a79
 
 
 
 
 
 
 
 
8bda3ab
 
 
 
 
 
 
 
 
9aa79df
 
 
 
 
 
 
 
 
c484fff
 
 
 
 
 
 
 
 
83aa495
 
 
 
 
 
 
 
 
aac9a79
 
369b989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e74b643
0943fed
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
from formulas import offer_formulas
from sophistication.generator import create_sophistication_instruction

offer_system_prompt = """You are a world-class expert copywriter, experienced in creating compelling offers that connect emotionally with the target audience.

OBJECTIVE:
- Generate 3 COMPLETELY DIFFERENT versions of a convincing offer in Spanish
- Connect emotionally with the audience
- Address real desires, problems, and motivations
- Maintain natural and conversational language

CRITICAL OUTPUT RULES:
- Create 3 RADICALLY DIFFERENT versions of the offer, each with a unique approach, angle, and structure
- Each version MUST use different vocabulary, sentence structures, and emotional appeals
- Ensure NO repetition of key phrases or selling points between versions
- Number each version clearly as "VERSI脫N 1:", "VERSI脫N 2:", and "VERSI脫N 3:"
- Each version should be completely independent with different wording, focus, and benefits highlighted
- Output ONLY the offers themselves with NO introductory text, explanations, or additional commentary
- Start each version directly with its corresponding formula structure
- Do not include phrases like "Aqu铆 tienes una oferta convincente" or "Esta es tu oferta"
- Present all 3 versions one after another, clearly separated
"""

def create_offer_instruction(target_audience=None, product_service=None, selected_formula_name=None, file_content=None, skills=None, sophistication_level=None):
    """
    Creates the instruction for generating an offer based on the selected formula.
    
    Args:
        target_audience: Description of the target audience
        product_service: Product/service information
        selected_formula_name: Name of the selected formula
        file_content: Content from uploaded files (if any)
        skills: User's skills and expertise
        sophistication_level: String key for the market sophistication level
    
    Returns:
        str: The complete instruction for generating the offer
    """
    # Get the selected formula
    selected_formula = offer_formulas[selected_formula_name]
    
    # Get formula-specific instructions (fixed the get method usage)
    additional_instructions = selected_formula.get("instructions", "")
    
    # Create the base instruction
    instruction = f"""{offer_system_prompt}

FORMULA TO USE:
{selected_formula["description"]}

{additional_instructions}

PRODUCT/SERVICE:
{product_service}

TARGET AUDIENCE:
{target_audience}

ADDITIONAL INFORMATION:
{file_content}

Create a compelling offer following the formula structure exactly, adapting it to the sophistication level provided.
"""
    
    # Add examples if available
    if selected_formula.get("sophistication_examples") and sophistication_level:
        # Extract the sophistication level key (e.g., "nivel_1", "nivel_2", etc.)
        sophistication_key = sophistication_level.split(":")[0].lower().replace(" ", "_")
        
        # Map to the correct key format used in the examples
        if "nivel" not in sophistication_key:
            sophistication_key = f"nivel_{sophistication_key[0]}"
        
        # Get all examples for the specific sophistication level
        examples = []
        for key, example in selected_formula["sophistication_examples"].items():
            # Check if the key starts with the sophistication level (to include nivel_1, nivel_1_ejemplo2, etc.)
            if key.startswith(sophistication_key):
                examples.append(example)
        
        # Format all examples based on the formula type
        if examples:
            instruction += "\n\n### EXAMPLES FOR YOUR REFERENCE:\n"
            
            for i, example in enumerate(examples):
                instruction += f"\n#### Example {i+1}:\n"
                
                # Format based on formula type
                if selected_formula_name == "Oferta Dorada":
                    instruction += f"Headline: {example.get('headline', '')}\n"
                    instruction += f"Promise: {example.get('promise', '')}\n"
                    instruction += f"Subtitle: {example.get('subtitle', '')}\n"
                
                elif selected_formula_name == "Contraste Revelador":
                    instruction += f"Situaci贸n: {example.get('situacion', '')}\n"
                    instruction += f"Soluci贸n: {example.get('solucion', '')}\n"
                    instruction += f"Resultado: {example.get('resultado', '')}\n"
                
                elif selected_formula_name == "Propuesta 脷nica de Valor":
                    instruction += f"Transformaci贸n: {example.get('transformacion', '')}\n"
                    instruction += f"Objeciones: {example.get('objeciones', '')}\n"
                
                # Add more formula types as needed
    # Original code for general examples (keep as fallback)
    elif selected_formula.get("examples") and len(selected_formula["examples"]) > 0:
        examples_text = "\n\n".join([f"Example {i+1}:\n{example}" for i, example in enumerate(selected_formula["examples"])])
        instruction += f"\n\nGet inspired by these examples:\n{examples_text}"
    
    # Add sophistication level guidance using the dedicated function
    if sophistication_level and sophistication_level == "Nivel 1: Primera promesa fuerte":
        # Get basic sophistication guidance
        base_sophistication_guidance = create_sophistication_instruction(sophistication_level)
        
        # Add formula-specific guidance for Nivel 1
        formula_specific_guidance = f"\n\nFor this Level 1 market sophistication:\n- Make the hook educational or introduce the concept as new\n- Keep the promise direct, clear and impactful without comparisons\n- Focus on explaining what it is and how it works\n- Avoid complicated mechanisms or advanced explanations\n- Present the solution as if it's the first of its kind"
        
        # Combine the base guidance with formula-specific guidance
        instruction += f"\n\nMARKET SOPHISTICATION GUIDANCE:\n{base_sophistication_guidance}{formula_specific_guidance}\n\nEnsure the entire offer maintains consistency with this Level 1 sophistication while following the formula structure."
    elif sophistication_level and sophistication_level == "Nivel 2: Competencia aparece con la misma promesa":
        # Get basic sophistication guidance
        base_sophistication_guidance = create_sophistication_instruction(sophistication_level)
        
        # Add formula-specific guidance for Nivel 2
        formula_specific_guidance = f"\n\nFor this Level 2 market sophistication:\n- Make the hook acknowledge that the solution exists but position yours as better\n- Add quantitative or qualitative differentiators to your promise (faster, easier, cheaper, more effective)\n- Include specific numbers or percentages when possible to strengthen your claims\n- Compare your solution favorably to alternatives without naming competitors\n- Focus on what makes your solution stand out from others in the market"
        
        # Combine the base guidance with formula-specific guidance
        instruction += f"\n\nMARKET SOPHISTICATION GUIDANCE:\n{base_sophistication_guidance}{formula_specific_guidance}\n\nEnsure the entire offer maintains consistency with this Level 2 sophistication while following the formula structure."
    elif sophistication_level and sophistication_level == "Nivel 3: Mercado saturado de la misma promesa":
        # Get basic sophistication guidance
        base_sophistication_guidance = create_sophistication_instruction(sophistication_level)
        
        # Add formula-specific guidance for Nivel 3
        formula_specific_guidance = f"\n\nFor this Level 3 market sophistication:\n- Make the hook acknowledge market saturation and introduce a unique angle\n- Focus on a specific mechanism, method, or system that makes your solution different\n- Emphasize HOW your solution works, not just what it does\n- Introduce proprietary terminology or branded concepts\n- Present a new approach to solving the same problem\n- Highlight a unique feature or process that competitors don't have"
        
        # Combine the base guidance with formula-specific guidance
        instruction += f"\n\nMARKET SOPHISTICATION GUIDANCE:\n{base_sophistication_guidance}{formula_specific_guidance}\n\nEnsure the entire offer maintains consistency with this Level 3 sophistication while following the formula structure."
    elif sophistication_level and sophistication_level == "Nivel 4: Mercado esc茅ptico y desconfiado":
        # Get basic sophistication guidance
        base_sophistication_guidance = create_sophistication_instruction(sophistication_level)
        
        # Add formula-specific guidance for Nivel 4
        formula_specific_guidance = f"\n\nFor this Level 4 market sophistication:\n- Make the hook directly challenge established beliefs with a provocative tone\n- Include specific research, verifiable data, and concrete evidence\n- Reference exact numbers, studies, or expert endorsements\n- Address deep objections that a skeptical audience would have\n- Add elements of exclusivity or limited access\n- Use language that makes the customer feel part of a select group\n- Highlight tangible and diversified results in multiple areas\n- Provide guarantees backed by concrete evidence\n- Use a tone that encourages immediate action"
        
        # Combine the base guidance with formula-specific guidance
        instruction += f"\n\nMARKET SOPHISTICATION GUIDANCE:\n{base_sophistication_guidance}{formula_specific_guidance}\n\nEnsure the entire offer maintains consistency with this Level 4 sophistication while following the formula structure."
    elif sophistication_level and sophistication_level == "Nivel 5: Mercado insensibilizado y hastiado":
        # Get basic sophistication guidance
        base_sophistication_guidance = create_sophistication_instruction(sophistication_level)
        
        # Add formula-specific guidance for Nivel 5
        formula_specific_guidance = f"\n\nFor this Level 5 market sophistication:\n- Focus on emotional connection and values rather than product features\n- Convey a purpose or philosophy that resonates with the audience\n- Use storytelling that creates identity and belonging\n- Minimize direct selling or product mentions\n- Emphasize lifestyle and emotional experience\n- Use inspirational tone that transcends the product category\n- Focus on transformation of identity, not just results\n- Invite the audience to join a movement or philosophy\n- Use language that empowers and elevates the customer\n- Emphasize the journey and emotional transformation"
        
        # Combine the base guidance with formula-specific guidance
        instruction += f"\n\nMARKET SOPHISTICATION GUIDANCE:\n{base_sophistication_guidance}{formula_specific_guidance}\n\nEnsure the entire offer maintains consistency with this Level 5 sophistication while following the formula structure."
    elif sophistication_level:
        # Original code for other sophistication levels
        # Get basic sophistication guidance
        base_sophistication_guidance = create_sophistication_instruction(sophistication_level)
        
        # Add formula-specific sophistication guidance
        formula_specific_guidance = ""
        
        # Apply conditional logic based on formula name
        if selected_formula_name == "Oferta Dorada":
            formula_specific_guidance = f"\n\nFor the Oferta Dorada formula specifically:\n- Gancho: Create a hook that matches {sophistication_level} awareness level. For higher sophistication, use more specific data or challenge established beliefs.\n- Promesa: Craft a promise that addresses the skepticism level of this market. For higher sophistication, focus on unique mechanisms or emotional transformation.\n- Beneficio con Autoridad: Provide proof elements appropriate for this sophistication level. For higher sophistication, include more specific data, studies, or transparent evidence."
        
        elif selected_formula_name == "F贸rmula Sue帽o-Obst谩culo":
            formula_specific_guidance = f"\n\nFor the F贸rmula Sue帽o-Obst谩culo specifically:\n- Type: Select a solution type that resonates with {sophistication_level} markets.\n- Dream: For higher sophistication levels, make the dream more specific and emotionally resonant rather than generic.\n- Obstacle: For higher sophistication, address more complex or specific obstacles that show deep understanding of the market's challenges."
        
        # Add more conditionals for other formulas as they are added to the system
        
        # Combine the base guidance with formula-specific guidance
        instruction += f"\n\nMARKET SOPHISTICATION GUIDANCE:\n{base_sophistication_guidance}{formula_specific_guidance}\n\nEnsure the entire offer maintains consistency with this sophistication level while following the formula structure."
    
    return instruction