File size: 8,994 Bytes
4493d06
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23295c4
 
4493d06
 
23295c4
4493d06
 
 
23295c4
4493d06
 
23295c4
 
4493d06
 
23295c4
 
 
4493d06
23295c4
4493d06
23295c4
4493d06
 
23295c4
4493d06
 
23295c4
4493d06
23295c4
4493d06
23295c4
4493d06
 
23295c4
4493d06
 
 
 
 
 
 
 
 
 
 
 
 
23295c4
 
 
4493d06
23295c4
4493d06
 
 
 
 
23295c4
1ddc35b
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# Define system prompts for different generators

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

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

CRITICAL OUTPUT RULES:
- Output ONLY the offer itself with NO introductory text, explanations, or additional commentary
- Start directly with the attention hook or opening phrase
- The entire response should be ONLY the offer itself following the formula structure
- Do not include phrases like "Aquí tienes una oferta convincente" or "Esta es tu oferta"
"""

def create_offer_instruction(avatar_description, product_name, selected_formula_name, offer_formulas=None):
    """
    Creates instructions for generating an offer based on the selected formula.
    
    Args:
        avatar_description: Description of the target audience
        product_name: Name of the product or service
        selected_formula_name: Name of the formula to use
        offer_formulas: Dictionary containing the formulas (passed from app.py)
        
    Returns:
        str: Complete instruction for generating the offer
    """
    # Get the selected formula
    selected_formula = offer_formulas[selected_formula_name]
    
    # Add specific instructions for each formula
    additional_instructions = ""
    if selected_formula_name == "Fórmula Sueño-Obstáculo":
        additional_instructions = """
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
1. PRODUCT/SERVICE NAME HANDLING:
   - If product_name is provided and not empty, use it EXACTLY as written
   - If product_name is empty, generic (like "Producto/Servicio"), or contains placeholders, CREATE a compelling name that:
     * Reflects the target audience's desires and challenges
     * Communicates the main benefit or transformation
     * Sounds professional and memorable
     * Is specific to the niche or industry mentioned in avatar_description
   - If product_name contains a full phrase like "Un curso llamado Inglés sin problemas", extract only the real name ("Inglés sin problemas")

2. Analyze ALL available information:
   - Product/service name (product_name variable) or create one if needed
   - Target audience description (avatar_description)
   - Content from uploaded files (if any)

3. Determine the most appropriate type (curso, webinar, entrenamiento, etc.) based on:
   - Any type mentioned in product_name
   - The nature of the solution described in avatar_description
   - The most suitable format for the target audience's needs

4. Create a comprehensive offer by combining:
   - The appropriate type (determined in step 3)
   - The exact product name (if provided) or your created name (if needed)
   - A compelling dream based on avatar_description
   - A relevant obstacle based on avatar_description

5. The dream should be ambitious but believable, incorporating:
   - Target audience desires from avatar_description
   - Explicit goals mentioned in uploaded content (if any)

6. The obstacle should reflect:
   - Real problems mentioned in avatar_description
   - Challenges that would normally prevent achieving the dream

7. IMPORTANT: Vary the way you start the phrase. Instead of always using "Se trata de un...", use different openings such as:
   - "Presentamos un..."
   - "Te ofrecemos un..."
   - "Descubre nuestro..."
   - "Conoce el..."
   - "Hemos creado un..."
   - "Imagina tener acceso a un..."
   - "Por fin existe un..."
   - "Ahora puedes acceder a un..."
   - "Tenemos para ti un..."
   - "Disfruta de un..."
"""
    
    elif selected_formula_name == "Oferta Dorada":
        additional_instructions = """
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
1. ATTENTION HOOK HANDLING:
   - Analyze the avatar_description DEEPLY to understand their specific pain points, frustrations, and desires
   - Select a powerful attention hook that DIRECTLY connects with the avatar's current reality
   - CUSTOMIZE the hook specifically for this avatar - don't use generic examples
   - The hook MUST address the SAME problem that your promise will solve

2. MAINTAIN THEMATIC CONSISTENCY:
   - The attention hook, quantifiable promise, and benefit statement MUST all address the SAME problem
   - Create a LOGICAL PROGRESSION from problem (hook) to solution (promise) to implementation (benefit)

3. Create a compelling QUANTIFIABLE PROMISE that:
   - Is written COMPLETELY IN CAPITAL LETTERS
   - Includes concrete numbers (money, time, results)
   - Uses powerful action verbs (EARN, MULTIPLY, ACHIEVE, MASTER)
   - Specifies the exact result they will obtain
   - Optionally includes time or effort required
   - NEVER uses exclamation marks (!)
   - DIRECTLY addresses the same problem mentioned in the hook

4. Craft a benefit statement that:
   - Clearly explains the result they will obtain
   - Includes an authority element (proven method, studies, experience)
   - Establishes a realistic timeframe or effort needed
   - CONTINUES the same theme established in the hook and promise
"""
    
    # Create the instruction using the system prompt at the beginning
    instruction = f"""{offer_system_prompt}

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

{additional_instructions}

PRODUCT/SERVICE:
{product_name}

TARGET AUDIENCE:
{avatar_description}

Create a compelling offer following the formula structure exactly.
"""
    
    # Add examples if available
    if 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"][:3])])
        instruction += f"\n\nGet inspired by these examples:\n{examples_text}"
    
    return instruction

# System prompt for promises generation (updated from benefits)
system_prompt = """You are a world-class expert copywriter, experienced in creating compelling promises that emotionally connect and address the desires, problems, and motivations of the target audience.

OBJECTIVE:
- Generate convincing and specific promise statements in Spanish
- Connect emotionally with the audience
- Address real desires, problems, and motivations
- Maintain natural and conversational language
- Orient each promise towards transformation and results

FORMAT RULES:
- Each promise must start with "• "
- One promise per line
- No numbers at the beginning
- No explanations or categories
- Add a line break between each promise
- Never include : symbols in promises
- Each promise must be a complete and concise phrase

PROMISE STRUCTURE:
- Must be relevant to target audience
- Must show a specific, measurable result
- Must include an emotional element
- Must eliminate an objection or pain point
- Must inspire immediate action or belief

EJEMPLO DE FORMATO:
• Te garantizamos duplicar tus ingresos en 90 días, sin sacrificar tu tiempo en familia, gracias a nuestras estrategias probadas.

• Conquistarás tu mercado con técnicas efectivas que te posicionan como autoridad, mientras mantienes el equilibrio entre trabajo y vida personal.

• Verás crecer tu empresa incluso mientras duermes con nuestros sistemas automatizados, eliminando la necesidad de trabajar más horas.

IMPORTANT:
- Each promise must be unique, specific and believable
- Avoid repetitions and generalities
- Maintain a persuasive but honest tone
- Adapt language to audience comprehension level
- Focus on tangible and measurable results
"""
    
def create_instruction(number_of_benefits, target_audience, product, selected_formula, selected_angle):
    angle_instruction = ""
    if selected_angle["description"] != "Generate the bullet without any specific angle":
        angle_instruction = f"\nApply this angle: {selected_angle['description']}\nStyle: {selected_angle['style']}\nUse these keywords as inspiration: {', '.join(selected_angle['keywords'])}"
    
    return (
        f"{system_prompt}\n\n"
        f"Your task is to create {number_of_benefits} irresistible promises designed for {target_audience}. "
        f"The goal is to show how {product} will transform the reader's life, connecting naturally and emotionally. "
        f"Avoid using literal or repetitive mentions, and highlight concrete results, showing how the product delivers specific outcomes or satisfies real desires. "
        f"{angle_instruction}\n"
        f"IMPORTANT: Keep promises clear, specific and credible. "
        f"Use the selected formula as a guide:\n\n{selected_formula['description']}\n\n"
        f"Get inspired by these examples:\n"
        f"- {selected_formula['examples'][0]}\n"
        f"- {selected_formula['examples'][1]}\n"
        f"- {selected_formula['examples'][2]}\n\n"
        f"Your goal is to inspire confidence and action, avoiding explanations or categories in the response."
    )