Spaces:
Sleeping
Sleeping
Upload 6 files
Browse files- app.py +0 -23
- bonuses/generator.py +272 -256
- bullets/generator.py +452 -452
- formulas.py +15 -107
app.py
CHANGED
@@ -10,11 +10,6 @@ import docx
|
|
10 |
from PIL import Image
|
11 |
import io
|
12 |
|
13 |
-
# Import the bullet generator
|
14 |
-
from bullets.generator import create_bullet_instruction
|
15 |
-
# Import the bonus generator
|
16 |
-
from bonuses.generator import create_bonus_instruction
|
17 |
-
|
18 |
# Set page to wide mode to use full width
|
19 |
st.set_page_config(layout="wide")
|
20 |
|
@@ -219,24 +214,6 @@ with col2:
|
|
219 |
"""
|
220 |
instruction += creative_hook_instruction
|
221 |
|
222 |
-
# Add instruction for generating benefit bullets based on the promise
|
223 |
-
bullet_content = None
|
224 |
-
if hasattr(st.session_state, 'file_content') and st.session_state.input_type in ["file", "both"]:
|
225 |
-
bullet_content = st.session_state.file_content
|
226 |
-
|
227 |
-
instruction += create_bullet_instruction(
|
228 |
-
avatar_description=avatar_description,
|
229 |
-
product_name=product_name,
|
230 |
-
uploaded_content=bullet_content
|
231 |
-
)
|
232 |
-
|
233 |
-
# Add instruction for generating bonuses that complement the offer
|
234 |
-
instruction += create_bonus_instruction(
|
235 |
-
avatar_description=avatar_description,
|
236 |
-
product_name=product_name,
|
237 |
-
selected_formula_name=st.session_state.formula_type
|
238 |
-
)
|
239 |
-
|
240 |
# Add additional context based on input type
|
241 |
if st.session_state.input_type == "manual":
|
242 |
additional_context = f"""
|
|
|
10 |
from PIL import Image
|
11 |
import io
|
12 |
|
|
|
|
|
|
|
|
|
|
|
13 |
# Set page to wide mode to use full width
|
14 |
st.set_page_config(layout="wide")
|
15 |
|
|
|
214 |
"""
|
215 |
instruction += creative_hook_instruction
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
# Add additional context based on input type
|
218 |
if st.session_state.input_type == "manual":
|
219 |
additional_context = f"""
|
bonuses/generator.py
CHANGED
@@ -1,257 +1,273 @@
|
|
1 |
-
def create_bonus_instruction(avatar_description=None, product_name=None, selected_formula_name=None, target_audience=None, uploaded_content=None):
|
2 |
-
"""
|
3 |
-
Creates instructions for generating compelling bonuses that complement the main offer.
|
4 |
-
|
5 |
-
Args:
|
6 |
-
avatar_description: Description of the target audience
|
7 |
-
product_name: Name of the product or service
|
8 |
-
selected_formula_name: Name of the formula used for the main offer
|
9 |
-
target_audience: Description of the target audience (alternative to avatar_description)
|
10 |
-
uploaded_content: Content from uploaded files (if any)
|
11 |
-
|
12 |
-
Returns:
|
13 |
-
str: Complete instruction for generating bonuses
|
14 |
-
"""
|
15 |
-
# Check if any information is provided
|
16 |
-
if not avatar_description and not product_name and not selected_formula_name and not target_audience and not uploaded_content:
|
17 |
-
return """
|
18 |
-
ADVERTENCIA: No se ha proporcionado ninguna información para generar bonos.
|
19 |
-
|
20 |
-
Para crear bonos efectivos y relevantes, por favor proporciona al menos uno de los siguientes:
|
21 |
-
- Descripción del público objetivo (avatar)
|
22 |
-
- Nombre del producto o servicio
|
23 |
-
- Fórmula seleccionada para la oferta principal
|
24 |
-
- Audiencia objetivo
|
25 |
-
- Contenido adicional relevante
|
26 |
-
|
27 |
-
Sin esta información, los bonos generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
|
28 |
-
"""
|
29 |
-
|
30 |
-
# Base instruction for bonus generation
|
31 |
-
base_instruction = """
|
32 |
-
|
33 |
-
BONUS CREATION SECTION:
|
34 |
-
|
35 |
-
You are now tasked with creating compelling bonuses that complement the main offer and overcome purchase objections.
|
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 |
-
- Tools
|
176 |
-
-
|
177 |
-
|
178 |
-
|
179 |
-
-
|
180 |
-
-
|
181 |
-
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
-
|
194 |
-
-
|
195 |
-
-
|
196 |
-
-
|
197 |
-
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
""
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
return complete_instruction
|
|
|
1 |
+
def create_bonus_instruction(avatar_description=None, product_name=None, selected_formula_name=None, target_audience=None, uploaded_content=None):
|
2 |
+
"""
|
3 |
+
Creates instructions for generating compelling bonuses that complement the main offer.
|
4 |
+
|
5 |
+
Args:
|
6 |
+
avatar_description: Description of the target audience
|
7 |
+
product_name: Name of the product or service
|
8 |
+
selected_formula_name: Name of the formula used for the main offer
|
9 |
+
target_audience: Description of the target audience (alternative to avatar_description)
|
10 |
+
uploaded_content: Content from uploaded files (if any)
|
11 |
+
|
12 |
+
Returns:
|
13 |
+
str: Complete instruction for generating bonuses
|
14 |
+
"""
|
15 |
+
# Check if any information is provided
|
16 |
+
if not avatar_description and not product_name and not selected_formula_name and not target_audience and not uploaded_content:
|
17 |
+
return """
|
18 |
+
ADVERTENCIA: No se ha proporcionado ninguna información para generar bonos.
|
19 |
+
|
20 |
+
Para crear bonos efectivos y relevantes, por favor proporciona al menos uno de los siguientes:
|
21 |
+
- Descripción del público objetivo (avatar)
|
22 |
+
- Nombre del producto o servicio
|
23 |
+
- Fórmula seleccionada para la oferta principal
|
24 |
+
- Audiencia objetivo
|
25 |
+
- Contenido adicional relevante
|
26 |
+
|
27 |
+
Sin esta información, los bonos generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
|
28 |
+
"""
|
29 |
+
|
30 |
+
# Base instruction for bonus generation
|
31 |
+
base_instruction = """
|
32 |
+
|
33 |
+
BONUS CREATION SECTION:
|
34 |
+
|
35 |
+
You are now tasked with creating compelling bonuses that complement the main offer and overcome purchase objections.
|
36 |
+
|
37 |
+
IMPORTANT: After presenting the main offer and the benefit bullets section, add a section with 3-5 powerful bonuses that enhance the value proposition.
|
38 |
+
|
39 |
+
Start the bonuses section with an introduction like:
|
40 |
+
"Además, al aprovechar esta oferta también recibirás estos bonos exclusivos:" or "Y eso no es todo, también disfrutarás de estos valiosos recursos adicionales:" or "Como parte de esta oferta especial, obtendrás estos bonos de alto valor:"
|
41 |
+
|
42 |
+
For the bonus creation section:
|
43 |
+
|
44 |
+
You are a world-class expert in creating irresistible bonus packages that increase perceived value and overcome objections.
|
45 |
+
|
46 |
+
OBJECTIVE:
|
47 |
+
- Generate 3-5 compelling and specific bonuses in Spanish
|
48 |
+
- Each bonus must address a specific objection or accelerate results
|
49 |
+
- Connect emotionally with the target audience's needs
|
50 |
+
- Provide tools/templates that reduce effort and time
|
51 |
+
- Include clear monetary value statements
|
52 |
+
- Add elements of scarcity or urgency
|
53 |
+
"""
|
54 |
+
|
55 |
+
# Add guidance based on available information
|
56 |
+
guidance = ""
|
57 |
+
|
58 |
+
# Check different combinations of available information
|
59 |
+
if not avatar_description and not product_name and not target_audience and uploaded_content:
|
60 |
+
# Only uploaded content provided
|
61 |
+
guidance = """
|
62 |
+
NOTA IMPORTANTE: Solo se ha proporcionado contenido adicional sin detalles específicos del público objetivo o producto.
|
63 |
+
Analiza cuidadosamente el contenido subido para:
|
64 |
+
- Identificar el público objetivo probable a partir del contexto
|
65 |
+
- Determinar el producto/servicio que probablemente se está ofreciendo
|
66 |
+
- Extraer puntos de dolor, objeciones y necesidades mencionadas en el contenido
|
67 |
+
- Crear bonos que complementen la oferta principal inferida del contenido
|
68 |
+
"""
|
69 |
+
elif avatar_description and not product_name and not uploaded_content:
|
70 |
+
# Only avatar description provided
|
71 |
+
guidance = """
|
72 |
+
NOTA IMPORTANTE: Solo se ha proporcionado información del público objetivo, sin detalles del producto ni contenido adicional.
|
73 |
+
Enfócate en crear bonos que aborden:
|
74 |
+
- Puntos de dolor específicos mencionados en la descripción del avatar
|
75 |
+
- Objeciones comunes que este público suele tener
|
76 |
+
- Recursos que ayudarían a este público específico a implementar cualquier solución
|
77 |
+
"""
|
78 |
+
elif product_name and not avatar_description and not uploaded_content:
|
79 |
+
# Only product name provided
|
80 |
+
guidance = """
|
81 |
+
NOTA IMPORTANTE: Solo se ha proporcionado información del producto, sin detalles del público objetivo ni contenido adicional.
|
82 |
+
Enfócate en crear bonos que:
|
83 |
+
- Mejoren el valor del producto específico mencionado
|
84 |
+
- Aborden objeciones comunes relacionadas con este tipo de producto
|
85 |
+
- Proporcionen apoyo de implementación para este producto específico
|
86 |
+
"""
|
87 |
+
elif avatar_description and product_name and not uploaded_content:
|
88 |
+
# Avatar and product provided, no uploaded content
|
89 |
+
guidance = """
|
90 |
+
NOTA IMPORTANTE: Se ha proporcionado información tanto del público objetivo como del producto, pero no hay contenido adicional.
|
91 |
+
Crea bonos altamente dirigidos que:
|
92 |
+
- Conecten los beneficios específicos del producto con las necesidades del avatar
|
93 |
+
- Aborden las objeciones más probables que este público tendría sobre este producto
|
94 |
+
- Proporcionen apoyo de implementación adaptado a esta combinación de público y producto
|
95 |
+
"""
|
96 |
+
elif avatar_description and uploaded_content and not product_name:
|
97 |
+
# Avatar and uploaded content provided, no product
|
98 |
+
guidance = """
|
99 |
+
NOTA IMPORTANTE: Se ha proporcionado información del público objetivo y contenido adicional, pero no hay detalles específicos del producto.
|
100 |
+
Analiza ambas fuentes para:
|
101 |
+
- Inferir el producto/servicio probable del contexto
|
102 |
+
- Identificar puntos de dolor específicos mencionados tanto en la descripción del avatar como en el contenido subido
|
103 |
+
- Crear bonos que aborden las necesidades y objeciones más prominentes
|
104 |
+
"""
|
105 |
+
elif product_name and uploaded_content and not avatar_description:
|
106 |
+
# Product and uploaded content provided, no avatar
|
107 |
+
guidance = """
|
108 |
+
NOTA IMPORTANTE: Se ha proporcionado información del producto y contenido adicional, pero no hay detalles del público objetivo.
|
109 |
+
Analiza ambas fuentes para:
|
110 |
+
- Inferir el público objetivo probable del contexto
|
111 |
+
- Identificar cómo el producto aborda las necesidades mencionadas en el contenido subido
|
112 |
+
- Crear bonos que mejoren el valor del producto para el público probable
|
113 |
+
"""
|
114 |
+
|
115 |
+
# Add information about available inputs
|
116 |
+
input_information = f"""
|
117 |
+
AVAILABLE INFORMATION FOR ANALYSIS:
|
118 |
+
|
119 |
+
1. TARGET AUDIENCE DESCRIPTION:
|
120 |
+
{avatar_description if avatar_description else "No specific avatar description provided."}
|
121 |
+
|
122 |
+
2. PRODUCT/SERVICE NAME:
|
123 |
+
{product_name if product_name else "No specific product name provided."}
|
124 |
+
|
125 |
+
3. UPLOADED CONTENT:
|
126 |
+
{uploaded_content if uploaded_content else "No additional content uploaded."}
|
127 |
+
|
128 |
+
{guidance}
|
129 |
+
|
130 |
+
IMPORTANT: Analyze ALL available information above to identify specific pain points, objections, and needs that can be addressed through bonuses.
|
131 |
+
"""
|
132 |
+
|
133 |
+
# Detailed instructions for creating effective bonuses with the new structure
|
134 |
+
bonus_instructions = """
|
135 |
+
SPECIFIC INSTRUCTIONS FOR CREATING BONUSES:
|
136 |
+
|
137 |
+
STEP 1: ANALYZE THE AVATAR DEEPLY
|
138 |
+
- Identify their specific pains, fears, objections, limiting beliefs, and problems
|
139 |
+
- Look for emotional triggers that might prevent them from taking action
|
140 |
+
- Determine what keeps them awake at night regarding this problem
|
141 |
+
- Identify what they've tried before that hasn't worked
|
142 |
+
- Understand their timeline expectations and what might make them hesitate
|
143 |
+
- EXTRACT SPECIFIC DETAILS from the avatar description AND uploaded content
|
144 |
+
|
145 |
+
STEP 2: ENUMERATE PROBLEMS AND PROPOSE SOLUTIONS
|
146 |
+
For each problem identified in Step 1:
|
147 |
+
- Clearly articulate the specific problem/objection
|
148 |
+
- Propose a concrete solution that addresses it directly
|
149 |
+
- Consider how this solution could be packaged as a high-value, low-effort bonus
|
150 |
+
- Focus on tools, templates, checklists rather than additional training
|
151 |
+
- Ensure each solution provides quick wins and immediate value
|
152 |
+
"""
|
153 |
+
|
154 |
+
# Rest of the instructions remain the same
|
155 |
+
remaining_instructions = """
|
156 |
+
STEP 3: CREATE COMPELLING BONUSES BASED ON SOLUTIONS
|
157 |
+
For each solution, create a bonus that:
|
158 |
+
- Has an attractive, benefit-driven name
|
159 |
+
- Addresses a specific objection or accelerates results
|
160 |
+
- Provides tools/templates that reduce effort and time
|
161 |
+
- Includes a clear monetary value statement
|
162 |
+
- Contains an element of scarcity or urgency
|
163 |
+
|
164 |
+
STEP 4: STRUCTURE EACH BONUS FOLLOWING THIS FRAMEWORK
|
165 |
+
- Start with "BONO #X: [NOMBRE ATRACTIVO]" in bold
|
166 |
+
- Describe what it is and how it helps in 2-4 sentences
|
167 |
+
- Explain how it overcomes a specific objection or accelerates results
|
168 |
+
- Include a monetary value statement (e.g., "Valor: $X")
|
169 |
+
- Add a scarcity/urgency element (limited availability or time-sensitive)
|
170 |
+
|
171 |
+
CRITICAL BONUS CREATION GUIDELINES:
|
172 |
+
|
173 |
+
1. COMPLEMENTARY VALUE:
|
174 |
+
- Each bonus must complement (not compete with) the main offer: {product_name}
|
175 |
+
- Tools and checklists are BETTER than additional training (less effort/time = higher perceived value)
|
176 |
+
- The combined perceived value of all bonuses should EXCEED the value of the main offer
|
177 |
+
|
178 |
+
2. OBJECTION HANDLING:
|
179 |
+
- Each bonus must address a specific concern or obstacle in the prospect's mind
|
180 |
+
- Demonstrate why their limiting beliefs about success are incorrect
|
181 |
+
- Solve their "next problem" before they encounter it
|
182 |
+
- Show how the bonus removes friction from implementing the main offer
|
183 |
+
|
184 |
+
3. PSYCHOLOGICAL TRIGGERS:
|
185 |
+
- Create a value discrepancy between price and total package worth
|
186 |
+
- Communicate subconsciously that the main offer must be extremely valuable
|
187 |
+
- Add scarcity and urgency elements to each bonus to maximize impact
|
188 |
+
- Focus on immediate implementation and quick wins
|
189 |
+
|
190 |
+
4. BONUS TYPES TO PRIORITIZE:
|
191 |
+
- Tools that simplify implementation of the main offer
|
192 |
+
- Templates that save time and ensure success
|
193 |
+
- Checklists that prevent mistakes and ensure completion
|
194 |
+
- Quick-start guides that accelerate initial results
|
195 |
+
- Swipe files or examples that can be immediately used
|
196 |
+
- Limited access to exclusive resources or communities
|
197 |
+
- Personal feedback or review opportunities
|
198 |
+
|
199 |
+
5. SCARCITY AND URGENCY EXAMPLES:
|
200 |
+
a) Scarcity-based bonuses:
|
201 |
+
- "Solo las personas que se inscriban en este programa tendrán acceso a estos bonos que nunca están a la venta en otro lugar."
|
202 |
+
- "Solo quedan 3 cupos para mi sesión estratégica valorada en $500, si compras hoy, puedes obtener uno de los últimos lugares como bono."
|
203 |
+
|
204 |
+
b) Urgency-based bonuses:
|
205 |
+
- "Si compras hoy, agregaré el bono XYZ que normalmente cuesta $1,000, completamente gratis. Lo hago porque quiero premiar a quienes toman acción inmediata."
|
206 |
+
- "Este bono estará disponible solo durante las próximas 48 horas, después de ese tiempo será retirado permanentemente."
|
207 |
+
|
208 |
+
FORMATTING REQUIREMENTS:
|
209 |
+
- Start with a brief introduction about the additional value (max 2 sentences)
|
210 |
+
- Format each bonus as: "BONO #1: [Nombre Atractivo]" in bold
|
211 |
+
- Follow with 2-4 sentences describing the bonus and its specific benefit
|
212 |
+
- Include a value statement for each bonus
|
213 |
+
- Add an urgency or scarcity element for each bonus
|
214 |
+
- End with a total value statement for all bonuses combined
|
215 |
+
|
216 |
+
EXAMPLES OF EFFECTIVE BONUSES:
|
217 |
+
|
218 |
+
EXAMPLE 1:
|
219 |
+
Y eso no es todo, también disfrutarás de estos beneficios adicionales:
|
220 |
+
|
221 |
+
**BONO #1: Kit de Plantillas de Email "Respuesta Inmediata"**
|
222 |
+
5 plantillas de email probadas que generan respuestas en menos de 24 horas. Estas plantillas han sido optimizadas con técnicas de psicología persuasiva y han aumentado las tasas de respuesta en un 78% en pruebas con más de 1,000 envíos. Valor: $197 - Disponible solo para los primeros 50 inscritos.
|
223 |
+
|
224 |
+
**BONO #2: Checklist "Propuesta Perfecta"**
|
225 |
+
Una guía paso a paso con 27 puntos de verificación para asegurar que tus propuestas comerciales sean irresistibles. Elimina los errores comunes que hacen que los clientes digan "lo pensaré" y aumenta tu tasa de cierre en un 35%. Valor: $97 - Acceso por tiempo limitado.
|
226 |
+
|
227 |
+
**BONO #3: Sesión Estratégica Personalizada de 30 Minutos**
|
228 |
+
Una consulta privada donde analizaremos tu situación específica y crearemos un plan de acción personalizado. Identificaremos tus mayores oportunidades de crecimiento y los obstáculos que debes eliminar primero. Valor: $250 - Solo 10 espacios disponibles cada mes.
|
229 |
+
|
230 |
+
Valor total de los bonos: $544 - Todo incluido hoy con tu inscripción.
|
231 |
+
|
232 |
+
EXAMPLE 2:
|
233 |
+
Como parte de esta oferta especial, recibirás estos valiosos recursos adicionales:
|
234 |
+
|
235 |
+
**BONO #1: Biblioteca de Scripts de Ventas "Cierre Garantizado"**
|
236 |
+
10 scripts de conversación probados para superar las 7 objeciones más comunes en tu industria. Cada script incluye respuestas específicas, preguntas de control y frases de transición que han generado más de $1.2 millones en ventas. Valor: $297 - Disponible solo esta semana.
|
237 |
+
|
238 |
+
**BONO #2: Software "Cliente Tracker Pro"**
|
239 |
+
Una herramienta exclusiva que automatiza el seguimiento de prospectos y te alerta exactamente cuándo contactarlos para maximizar conversiones. Reduce el tiempo de gestión en un 68% y aumenta la tasa de conversión en un 23%. Valor: $197/año - Acceso gratuito por 12 meses.
|
240 |
+
|
241 |
+
**BONO #3: Comunidad VIP "Crecimiento Acelerado"**
|
242 |
+
Acceso a nuestro grupo privado con más de 500 profesionales de tu industria, sesiones de preguntas semanales con expertos y biblioteca de recursos exclusivos. El 87% de los miembros reportan un aumento de ingresos en los primeros 60 días. Valor: $47/mes - Membresía gratuita por 6 meses.
|
243 |
+
|
244 |
+
**BONO #4: Análisis Competitivo Personalizado**
|
245 |
+
Un informe detallado que analiza a tus 3 principales competidores, identifica sus debilidades y te muestra exactamente cómo posicionarte para captar su clientela. Incluye estrategias específicas para diferenciarte inmediatamente. Valor: $497 - Solo para los primeros 25 clientes.
|
246 |
+
|
247 |
+
Valor total de bonos: $1,273 - Todo incluido hoy sin costo adicional.
|
248 |
+
|
249 |
+
EXAMPLE 3:
|
250 |
+
Para maximizar tus resultados, he incluido estos recursos exclusivos:
|
251 |
+
|
252 |
+
**BONO #1: Calculadora de ROI "Inversión Inteligente"**
|
253 |
+
Una herramienta digital que proyecta con precisión tus retornos basados en 5 años de datos de clientes reales. Te muestra exactamente cuánto ganarás y en qué plazo, eliminando la incertidumbre de tu inversión. Valor: $147 - Acceso inmediato con tu compra hoy.
|
254 |
+
|
255 |
+
**BONO #2: Masterclass "Optimización Rápida"**
|
256 |
+
Una sesión de 60 minutos donde te muestro los 3 ajustes que puedes implementar en 24 horas para ver resultados inmediatos. El 92% de los participantes reportan mejoras medibles en la primera semana. Valor: $197 - La grabación se elimina en 30 días.
|
257 |
+
|
258 |
+
**BONO #3: Plantillas "Listo para Implementar"**
|
259 |
+
Un conjunto de 15 documentos, hojas de cálculo y presentaciones que puedes personalizar en minutos para implementar lo aprendido sin demora. Ahorra más de 40 horas de trabajo de preparación. Valor: $97 - Actualizado trimestralmente solo para clientes actuales.
|
260 |
+
|
261 |
+
**BONO #4: Certificación "Especialista Verificado"**
|
262 |
+
Completa el programa y recibe una certificación oficial que puedes mostrar en tu perfil profesional. Nuestros certificados son reconocidos por más de 200 empresas que buscan activamente profesionales con estas habilidades. Valor: $297 - Las certificaciones se emiten solo 4 veces al año.
|
263 |
+
|
264 |
+
**BONO #5: Sesiones de "Implementación Guiada"**
|
265 |
+
Dos sesiones grupales mensuales donde implementamos juntos, resolvemos dudas específicas y superamos bloqueos. El 78% de quienes asisten a estas sesiones implementan el doble de rápido que quienes no lo hacen. Valor: $97/mes - Acceso por 3 meses incluido.
|
266 |
+
|
267 |
+
Valor total de bonos: $1,032 - Todo incluido con tu inversión hoy.
|
268 |
+
"""
|
269 |
+
|
270 |
+
# Combine all instructions
|
271 |
+
complete_instruction = base_instruction + input_information + bonus_instructions + remaining_instructions
|
272 |
+
|
273 |
return complete_instruction
|
bullets/generator.py
CHANGED
@@ -1,453 +1,453 @@
|
|
1 |
-
import random
|
2 |
-
|
3 |
-
def create_bullet_instruction(avatar_description=None, product_name=None, uploaded_content=None):
|
4 |
-
"""
|
5 |
-
Creates the instruction for generating benefit bullets.
|
6 |
-
The model will randomly choose between different bullet formulas.
|
7 |
-
|
8 |
-
Args:
|
9 |
-
avatar_description: Description of the target audience
|
10 |
-
product_name: Name of the product or service
|
11 |
-
uploaded_content: Content from uploaded files (if any)
|
12 |
-
|
13 |
-
Returns:
|
14 |
-
str: The complete instruction for generating bullets
|
15 |
-
"""
|
16 |
-
# Base instruction that applies to all formulas
|
17 |
-
base_instruction = """
|
18 |
-
IMPORTANT: After creating the main offer, add a section with 5 powerful benefit bullets that reinforce the promise.
|
19 |
-
|
20 |
-
Start the bullets section with an introduction like:
|
21 |
-
"Además, al aprovechar esta oferta también obtendrás:" or "Y eso no es todo, también disfrutarás de estos beneficios adicionales:" or "Con esta solución también conseguirás:"
|
22 |
-
|
23 |
-
For the benefit bullets section:
|
24 |
-
|
25 |
-
You are a world-class expert copywriter, experienced in creating benefits that emotionally connect and address the desires, problems, and motivations of the target audience.
|
26 |
-
|
27 |
-
OBJECTIVE:
|
28 |
-
- Generate 5 convincing and specific benefit bullets in Spanish
|
29 |
-
- Connect emotionally with the audience
|
30 |
-
- Address real desires, problems, and motivations
|
31 |
-
- Maintain natural and conversational language
|
32 |
-
- Orient each benefit towards action
|
33 |
-
|
34 |
-
FORMAT RULES:
|
35 |
-
- Each benefit must start with "• "
|
36 |
-
- One benefit per line
|
37 |
-
- No explanations or categories
|
38 |
-
- Add a line break between each benefit
|
39 |
-
- Never include : symbols in bullets
|
40 |
-
- Never use exclamation marks (!) in any bullet
|
41 |
-
- Each benefit must be a complete and concise phrase
|
42 |
-
- Do not use any emojis in the bullets
|
43 |
-
- Use natural, conversational language (avoid formal or technical jargon)
|
44 |
-
|
45 |
-
IMPORTANT:
|
46 |
-
- Each benefit must be ultra-specific with concrete, measurable outcomes
|
47 |
-
- NEVER use generic phrases like "mejorar tu vida" or "aumentar tu productividad"
|
48 |
-
- Always include specific numbers, percentages, or exact timeframes
|
49 |
-
- Each bullet must solve a very specific problem with a detailed solution
|
50 |
-
- Include at least one bullet that directly counters a common objection with evidence
|
51 |
-
- Each bullet should contain a clear call to action with a specific next step
|
52 |
-
- Avoid all generalizations - be precise about exactly what the user will get
|
53 |
-
- Maintain a persuasive but honest tone with verifiable claims
|
54 |
-
- Focus on tangible and measurable results that can be verified
|
55 |
-
- Ensure each bullet addresses a different aspect of the offer
|
56 |
-
- Write in a natural, conversational tone as if speaking directly to the reader
|
57 |
-
- Never use exclamation marks in the bullets
|
58 |
-
"""
|
59 |
-
|
60 |
-
# Add guidance based on available information
|
61 |
-
guidance = ""
|
62 |
-
|
63 |
-
# Check different combinations of available information
|
64 |
-
if not avatar_description and not product_name and not uploaded_content:
|
65 |
-
return """
|
66 |
-
ADVERTENCIA: No se ha proporcionado ninguna información para generar los bullets.
|
67 |
-
|
68 |
-
Para obtener bullets más efectivos y personalizados, por favor proporciona al menos uno de los siguientes:
|
69 |
-
- Descripción del público objetivo (avatar)
|
70 |
-
- Nombre del producto o servicio
|
71 |
-
- Contenido adicional relevante
|
72 |
-
|
73 |
-
Sin esta información, los bullets generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
|
74 |
-
"""
|
75 |
-
elif not avatar_description and not product_name and uploaded_content:
|
76 |
-
# Only uploaded content provided
|
77 |
-
guidance = """
|
78 |
-
NOTA IMPORTANTE: Solo se ha proporcionado contenido adicional sin detalles específicos del público objetivo o producto.
|
79 |
-
Analiza cuidadosamente el contenido subido para:
|
80 |
-
- Identificar el público objetivo probable a partir del contexto
|
81 |
-
- Determinar el producto/servicio que probablemente se está ofreciendo
|
82 |
-
- Extraer puntos de dolor, objeciones y necesidades mencionadas en el contenido
|
83 |
-
- Crear beneficios que aborden específicamente los problemas identificados en el contenido
|
84 |
-
"""
|
85 |
-
elif avatar_description and not product_name and not uploaded_content:
|
86 |
-
# Only avatar description provided
|
87 |
-
guidance = """
|
88 |
-
NOTA IMPORTANTE: Solo se ha proporcionado información del público objetivo, sin detalles del producto ni contenido adicional.
|
89 |
-
Enfócate en crear beneficios que:
|
90 |
-
- Aborden los puntos de dolor específicos mencionados en la descripción del avatar
|
91 |
-
- Resuelvan las objeciones comunes que este público suele tener
|
92 |
-
- Proporcionen soluciones a los problemas específicos de este público
|
93 |
-
- Conecten emocionalmente con las motivaciones de este avatar
|
94 |
-
"""
|
95 |
-
elif product_name and not avatar_description and not uploaded_content:
|
96 |
-
# Only product name provided
|
97 |
-
guidance = """
|
98 |
-
NOTA IMPORTANTE: Solo se ha proporcionado información del producto, sin detalles del público objetivo ni contenido adicional.
|
99 |
-
Enfócate en crear beneficios que:
|
100 |
-
- Destaquen las características únicas de este producto específico
|
101 |
-
- Aborden objeciones comunes relacionadas con este tipo de producto
|
102 |
-
- Muestren resultados medibles que este producto puede proporcionar
|
103 |
-
- Diferencien este producto de alternativas genéricas
|
104 |
-
"""
|
105 |
-
elif avatar_description and product_name and not uploaded_content:
|
106 |
-
# Avatar and product provided, no uploaded content
|
107 |
-
guidance = """
|
108 |
-
NOTA IMPORTANTE: Se ha proporcionado información tanto del público objetivo como del producto, pero no hay contenido adicional.
|
109 |
-
Crea beneficios altamente dirigidos que:
|
110 |
-
- Conecten las características específicas del producto con las necesidades del avatar
|
111 |
-
- Aborden las objeciones más probables que este público tendría sobre este producto
|
112 |
-
- Muestren cómo este producto específico resuelve los problemas concretos de este avatar
|
113 |
-
- Destaquen los resultados medibles que este público específico obtendrá con este producto
|
114 |
-
"""
|
115 |
-
elif avatar_description and uploaded_content and not product_name:
|
116 |
-
# Avatar and uploaded content provided, no product
|
117 |
-
guidance = """
|
118 |
-
NOTA IMPORTANTE: Se ha proporcionado información del público objetivo y contenido adicional, pero no hay detalles específicos del producto.
|
119 |
-
Analiza ambas fuentes para:
|
120 |
-
- Inferir el producto/servicio probable del contexto
|
121 |
-
- Identificar puntos de dolor específicos mencionados tanto en la descripción del avatar como en el contenido subido
|
122 |
-
- Crear beneficios que aborden las necesidades y objeciones más prominentes
|
123 |
-
- Asegurar que los beneficios sean relevantes tanto para el avatar como para el contexto del contenido
|
124 |
-
"""
|
125 |
-
elif product_name and uploaded_content and not avatar_description:
|
126 |
-
# Product and uploaded content provided, no avatar
|
127 |
-
guidance = """
|
128 |
-
NOTA IMPORTANTE: Se ha proporcionado información del producto y contenido adicional, pero no hay detalles del público objetivo.
|
129 |
-
Analiza ambas fuentes para:
|
130 |
-
- Inferir el público objetivo probable del contexto
|
131 |
-
- Identificar cómo el producto aborda las necesidades mencionadas en el contenido subido
|
132 |
-
- Crear beneficios que destaquen cómo el producto resuelve problemas específicos mencionados en el contenido
|
133 |
-
- Enfocarte en resultados medibles que el producto puede proporcionar según el contexto
|
134 |
-
"""
|
135 |
-
elif avatar_description and product_name and uploaded_content:
|
136 |
-
# All information provided
|
137 |
-
guidance = """
|
138 |
-
NOTA IMPORTANTE: Se ha proporcionado información completa sobre el público objetivo, producto y contenido adicional.
|
139 |
-
Utiliza todas las fuentes para:
|
140 |
-
- Crear beneficios ultra-específicos que conecten perfectamente el producto con las necesidades del avatar
|
141 |
-
- Extraer detalles concretos del contenido subido para hacer los beneficios más relevantes y personalizados
|
142 |
-
- Abordar objeciones específicas mencionadas en cualquiera de las fuentes
|
143 |
-
- Crear beneficios que destaquen exactamente cómo este producto resuelve los problemas concretos de este avatar
|
144 |
-
"""
|
145 |
-
|
146 |
-
# Add information about available inputs
|
147 |
-
input_information = f"""
|
148 |
-
|
149 |
-
AVAILABLE INFORMATION FOR ANALYSIS:
|
150 |
-
|
151 |
-
1. TARGET AUDIENCE DESCRIPTION:
|
152 |
-
{avatar_description if avatar_description else "No specific avatar description provided."}
|
153 |
-
|
154 |
-
2. PRODUCT/SERVICE NAME:
|
155 |
-
{product_name if product_name else "No specific product name provided."}
|
156 |
-
|
157 |
-
3. UPLOADED CONTENT:
|
158 |
-
{uploaded_content if uploaded_content else "No additional content uploaded."}
|
159 |
-
|
160 |
-
{guidance}
|
161 |
-
|
162 |
-
IMPORTANT: Analyze ALL available information above to create bullets that specifically address the needs, desires, and objections of this audience for this specific product/service.
|
163 |
-
"""
|
164 |
-
|
165 |
-
# Rest of the function remains the same...
|
166 |
-
# Multiple formula instructions (unchanged)
|
167 |
-
formula_instructions = """
|
168 |
-
IMPORTANT: Choose ONE of the following bullet formulas at random and use it consistently for ALL 5 bullets:
|
169 |
-
|
170 |
-
FORMULA 1 - STANDARD BENEFIT:
|
171 |
-
- Must be relevant to a specific segment of your target audience
|
172 |
-
- Must show a specific result with exact numbers or percentages
|
173 |
-
- Must include a precise emotional element tied to a specific desire
|
174 |
-
- Must eliminate a specific objection with evidence
|
175 |
-
- Must inspire immediate action with a clear next step
|
176 |
-
|
177 |
-
EXAMPLE FORMAT FOR FORMULA 1:
|
178 |
-
•Transforma tu estrategia de email marketing con plantillas que aumentan la tasa de apertura un 37% en 14 días, incluso si nunca has escrito una campaña exitosa.
|
179 |
-
|
180 |
-
FORMULA 2 - 3 EN 1 (FEATURE + BENEFIT + MEANING):
|
181 |
-
Formula: [Feature + Benefit + Meaning]
|
182 |
-
|
183 |
-
This formula creates an instant connection by linking three key elements:
|
184 |
-
1. Feature: A specific, tangible characteristic of your offer
|
185 |
-
2. Benefit: The exact, measurable result it delivers
|
186 |
-
3. Meaning: The precise transformation in their life
|
187 |
-
|
188 |
-
Instructions for Creating Connection Bullets:
|
189 |
-
1. Identify Your Core Feature:
|
190 |
-
- What specific component makes your offer unique?
|
191 |
-
- What exact characteristic can be measured?
|
192 |
-
- What concrete element can they use immediately?
|
193 |
-
|
194 |
-
2. Transform into Benefits:
|
195 |
-
- What specific metric will improve?
|
196 |
-
- What exact problem will it solve?
|
197 |
-
- What measurable outcome will they achieve?
|
198 |
-
|
199 |
-
3. Add Deeper Meaning:
|
200 |
-
- How exactly will it transform their specific situation?
|
201 |
-
- What precise emotional impact will they experience?
|
202 |
-
- What concrete identity shift will occur?
|
203 |
-
|
204 |
-
Structure Formats:
|
205 |
-
1. "[Specific Feature] para que puedas [Measurable Benefit] con lo que [Concrete Meaning]"
|
206 |
-
2. "Con [Specific Feature] podrás [Measurable Benefit] permitiéndote [Concrete Meaning]"
|
207 |
-
3. "Gracias a [Specific Feature] lograrás [Measurable Benefit] haciendo que [Concrete Meaning]"
|
208 |
-
4. "Mediante [Specific Feature] conseguirás [Measurable Benefit] lo que significa [Concrete Meaning]"
|
209 |
-
5. "Usando [Specific Feature] alcanzarás [Measurable Benefit] transformando [Concrete Meaning]"
|
210 |
-
|
211 |
-
EXAMPLES FOR FORMULA 2:
|
212 |
-
• El Sistema de inmersión bilingüe de 21 días para que puedas mantener conversaciones de 15 minutos en inglés con lo que por fin dejarás de depender de traductores en tus reuniones internacionales.
|
213 |
-
|
214 |
-
• Con nuestro algoritmo de enfoque profundo de 3 pasos podrás completar proyectos en 4 horas en lugar de 8 permitiéndote disfrutar 20 horas adicionales semanales con tu familia.
|
215 |
-
|
216 |
-
• Gracias a nuestra tecnología de reprogramación mental de 28 días lograrás superar el miedo a hablar en público haciendo que te sientas seguro al presentar ante audiencias de hasta 500 personas.
|
217 |
-
|
218 |
-
• Mediante nuestro framework de creatividad de 5 fases conseguirás generar 10 ideas innovadoras por sesión lo que significa que nunca más perderás oportunidades de negocio por falta de propuestas.
|
219 |
-
|
220 |
-
• Usando nuestro sistema de automatización de tareas alcanzarás una reducción del 68% en tiempo administrativo transformando 15 horas semanales de trabajo tedioso en tiempo productivo para hacer crecer tu negocio.
|
221 |
-
|
222 |
-
FORMULA 3 - ANTI-PROCRASTINACIÓN (ACTION + RESULT + TIME):
|
223 |
-
Formula: [Action + Result + Time]
|
224 |
-
|
225 |
-
This formula uses a clear action followed by a direct result and the time in which that result will be achieved. You can modify the order of elements as needed.
|
226 |
-
|
227 |
-
Instructions:
|
228 |
-
1. Establish the clear action that the user must take (specific action with details)
|
229 |
-
2. Define the exact result with numbers/percentages that the user will obtain
|
230 |
-
3. Indicate the precise time period with exact days/weeks/months
|
231 |
-
|
232 |
-
Response Format (choose one for each bullet):
|
233 |
-
1. Action + Result + Time
|
234 |
-
2. Action + Time + Result
|
235 |
-
3. Result + Action + Time
|
236 |
-
4. Result + Time + Action
|
237 |
-
5. Time + Action + Result
|
238 |
-
6. Time + Result + Action
|
239 |
-
7. Result + Time + Action
|
240 |
-
|
241 |
-
EXAMPLES FOR FORMULA 3:
|
242 |
-
• Implementa nuestra estrategia de email marketing y aumenta tus ventas un 27% en los próximos 30 días, incluso si tu lista tiene menos de 500 suscriptores.
|
243 |
-
|
244 |
-
• Aplica las 3 técnicas de copywriting en tus próximos 5 posts y en 14 días verás un incremento del 42% en engagement, eliminando por completo los comentarios negativos.
|
245 |
-
|
246 |
-
• Tu tasa de conversión aumentará del 2% al 5.7% cuando implementes nuestro sistema de embudos en los próximos 21 días, sin necesidad de aumentar tu presupuesto publicitario.
|
247 |
-
|
248 |
-
• En 28 días exactos dominarás las 7 habilidades fundamentales de negociación aplicando nuestro método paso a paso, incluso si actualmente cedes en cada discusión.
|
249 |
-
|
250 |
-
• 8 semanas es todo lo que necesitas para transformar tu cuerpo con nuestro programa de 15 minutos diarios, reduciendo hasta 8 kg de grasa y aumentando tu energía un 65% desde la primera semana.
|
251 |
-
|
252 |
-
FORMULA 4 - NÚMERICA SUPREMA:
|
253 |
-
La Fórmula Suprema de Istvanova combina 5 elementos clave más artículos plurales para crear bullets persuasivos e interesantes:
|
254 |
-
|
255 |
-
1. Artículos Plurales (Art):
|
256 |
-
- Los (para masculino plural)
|
257 |
-
- Las (para femenino plural)
|
258 |
-
- Dan naturalidad y autoridad al texto
|
259 |
-
|
260 |
-
2. Números (N):
|
261 |
-
- Específicos y creíbles (3, 5, 7, 10...)
|
262 |
-
- Crean estructura y expectativas claras
|
263 |
-
- Se combinan con artículos: "Los 5...", "Las 3..."
|
264 |
-
|
265 |
-
3. Adjetivo (A):
|
266 |
-
- Emocionales y descriptivos
|
267 |
-
- Conectan con deseos/miedos específicos
|
268 |
-
- Ejemplos: comprobados, científicos, revolucionarios
|
269 |
-
|
270 |
-
4. Palabra Clave (P):
|
271 |
-
- Término central del beneficio en plural
|
272 |
-
- Fácil de entender y recordar
|
273 |
-
- Ejemplos: métodos, estrategias, técnicas, secretos
|
274 |
-
|
275 |
-
5. Razón (R):
|
276 |
-
- Justifica el beneficio con datos concretos
|
277 |
-
- Añade credibilidad con evidencia específica
|
278 |
-
- Conecta con la motivación específica del lector
|
279 |
-
|
280 |
-
6. Promesa (P):
|
281 |
-
- Resultado específico y medible con números
|
282 |
-
- Timeframe realista con días/semanas exactas
|
283 |
-
- Beneficio final atractivo y verificable
|
284 |
-
|
285 |
-
EXAMPLES FOR FORMULA 4:
|
286 |
-
• Los 3 rituales científicamente probados para reducir tu estrés un 47% en 14 días, validados por la Universidad de Stanford.
|
287 |
-
|
288 |
-
• Las 5 rutinas efectivas para fortalecer tu core en solo 12 minutos diarios, eliminando el dolor lumbar en el 89% de los casos.
|
289 |
-
|
290 |
-
• Los 7 hábitos esenciales para aumentar tu productividad un 63%, permitiéndote completar en 4 horas lo que antes hacías en 8.
|
291 |
-
|
292 |
-
• Las 3 técnicas comprobadas para dormir 7 horas ininterrumpidas basadas en neurociencia, que han ayudado a 1,243 personas con insomnio crónico.
|
293 |
-
|
294 |
-
• Los 5 movimientos efectivos para fortalecer tu core sin equipamiento, que activan un 78% más de fibras musculares que los ejercicios tradicionales.
|
295 |
-
|
296 |
-
FORMULA 5 - EL TRIÁNGULO DE ORO:
|
297 |
-
Formula: [Benefit 1 + Benefit 2 + Great Promise]
|
298 |
-
|
299 |
-
This formula creates high-impact bullets by combining three key benefits persuasively:
|
300 |
-
1. Benefit 1: The first benefit that addresses an immediate client need
|
301 |
-
2. Benefit 2: An additional benefit that generates more value
|
302 |
-
3. Great Promise: The main or most impactful promise that closes the proposal
|
303 |
-
|
304 |
-
Instructions for Creating Powerful Bullets:
|
305 |
-
1. Identify Your Audience's Great Dream:
|
306 |
-
- What's their ultimate aspiration?
|
307 |
-
- What keeps them awake at night?
|
308 |
-
- What's their ideal scenario?
|
309 |
-
- What transformation do they deeply desire?
|
310 |
-
|
311 |
-
2. Structure Your Benefits:
|
312 |
-
- Write in a natural, conversational tone (like talking to a friend)
|
313 |
-
- Flow elements together without forced pauses or commas
|
314 |
-
- Make transitions smooth and invisible
|
315 |
-
- Keep the rhythm flowing from start to finish
|
316 |
-
|
317 |
-
3. Craft Your Benefits:
|
318 |
-
- Benefit 1: Hook them with their biggest pain point using casual language
|
319 |
-
- Benefit 2: Build momentum with an exciting complementary gain
|
320 |
-
- Great Promise: Deliver the knockout punch that makes them say "I need this!"
|
321 |
-
|
322 |
-
4. Tips for Maximum Impact:
|
323 |
-
- Write like you speak (but better)
|
324 |
-
- Avoid formal language or stiff transitions
|
325 |
-
- Make each element flow naturally into the next
|
326 |
-
- Create a rhythm that pulls the reader through
|
327 |
-
- Use conversational connectors instead of commas
|
328 |
-
- Read it aloud - if you stumble, rewrite it
|
329 |
-
- Make it so engaging they can't stop reading
|
330 |
-
- Keep the energy high from start to finish
|
331 |
-
|
332 |
-
Structure Formats:
|
333 |
-
1. "[benefit 1] [benefit 2] [great promise]"
|
334 |
-
2. "[benefit 2] [benefit 1] [great promise]"
|
335 |
-
3. "[great promise] [benefit 2] [benefit 1]"
|
336 |
-
4. "[great promise] [benefit 1] [benefit 2]"
|
337 |
-
5. "[benefit 1] [benefit 2] [great promise]"
|
338 |
-
6. "[benefit 1] + question + [benefit 2] + [great promise]"
|
339 |
-
7. "question + [benefit 1] + [benefit 2] + [great promise]"
|
340 |
-
8. "[benefit 1] + while + [benefit 2] + and also + [great promise]"
|
341 |
-
9. "Not only + [benefit 1] + but also + [benefit 2] + and best of all + [great promise]"
|
342 |
-
10. "Imagine + [benefit 1] + at the same time as + [benefit 2] + and finally + [great promise]"
|
343 |
-
11. "From + [benefit 1] + going through + [benefit 2] + until + [great promise]"
|
344 |
-
12. "First + [benefit 1] + then + [benefit 2] + and at the end + [great promise]"
|
345 |
-
13. "Start with + [benefit 1] + transform with + [benefit 2] + culminate with + [great promise]"
|
346 |
-
14. "Tired of the opposite of [benefit 1]? + Discover + [benefit 2] + and achieve + [great promise]"
|
347 |
-
15. "Finally + [benefit 1] + plus + [benefit 2] + and as a bonus + [great promise]"
|
348 |
-
|
349 |
-
EXAMPLES FOR FORMULA 5:
|
350 |
-
• Reduce tu estrés laboral en un 42% mientras aumentas tu productividad un 37% y transforma tu carrera profesional con nuestro sistema de gestión del tiempo basado en neurociencia aplicada.
|
351 |
-
|
352 |
-
• Domina 5 idiomas extranjeros mientras duermes 8 horas ininterrumpidas y activa el 89% de tu potencial cerebral con nuestro revolucionario programa de aprendizaje durante el sueño profundo.
|
353 |
-
|
354 |
-
• No solo eliminarás el dolor de espalda crónico en 14 días sino que también fortalecerás tu core un 78% y lo mejor de todo es que recuperarás la capacidad de disfrutar actividades que creías imposibles.
|
355 |
-
|
356 |
-
• ¿Cansado de perder tiempo en reuniones improductivas? Descubre cómo reducir tu jornada laboral 3 horas diarias y consigue resultados un 65% superiores con nuestro framework de productividad cuántica.
|
357 |
-
|
358 |
-
• Imagina generar 10 ideas innovadoras por día al mismo tiempo que reduces tu estrés un 47% y finalmente te conviertes en el referente creativo de tu industria con nuestro método de pensamiento lateral estructurado.
|
359 |
-
|
360 |
-
Remember to choose just ONE formula and apply it consistently to all 5 bullets.
|
361 |
-
"""
|
362 |
-
|
363 |
-
# Combine base instruction with formula instructions
|
364 |
-
complete_instruction = base_instruction + input_information + formula_instructions
|
365 |
-
|
366 |
-
return complete_instruction
|
367 |
-
|
368 |
-
|
369 |
-
def get_random_bullet_formula():
|
370 |
-
"""
|
371 |
-
Randomly selects a bullet formula type to ensure variety in generated bullets.
|
372 |
-
Extracts formula names automatically from the instruction text.
|
373 |
-
|
374 |
-
Returns:
|
375 |
-
str: The name of the randomly selected formula
|
376 |
-
"""
|
377 |
-
# Get the full instruction text
|
378 |
-
full_instruction = create_bullet_instruction()
|
379 |
-
|
380 |
-
# Extract formula names using regex pattern matching
|
381 |
-
import re
|
382 |
-
|
383 |
-
# Pattern to find formula names (looks for "FORMULA X - NAME:")
|
384 |
-
formula_pattern = r"FORMULA\s+\d+\s+-\s+([^:]+):"
|
385 |
-
|
386 |
-
# Find all matches in the instruction text
|
387 |
-
formula_matches = re.findall(formula_pattern, full_instruction)
|
388 |
-
|
389 |
-
# If no formulas found, fallback to manual list
|
390 |
-
if not formula_matches:
|
391 |
-
formulas = [
|
392 |
-
"STANDARD BENEFIT",
|
393 |
-
"3 EN 1 (FEATURE + BENEFIT + MEANING)",
|
394 |
-
"ANTI-PROCRASTINACIÓN (ACTION + RESULT + TIME)",
|
395 |
-
"NÚMERICA SUPREMA",
|
396 |
-
"EL TRIÁNGULO DE ORO"
|
397 |
-
]
|
398 |
-
else:
|
399 |
-
formulas = formula_matches
|
400 |
-
|
401 |
-
# Select a random formula
|
402 |
-
selected_formula = random.choice(formulas)
|
403 |
-
|
404 |
-
return selected_formula
|
405 |
-
|
406 |
-
|
407 |
-
def create_bullet_instruction_with_formula(avatar_description=None, product_name=None, uploaded_content=None):
|
408 |
-
"""
|
409 |
-
Creates the instruction for generating benefit bullets with a specific
|
410 |
-
randomly selected formula to ensure consistency.
|
411 |
-
|
412 |
-
Args:
|
413 |
-
avatar_description: Description of the target audience
|
414 |
-
product_name: Name of the product or service
|
415 |
-
uploaded_content: Content from uploaded files (if any)
|
416 |
-
|
417 |
-
Returns:
|
418 |
-
str: The complete instruction for generating bullets with the selected formula
|
419 |
-
"""
|
420 |
-
# Check if any information is provided
|
421 |
-
if not avatar_description and not product_name and not uploaded_content:
|
422 |
-
return """
|
423 |
-
ADVERTENCIA: No se ha proporcionado ninguna información para generar los bullets.
|
424 |
-
|
425 |
-
Para obtener bullets más efectivos y personalizados, por favor proporciona al menos uno de los siguientes:
|
426 |
-
- Descripción del público objetivo (avatar)
|
427 |
-
- Nombre del producto o servicio
|
428 |
-
- Contenido adicional relevante
|
429 |
-
|
430 |
-
Sin esta información, los bullets generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
|
431 |
-
"""
|
432 |
-
|
433 |
-
# Get base instruction
|
434 |
-
base_instruction = create_bullet_instruction(
|
435 |
-
avatar_description=avatar_description,
|
436 |
-
product_name=product_name,
|
437 |
-
uploaded_content=uploaded_content
|
438 |
-
)
|
439 |
-
|
440 |
-
# Get a random formula
|
441 |
-
selected_formula = get_random_bullet_formula()
|
442 |
-
|
443 |
-
# Add specific instruction to use the selected formula
|
444 |
-
formula_directive = f"""
|
445 |
-
|
446 |
-
IMPORTANT OVERRIDE: For this specific task, you MUST use FORMULA {selected_formula}
|
447 |
-
for ALL 5 bullets. Do not choose randomly - you must use this exact formula consistently.
|
448 |
-
"""
|
449 |
-
|
450 |
-
# Combine instructions
|
451 |
-
complete_instruction = base_instruction + formula_directive
|
452 |
-
|
453 |
return complete_instruction
|
|
|
1 |
+
import random
|
2 |
+
|
3 |
+
def create_bullet_instruction(avatar_description=None, product_name=None, uploaded_content=None):
|
4 |
+
"""
|
5 |
+
Creates the instruction for generating benefit bullets.
|
6 |
+
The model will randomly choose between different bullet formulas.
|
7 |
+
|
8 |
+
Args:
|
9 |
+
avatar_description: Description of the target audience
|
10 |
+
product_name: Name of the product or service
|
11 |
+
uploaded_content: Content from uploaded files (if any)
|
12 |
+
|
13 |
+
Returns:
|
14 |
+
str: The complete instruction for generating bullets
|
15 |
+
"""
|
16 |
+
# Base instruction that applies to all formulas
|
17 |
+
base_instruction = """
|
18 |
+
IMPORTANT: After creating the main offer, add a section with 5 powerful benefit bullets that reinforce the promise.
|
19 |
+
|
20 |
+
Start the bullets section with an introduction like:
|
21 |
+
"Además, al aprovechar esta oferta también obtendrás:" or "Y eso no es todo, también disfrutarás de estos beneficios adicionales:" or "Con esta solución también conseguirás:"
|
22 |
+
|
23 |
+
For the benefit bullets section:
|
24 |
+
|
25 |
+
You are a world-class expert copywriter, experienced in creating benefits that emotionally connect and address the desires, problems, and motivations of the target audience.
|
26 |
+
|
27 |
+
OBJECTIVE:
|
28 |
+
- Generate 5 convincing and specific benefit bullets in Spanish
|
29 |
+
- Connect emotionally with the audience
|
30 |
+
- Address real desires, problems, and motivations
|
31 |
+
- Maintain natural and conversational language
|
32 |
+
- Orient each benefit towards action
|
33 |
+
|
34 |
+
FORMAT RULES:
|
35 |
+
- Each benefit must start with "• "
|
36 |
+
- One benefit per line
|
37 |
+
- No explanations or categories
|
38 |
+
- Add a line break between each benefit
|
39 |
+
- Never include : symbols in bullets
|
40 |
+
- Never use exclamation marks (!) in any bullet
|
41 |
+
- Each benefit must be a complete and concise phrase
|
42 |
+
- Do not use any emojis in the bullets
|
43 |
+
- Use natural, conversational language (avoid formal or technical jargon)
|
44 |
+
|
45 |
+
IMPORTANT:
|
46 |
+
- Each benefit must be ultra-specific with concrete, measurable outcomes
|
47 |
+
- NEVER use generic phrases like "mejorar tu vida" or "aumentar tu productividad"
|
48 |
+
- Always include specific numbers, percentages, or exact timeframes
|
49 |
+
- Each bullet must solve a very specific problem with a detailed solution
|
50 |
+
- Include at least one bullet that directly counters a common objection with evidence
|
51 |
+
- Each bullet should contain a clear call to action with a specific next step
|
52 |
+
- Avoid all generalizations - be precise about exactly what the user will get
|
53 |
+
- Maintain a persuasive but honest tone with verifiable claims
|
54 |
+
- Focus on tangible and measurable results that can be verified
|
55 |
+
- Ensure each bullet addresses a different aspect of the offer
|
56 |
+
- Write in a natural, conversational tone as if speaking directly to the reader
|
57 |
+
- Never use exclamation marks in the bullets
|
58 |
+
"""
|
59 |
+
|
60 |
+
# Add guidance based on available information
|
61 |
+
guidance = ""
|
62 |
+
|
63 |
+
# Check different combinations of available information
|
64 |
+
if not avatar_description and not product_name and not uploaded_content:
|
65 |
+
return """
|
66 |
+
ADVERTENCIA: No se ha proporcionado ninguna información para generar los bullets.
|
67 |
+
|
68 |
+
Para obtener bullets más efectivos y personalizados, por favor proporciona al menos uno de los siguientes:
|
69 |
+
- Descripción del público objetivo (avatar)
|
70 |
+
- Nombre del producto o servicio
|
71 |
+
- Contenido adicional relevante
|
72 |
+
|
73 |
+
Sin esta información, los bullets generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
|
74 |
+
"""
|
75 |
+
elif not avatar_description and not product_name and uploaded_content:
|
76 |
+
# Only uploaded content provided
|
77 |
+
guidance = """
|
78 |
+
NOTA IMPORTANTE: Solo se ha proporcionado contenido adicional sin detalles específicos del público objetivo o producto.
|
79 |
+
Analiza cuidadosamente el contenido subido para:
|
80 |
+
- Identificar el público objetivo probable a partir del contexto
|
81 |
+
- Determinar el producto/servicio que probablemente se está ofreciendo
|
82 |
+
- Extraer puntos de dolor, objeciones y necesidades mencionadas en el contenido
|
83 |
+
- Crear beneficios que aborden específicamente los problemas identificados en el contenido
|
84 |
+
"""
|
85 |
+
elif avatar_description and not product_name and not uploaded_content:
|
86 |
+
# Only avatar description provided
|
87 |
+
guidance = """
|
88 |
+
NOTA IMPORTANTE: Solo se ha proporcionado información del público objetivo, sin detalles del producto ni contenido adicional.
|
89 |
+
Enfócate en crear beneficios que:
|
90 |
+
- Aborden los puntos de dolor específicos mencionados en la descripción del avatar
|
91 |
+
- Resuelvan las objeciones comunes que este público suele tener
|
92 |
+
- Proporcionen soluciones a los problemas específicos de este público
|
93 |
+
- Conecten emocionalmente con las motivaciones de este avatar
|
94 |
+
"""
|
95 |
+
elif product_name and not avatar_description and not uploaded_content:
|
96 |
+
# Only product name provided
|
97 |
+
guidance = """
|
98 |
+
NOTA IMPORTANTE: Solo se ha proporcionado información del producto, sin detalles del público objetivo ni contenido adicional.
|
99 |
+
Enfócate en crear beneficios que:
|
100 |
+
- Destaquen las características únicas de este producto específico
|
101 |
+
- Aborden objeciones comunes relacionadas con este tipo de producto
|
102 |
+
- Muestren resultados medibles que este producto puede proporcionar
|
103 |
+
- Diferencien este producto de alternativas genéricas
|
104 |
+
"""
|
105 |
+
elif avatar_description and product_name and not uploaded_content:
|
106 |
+
# Avatar and product provided, no uploaded content
|
107 |
+
guidance = """
|
108 |
+
NOTA IMPORTANTE: Se ha proporcionado información tanto del público objetivo como del producto, pero no hay contenido adicional.
|
109 |
+
Crea beneficios altamente dirigidos que:
|
110 |
+
- Conecten las características específicas del producto con las necesidades del avatar
|
111 |
+
- Aborden las objeciones más probables que este público tendría sobre este producto
|
112 |
+
- Muestren cómo este producto específico resuelve los problemas concretos de este avatar
|
113 |
+
- Destaquen los resultados medibles que este público específico obtendrá con este producto
|
114 |
+
"""
|
115 |
+
elif avatar_description and uploaded_content and not product_name:
|
116 |
+
# Avatar and uploaded content provided, no product
|
117 |
+
guidance = """
|
118 |
+
NOTA IMPORTANTE: Se ha proporcionado información del público objetivo y contenido adicional, pero no hay detalles específicos del producto.
|
119 |
+
Analiza ambas fuentes para:
|
120 |
+
- Inferir el producto/servicio probable del contexto
|
121 |
+
- Identificar puntos de dolor específicos mencionados tanto en la descripción del avatar como en el contenido subido
|
122 |
+
- Crear beneficios que aborden las necesidades y objeciones más prominentes
|
123 |
+
- Asegurar que los beneficios sean relevantes tanto para el avatar como para el contexto del contenido
|
124 |
+
"""
|
125 |
+
elif product_name and uploaded_content and not avatar_description:
|
126 |
+
# Product and uploaded content provided, no avatar
|
127 |
+
guidance = """
|
128 |
+
NOTA IMPORTANTE: Se ha proporcionado información del producto y contenido adicional, pero no hay detalles del público objetivo.
|
129 |
+
Analiza ambas fuentes para:
|
130 |
+
- Inferir el público objetivo probable del contexto
|
131 |
+
- Identificar cómo el producto aborda las necesidades mencionadas en el contenido subido
|
132 |
+
- Crear beneficios que destaquen cómo el producto resuelve problemas específicos mencionados en el contenido
|
133 |
+
- Enfocarte en resultados medibles que el producto puede proporcionar según el contexto
|
134 |
+
"""
|
135 |
+
elif avatar_description and product_name and uploaded_content:
|
136 |
+
# All information provided
|
137 |
+
guidance = """
|
138 |
+
NOTA IMPORTANTE: Se ha proporcionado información completa sobre el público objetivo, producto y contenido adicional.
|
139 |
+
Utiliza todas las fuentes para:
|
140 |
+
- Crear beneficios ultra-específicos que conecten perfectamente el producto con las necesidades del avatar
|
141 |
+
- Extraer detalles concretos del contenido subido para hacer los beneficios más relevantes y personalizados
|
142 |
+
- Abordar objeciones específicas mencionadas en cualquiera de las fuentes
|
143 |
+
- Crear beneficios que destaquen exactamente cómo este producto resuelve los problemas concretos de este avatar
|
144 |
+
"""
|
145 |
+
|
146 |
+
# Add information about available inputs
|
147 |
+
input_information = f"""
|
148 |
+
|
149 |
+
AVAILABLE INFORMATION FOR ANALYSIS:
|
150 |
+
|
151 |
+
1. TARGET AUDIENCE DESCRIPTION:
|
152 |
+
{avatar_description if avatar_description else "No specific avatar description provided."}
|
153 |
+
|
154 |
+
2. PRODUCT/SERVICE NAME:
|
155 |
+
{product_name if product_name else "No specific product name provided."}
|
156 |
+
|
157 |
+
3. UPLOADED CONTENT:
|
158 |
+
{uploaded_content if uploaded_content else "No additional content uploaded."}
|
159 |
+
|
160 |
+
{guidance}
|
161 |
+
|
162 |
+
IMPORTANT: Analyze ALL available information above to create bullets that specifically address the needs, desires, and objections of this audience for this specific product/service.
|
163 |
+
"""
|
164 |
+
|
165 |
+
# Rest of the function remains the same...
|
166 |
+
# Multiple formula instructions (unchanged)
|
167 |
+
formula_instructions = """
|
168 |
+
IMPORTANT: Choose ONE of the following bullet formulas at random and use it consistently for ALL 5 bullets:
|
169 |
+
|
170 |
+
FORMULA 1 - STANDARD BENEFIT:
|
171 |
+
- Must be relevant to a specific segment of your target audience
|
172 |
+
- Must show a specific result with exact numbers or percentages
|
173 |
+
- Must include a precise emotional element tied to a specific desire
|
174 |
+
- Must eliminate a specific objection with evidence
|
175 |
+
- Must inspire immediate action with a clear next step
|
176 |
+
|
177 |
+
EXAMPLE FORMAT FOR FORMULA 1:
|
178 |
+
•Transforma tu estrategia de email marketing con plantillas que aumentan la tasa de apertura un 37% en 14 días, incluso si nunca has escrito una campaña exitosa.
|
179 |
+
|
180 |
+
FORMULA 2 - 3 EN 1 (FEATURE + BENEFIT + MEANING):
|
181 |
+
Formula: [Feature + Benefit + Meaning]
|
182 |
+
|
183 |
+
This formula creates an instant connection by linking three key elements:
|
184 |
+
1. Feature: A specific, tangible characteristic of your offer
|
185 |
+
2. Benefit: The exact, measurable result it delivers
|
186 |
+
3. Meaning: The precise transformation in their life
|
187 |
+
|
188 |
+
Instructions for Creating Connection Bullets:
|
189 |
+
1. Identify Your Core Feature:
|
190 |
+
- What specific component makes your offer unique?
|
191 |
+
- What exact characteristic can be measured?
|
192 |
+
- What concrete element can they use immediately?
|
193 |
+
|
194 |
+
2. Transform into Benefits:
|
195 |
+
- What specific metric will improve?
|
196 |
+
- What exact problem will it solve?
|
197 |
+
- What measurable outcome will they achieve?
|
198 |
+
|
199 |
+
3. Add Deeper Meaning:
|
200 |
+
- How exactly will it transform their specific situation?
|
201 |
+
- What precise emotional impact will they experience?
|
202 |
+
- What concrete identity shift will occur?
|
203 |
+
|
204 |
+
Structure Formats:
|
205 |
+
1. "[Specific Feature] para que puedas [Measurable Benefit] con lo que [Concrete Meaning]"
|
206 |
+
2. "Con [Specific Feature] podrás [Measurable Benefit] permitiéndote [Concrete Meaning]"
|
207 |
+
3. "Gracias a [Specific Feature] lograrás [Measurable Benefit] haciendo que [Concrete Meaning]"
|
208 |
+
4. "Mediante [Specific Feature] conseguirás [Measurable Benefit] lo que significa [Concrete Meaning]"
|
209 |
+
5. "Usando [Specific Feature] alcanzarás [Measurable Benefit] transformando [Concrete Meaning]"
|
210 |
+
|
211 |
+
EXAMPLES FOR FORMULA 2:
|
212 |
+
• El Sistema de inmersión bilingüe de 21 días para que puedas mantener conversaciones de 15 minutos en inglés con lo que por fin dejarás de depender de traductores en tus reuniones internacionales.
|
213 |
+
|
214 |
+
• Con nuestro algoritmo de enfoque profundo de 3 pasos podrás completar proyectos en 4 horas en lugar de 8 permitiéndote disfrutar 20 horas adicionales semanales con tu familia.
|
215 |
+
|
216 |
+
• Gracias a nuestra tecnología de reprogramación mental de 28 días lograrás superar el miedo a hablar en público haciendo que te sientas seguro al presentar ante audiencias de hasta 500 personas.
|
217 |
+
|
218 |
+
• Mediante nuestro framework de creatividad de 5 fases conseguirás generar 10 ideas innovadoras por sesión lo que significa que nunca más perderás oportunidades de negocio por falta de propuestas.
|
219 |
+
|
220 |
+
• Usando nuestro sistema de automatización de tareas alcanzarás una reducción del 68% en tiempo administrativo transformando 15 horas semanales de trabajo tedioso en tiempo productivo para hacer crecer tu negocio.
|
221 |
+
|
222 |
+
FORMULA 3 - ANTI-PROCRASTINACIÓN (ACTION + RESULT + TIME):
|
223 |
+
Formula: [Action + Result + Time]
|
224 |
+
|
225 |
+
This formula uses a clear action followed by a direct result and the time in which that result will be achieved. You can modify the order of elements as needed.
|
226 |
+
|
227 |
+
Instructions:
|
228 |
+
1. Establish the clear action that the user must take (specific action with details)
|
229 |
+
2. Define the exact result with numbers/percentages that the user will obtain
|
230 |
+
3. Indicate the precise time period with exact days/weeks/months
|
231 |
+
|
232 |
+
Response Format (choose one for each bullet):
|
233 |
+
1. Action + Result + Time
|
234 |
+
2. Action + Time + Result
|
235 |
+
3. Result + Action + Time
|
236 |
+
4. Result + Time + Action
|
237 |
+
5. Time + Action + Result
|
238 |
+
6. Time + Result + Action
|
239 |
+
7. Result + Time + Action
|
240 |
+
|
241 |
+
EXAMPLES FOR FORMULA 3:
|
242 |
+
• Implementa nuestra estrategia de email marketing y aumenta tus ventas un 27% en los próximos 30 días, incluso si tu lista tiene menos de 500 suscriptores.
|
243 |
+
|
244 |
+
• Aplica las 3 técnicas de copywriting en tus próximos 5 posts y en 14 días verás un incremento del 42% en engagement, eliminando por completo los comentarios negativos.
|
245 |
+
|
246 |
+
• Tu tasa de conversión aumentará del 2% al 5.7% cuando implementes nuestro sistema de embudos en los próximos 21 días, sin necesidad de aumentar tu presupuesto publicitario.
|
247 |
+
|
248 |
+
• En 28 días exactos dominarás las 7 habilidades fundamentales de negociación aplicando nuestro método paso a paso, incluso si actualmente cedes en cada discusión.
|
249 |
+
|
250 |
+
• 8 semanas es todo lo que necesitas para transformar tu cuerpo con nuestro programa de 15 minutos diarios, reduciendo hasta 8 kg de grasa y aumentando tu energía un 65% desde la primera semana.
|
251 |
+
|
252 |
+
FORMULA 4 - NÚMERICA SUPREMA:
|
253 |
+
La Fórmula Suprema de Istvanova combina 5 elementos clave más artículos plurales para crear bullets persuasivos e interesantes:
|
254 |
+
|
255 |
+
1. Artículos Plurales (Art):
|
256 |
+
- Los (para masculino plural)
|
257 |
+
- Las (para femenino plural)
|
258 |
+
- Dan naturalidad y autoridad al texto
|
259 |
+
|
260 |
+
2. Números (N):
|
261 |
+
- Específicos y creíbles (3, 5, 7, 10...)
|
262 |
+
- Crean estructura y expectativas claras
|
263 |
+
- Se combinan con artículos: "Los 5...", "Las 3..."
|
264 |
+
|
265 |
+
3. Adjetivo (A):
|
266 |
+
- Emocionales y descriptivos
|
267 |
+
- Conectan con deseos/miedos específicos
|
268 |
+
- Ejemplos: comprobados, científicos, revolucionarios
|
269 |
+
|
270 |
+
4. Palabra Clave (P):
|
271 |
+
- Término central del beneficio en plural
|
272 |
+
- Fácil de entender y recordar
|
273 |
+
- Ejemplos: métodos, estrategias, técnicas, secretos
|
274 |
+
|
275 |
+
5. Razón (R):
|
276 |
+
- Justifica el beneficio con datos concretos
|
277 |
+
- Añade credibilidad con evidencia específica
|
278 |
+
- Conecta con la motivación específica del lector
|
279 |
+
|
280 |
+
6. Promesa (P):
|
281 |
+
- Resultado específico y medible con números
|
282 |
+
- Timeframe realista con días/semanas exactas
|
283 |
+
- Beneficio final atractivo y verificable
|
284 |
+
|
285 |
+
EXAMPLES FOR FORMULA 4:
|
286 |
+
• Los 3 rituales científicamente probados para reducir tu estrés un 47% en 14 días, validados por la Universidad de Stanford.
|
287 |
+
|
288 |
+
• Las 5 rutinas efectivas para fortalecer tu core en solo 12 minutos diarios, eliminando el dolor lumbar en el 89% de los casos.
|
289 |
+
|
290 |
+
• Los 7 hábitos esenciales para aumentar tu productividad un 63%, permitiéndote completar en 4 horas lo que antes hacías en 8.
|
291 |
+
|
292 |
+
• Las 3 técnicas comprobadas para dormir 7 horas ininterrumpidas basadas en neurociencia, que han ayudado a 1,243 personas con insomnio crónico.
|
293 |
+
|
294 |
+
• Los 5 movimientos efectivos para fortalecer tu core sin equipamiento, que activan un 78% más de fibras musculares que los ejercicios tradicionales.
|
295 |
+
|
296 |
+
FORMULA 5 - EL TRIÁNGULO DE ORO:
|
297 |
+
Formula: [Benefit 1 + Benefit 2 + Great Promise]
|
298 |
+
|
299 |
+
This formula creates high-impact bullets by combining three key benefits persuasively:
|
300 |
+
1. Benefit 1: The first benefit that addresses an immediate client need
|
301 |
+
2. Benefit 2: An additional benefit that generates more value
|
302 |
+
3. Great Promise: The main or most impactful promise that closes the proposal
|
303 |
+
|
304 |
+
Instructions for Creating Powerful Bullets:
|
305 |
+
1. Identify Your Audience's Great Dream:
|
306 |
+
- What's their ultimate aspiration?
|
307 |
+
- What keeps them awake at night?
|
308 |
+
- What's their ideal scenario?
|
309 |
+
- What transformation do they deeply desire?
|
310 |
+
|
311 |
+
2. Structure Your Benefits:
|
312 |
+
- Write in a natural, conversational tone (like talking to a friend)
|
313 |
+
- Flow elements together without forced pauses or commas
|
314 |
+
- Make transitions smooth and invisible
|
315 |
+
- Keep the rhythm flowing from start to finish
|
316 |
+
|
317 |
+
3. Craft Your Benefits:
|
318 |
+
- Benefit 1: Hook them with their biggest pain point using casual language
|
319 |
+
- Benefit 2: Build momentum with an exciting complementary gain
|
320 |
+
- Great Promise: Deliver the knockout punch that makes them say "I need this!"
|
321 |
+
|
322 |
+
4. Tips for Maximum Impact:
|
323 |
+
- Write like you speak (but better)
|
324 |
+
- Avoid formal language or stiff transitions
|
325 |
+
- Make each element flow naturally into the next
|
326 |
+
- Create a rhythm that pulls the reader through
|
327 |
+
- Use conversational connectors instead of commas
|
328 |
+
- Read it aloud - if you stumble, rewrite it
|
329 |
+
- Make it so engaging they can't stop reading
|
330 |
+
- Keep the energy high from start to finish
|
331 |
+
|
332 |
+
Structure Formats:
|
333 |
+
1. "[benefit 1] [benefit 2] [great promise]"
|
334 |
+
2. "[benefit 2] [benefit 1] [great promise]"
|
335 |
+
3. "[great promise] [benefit 2] [benefit 1]"
|
336 |
+
4. "[great promise] [benefit 1] [benefit 2]"
|
337 |
+
5. "[benefit 1] [benefit 2] [great promise]"
|
338 |
+
6. "[benefit 1] + question + [benefit 2] + [great promise]"
|
339 |
+
7. "question + [benefit 1] + [benefit 2] + [great promise]"
|
340 |
+
8. "[benefit 1] + while + [benefit 2] + and also + [great promise]"
|
341 |
+
9. "Not only + [benefit 1] + but also + [benefit 2] + and best of all + [great promise]"
|
342 |
+
10. "Imagine + [benefit 1] + at the same time as + [benefit 2] + and finally + [great promise]"
|
343 |
+
11. "From + [benefit 1] + going through + [benefit 2] + until + [great promise]"
|
344 |
+
12. "First + [benefit 1] + then + [benefit 2] + and at the end + [great promise]"
|
345 |
+
13. "Start with + [benefit 1] + transform with + [benefit 2] + culminate with + [great promise]"
|
346 |
+
14. "Tired of the opposite of [benefit 1]? + Discover + [benefit 2] + and achieve + [great promise]"
|
347 |
+
15. "Finally + [benefit 1] + plus + [benefit 2] + and as a bonus + [great promise]"
|
348 |
+
|
349 |
+
EXAMPLES FOR FORMULA 5:
|
350 |
+
• Reduce tu estrés laboral en un 42% mientras aumentas tu productividad un 37% y transforma tu carrera profesional con nuestro sistema de gestión del tiempo basado en neurociencia aplicada.
|
351 |
+
|
352 |
+
• Domina 5 idiomas extranjeros mientras duermes 8 horas ininterrumpidas y activa el 89% de tu potencial cerebral con nuestro revolucionario programa de aprendizaje durante el sueño profundo.
|
353 |
+
|
354 |
+
• No solo eliminarás el dolor de espalda crónico en 14 días sino que también fortalecerás tu core un 78% y lo mejor de todo es que recuperarás la capacidad de disfrutar actividades que creías imposibles.
|
355 |
+
|
356 |
+
• ¿Cansado de perder tiempo en reuniones improductivas? Descubre cómo reducir tu jornada laboral 3 horas diarias y consigue resultados un 65% superiores con nuestro framework de productividad cuántica.
|
357 |
+
|
358 |
+
• Imagina generar 10 ideas innovadoras por día al mismo tiempo que reduces tu estrés un 47% y finalmente te conviertes en el referente creativo de tu industria con nuestro método de pensamiento lateral estructurado.
|
359 |
+
|
360 |
+
Remember to choose just ONE formula and apply it consistently to all 5 bullets.
|
361 |
+
"""
|
362 |
+
|
363 |
+
# Combine base instruction with formula instructions
|
364 |
+
complete_instruction = base_instruction + input_information + formula_instructions
|
365 |
+
|
366 |
+
return complete_instruction
|
367 |
+
|
368 |
+
|
369 |
+
def get_random_bullet_formula():
|
370 |
+
"""
|
371 |
+
Randomly selects a bullet formula type to ensure variety in generated bullets.
|
372 |
+
Extracts formula names automatically from the instruction text.
|
373 |
+
|
374 |
+
Returns:
|
375 |
+
str: The name of the randomly selected formula
|
376 |
+
"""
|
377 |
+
# Get the full instruction text
|
378 |
+
full_instruction = create_bullet_instruction()
|
379 |
+
|
380 |
+
# Extract formula names using regex pattern matching
|
381 |
+
import re
|
382 |
+
|
383 |
+
# Pattern to find formula names (looks for "FORMULA X - NAME:")
|
384 |
+
formula_pattern = r"FORMULA\s+\d+\s+-\s+([^:]+):"
|
385 |
+
|
386 |
+
# Find all matches in the instruction text
|
387 |
+
formula_matches = re.findall(formula_pattern, full_instruction)
|
388 |
+
|
389 |
+
# If no formulas found, fallback to manual list
|
390 |
+
if not formula_matches:
|
391 |
+
formulas = [
|
392 |
+
"STANDARD BENEFIT",
|
393 |
+
"3 EN 1 (FEATURE + BENEFIT + MEANING)",
|
394 |
+
"ANTI-PROCRASTINACIÓN (ACTION + RESULT + TIME)",
|
395 |
+
"NÚMERICA SUPREMA",
|
396 |
+
"EL TRIÁNGULO DE ORO"
|
397 |
+
]
|
398 |
+
else:
|
399 |
+
formulas = formula_matches
|
400 |
+
|
401 |
+
# Select a random formula
|
402 |
+
selected_formula = random.choice(formulas)
|
403 |
+
|
404 |
+
return selected_formula
|
405 |
+
|
406 |
+
|
407 |
+
def create_bullet_instruction_with_formula(avatar_description=None, product_name=None, uploaded_content=None):
|
408 |
+
"""
|
409 |
+
Creates the instruction for generating benefit bullets with a specific
|
410 |
+
randomly selected formula to ensure consistency.
|
411 |
+
|
412 |
+
Args:
|
413 |
+
avatar_description: Description of the target audience
|
414 |
+
product_name: Name of the product or service
|
415 |
+
uploaded_content: Content from uploaded files (if any)
|
416 |
+
|
417 |
+
Returns:
|
418 |
+
str: The complete instruction for generating bullets with the selected formula
|
419 |
+
"""
|
420 |
+
# Check if any information is provided
|
421 |
+
if not avatar_description and not product_name and not uploaded_content:
|
422 |
+
return """
|
423 |
+
ADVERTENCIA: No se ha proporcionado ninguna información para generar los bullets.
|
424 |
+
|
425 |
+
Para obtener bullets más efectivos y personalizados, por favor proporciona al menos uno de los siguientes:
|
426 |
+
- Descripción del público objetivo (avatar)
|
427 |
+
- Nombre del producto o servicio
|
428 |
+
- Contenido adicional relevante
|
429 |
+
|
430 |
+
Sin esta información, los bullets generados serán genéricos y posiblemente menos efectivos para tu oferta específica.
|
431 |
+
"""
|
432 |
+
|
433 |
+
# Get base instruction
|
434 |
+
base_instruction = create_bullet_instruction(
|
435 |
+
avatar_description=avatar_description,
|
436 |
+
product_name=product_name,
|
437 |
+
uploaded_content=uploaded_content
|
438 |
+
)
|
439 |
+
|
440 |
+
# Get a random formula
|
441 |
+
selected_formula = get_random_bullet_formula()
|
442 |
+
|
443 |
+
# Add specific instruction to use the selected formula
|
444 |
+
formula_directive = f"""
|
445 |
+
|
446 |
+
IMPORTANT OVERRIDE: For this specific task, you MUST use FORMULA {selected_formula}
|
447 |
+
for ALL 5 bullets. Do not choose randomly - you must use this exact formula consistently.
|
448 |
+
"""
|
449 |
+
|
450 |
+
# Combine instructions
|
451 |
+
complete_instruction = base_instruction + formula_directive
|
452 |
+
|
453 |
return complete_instruction
|
formulas.py
CHANGED
@@ -13,62 +13,6 @@ CRITICAL OUTPUT RULES:
|
|
13 |
- Do not include phrases like "Aquí tienes una oferta convincente" or "Esta es tu oferta"
|
14 |
"""
|
15 |
|
16 |
-
def extract_product_name(product_name_input):
|
17 |
-
"""
|
18 |
-
Extracts the actual product name from user input, especially when it's enclosed in quotes.
|
19 |
-
|
20 |
-
Args:
|
21 |
-
product_name_input: The raw input string containing the product name
|
22 |
-
|
23 |
-
Returns:
|
24 |
-
str: The extracted product name, or empty string if generic
|
25 |
-
"""
|
26 |
-
import re
|
27 |
-
|
28 |
-
# If input is empty or None, return empty string
|
29 |
-
if not product_name_input or product_name_input.strip() == "":
|
30 |
-
return ""
|
31 |
-
|
32 |
-
# Check if there's a name in quotes
|
33 |
-
quote_pattern = r'"([^"]+)"'
|
34 |
-
matches = re.findall(quote_pattern, product_name_input)
|
35 |
-
|
36 |
-
if matches:
|
37 |
-
# Return the first quoted string found
|
38 |
-
return matches[0]
|
39 |
-
|
40 |
-
# If no quotes but contains "llamado" or similar phrases, extract what follows
|
41 |
-
called_patterns = [
|
42 |
-
r'llamado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)',
|
43 |
-
r'titulado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)',
|
44 |
-
r'denominado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)',
|
45 |
-
r'nombrado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)'
|
46 |
-
]
|
47 |
-
|
48 |
-
for pattern in called_patterns:
|
49 |
-
matches = re.search(pattern, product_name_input, re.IGNORECASE)
|
50 |
-
if matches:
|
51 |
-
extracted = matches.group(1).strip()
|
52 |
-
# If the extracted text has quotes, remove them
|
53 |
-
if extracted.startswith('"') and extracted.endswith('"'):
|
54 |
-
extracted = extracted[1:-1]
|
55 |
-
return extracted
|
56 |
-
|
57 |
-
# Check if the input is generic (common course/product types without specific names)
|
58 |
-
generic_patterns = [
|
59 |
-
r'^(curso|taller|programa|webinar|entrenamiento|sistema|método|servicio|producto|aplicación|comunidad|masterclass)(\s+de\s+.+)?$',
|
60 |
-
r'^(un|el|mi|nuestro)\s+(curso|taller|programa|webinar|entrenamiento|sistema|método|servicio|producto|aplicación|comunidad|masterclass)(\s+de\s+.+)?$'
|
61 |
-
]
|
62 |
-
|
63 |
-
for pattern in generic_patterns:
|
64 |
-
if re.match(pattern, product_name_input.lower(), re.IGNORECASE):
|
65 |
-
# This is a generic description, return empty string to trigger creative name generation
|
66 |
-
return ""
|
67 |
-
|
68 |
-
# If no patterns match, return the original input
|
69 |
-
return product_name_input.strip()
|
70 |
-
|
71 |
-
|
72 |
def create_offer_instruction(avatar_description, product_name, selected_formula_name):
|
73 |
"""
|
74 |
Creates instructions for generating an offer based on the selected formula.
|
@@ -81,9 +25,6 @@ def create_offer_instruction(avatar_description, product_name, selected_formula_
|
|
81 |
Returns:
|
82 |
str: Complete instruction for generating the offer
|
83 |
"""
|
84 |
-
# Extract the actual product name if it's in quotes or after "llamado"
|
85 |
-
extracted_name = extract_product_name(product_name)
|
86 |
-
|
87 |
# Get the selected formula
|
88 |
selected_formula = offer_formulas[selected_formula_name]
|
89 |
|
@@ -93,14 +34,16 @@ def create_offer_instruction(avatar_description, product_name, selected_formula_
|
|
93 |
additional_instructions = """
|
94 |
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
95 |
1. PRODUCT/SERVICE NAME HANDLING:
|
96 |
-
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
101 |
|
102 |
2. Analyze ALL available information:
|
103 |
-
- Product/service name (
|
104 |
- Target audience description (avatar_description)
|
105 |
- Content from uploaded files (if any)
|
106 |
|
@@ -111,7 +54,7 @@ SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
|
111 |
|
112 |
4. Create a comprehensive offer by combining:
|
113 |
- The appropriate type (determined in step 3)
|
114 |
-
- The
|
115 |
- A compelling dream based on avatar_description
|
116 |
- A relevant obstacle based on avatar_description
|
117 |
|
@@ -134,30 +77,23 @@ SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
|
134 |
- "Ahora puedes acceder a un..."
|
135 |
- "Tenemos para ti un..."
|
136 |
- "Disfruta de un..."
|
137 |
-
"""
|
138 |
|
139 |
elif selected_formula_name == "Oferta Dorada":
|
140 |
additional_instructions = """
|
141 |
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
142 |
-
1.
|
143 |
-
- CRITICAL: If a product name is provided in quotes or after words like "llamado", "titulado", etc.,
|
144 |
-
YOU MUST USE THAT EXACT NAME. This is non-negotiable.
|
145 |
-
- The extracted product name is: "{extracted_name}"
|
146 |
-
- If this extracted name is not empty, use it EXACTLY as provided with no modifications
|
147 |
-
- Only create a new name if the extracted name is empty or contains generic placeholders
|
148 |
-
|
149 |
-
2. ATTENTION HOOK HANDLING:
|
150 |
- Analyze the avatar_description DEEPLY to understand their specific pain points, frustrations, and desires
|
151 |
- Select a powerful attention hook that DIRECTLY connects with the avatar's current reality
|
152 |
- DO NOT use questions as hooks - use statements, statistics, or shocking revelations instead
|
153 |
- CUSTOMIZE the hook specifically for this avatar - don't use generic examples
|
154 |
- The hook MUST address the SAME problem that your promise will solve
|
155 |
|
156 |
-
|
157 |
- The attention hook, quantifiable promise, and benefit statement MUST all address the SAME problem
|
158 |
- Create a LOGICAL PROGRESSION from problem (hook) to solution (promise) to implementation (benefit)
|
159 |
|
160 |
-
|
161 |
- Is written COMPLETELY IN CAPITAL LETTERS
|
162 |
- Includes concrete numbers (money, time, results)
|
163 |
- Uses powerful action verbs (EARN, MULTIPLY, ACHIEVE, MASTER)
|
@@ -166,12 +102,12 @@ SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
|
166 |
- NEVER uses exclamation marks (!)
|
167 |
- DIRECTLY addresses the same problem mentioned in the hook
|
168 |
|
169 |
-
|
170 |
- Clearly explains the result they will obtain
|
171 |
- Includes an authority element (proven method, studies, experience)
|
172 |
- Establishes a realistic timeframe or effort needed
|
173 |
- CONTINUES the same theme established in the hook and promise
|
174 |
-
"""
|
175 |
|
176 |
# Create the instruction using the system prompt at the beginning
|
177 |
instruction = f"""{offer_system_prompt}
|
@@ -197,34 +133,6 @@ Create a compelling offer following the formula structure exactly.
|
|
197 |
|
198 |
return instruction
|
199 |
|
200 |
-
def generate_complete_offer(avatar_description, product_name, selected_formula_name, include_bonuses=True):
|
201 |
-
"""
|
202 |
-
Generates a complete offer including the main offer and optional bonuses.
|
203 |
-
|
204 |
-
Args:
|
205 |
-
avatar_description: Description of the target audience
|
206 |
-
product_name: Name of the product or service
|
207 |
-
selected_formula_name: Name of the formula to use
|
208 |
-
include_bonuses: Whether to include bonuses in the offer
|
209 |
-
|
210 |
-
Returns:
|
211 |
-
dict: Instructions for generating the complete offer
|
212 |
-
"""
|
213 |
-
# Create main offer instruction
|
214 |
-
main_offer_instruction = create_offer_instruction(avatar_description, product_name, selected_formula_name)
|
215 |
-
|
216 |
-
# Create bonus instruction if requested
|
217 |
-
bonus_instruction = None
|
218 |
-
if include_bonuses:
|
219 |
-
# Import the bonus generator from the new module
|
220 |
-
from bonuses.generator import create_bonus_instruction
|
221 |
-
bonus_instruction = create_bonus_instruction(avatar_description, product_name, selected_formula_name)
|
222 |
-
|
223 |
-
return {
|
224 |
-
"main_offer_instruction": main_offer_instruction,
|
225 |
-
"bonus_instruction": bonus_instruction
|
226 |
-
}
|
227 |
-
|
228 |
# The rest of your offer_formulas dictionary remains unchanged
|
229 |
offer_formulas = {
|
230 |
"Oferta Dorada": {
|
|
|
13 |
- Do not include phrases like "Aquí tienes una oferta convincente" or "Esta es tu oferta"
|
14 |
"""
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
def create_offer_instruction(avatar_description, product_name, selected_formula_name):
|
17 |
"""
|
18 |
Creates instructions for generating an offer based on the selected formula.
|
|
|
25 |
Returns:
|
26 |
str: Complete instruction for generating the offer
|
27 |
"""
|
|
|
|
|
|
|
28 |
# Get the selected formula
|
29 |
selected_formula = offer_formulas[selected_formula_name]
|
30 |
|
|
|
34 |
additional_instructions = """
|
35 |
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
36 |
1. PRODUCT/SERVICE NAME HANDLING:
|
37 |
+
- If product_name is provided and not empty, use it EXACTLY as written
|
38 |
+
- If product_name is empty, generic (like "Producto/Servicio"), or contains placeholders, CREATE a compelling name that:
|
39 |
+
* Reflects the target audience's desires and challenges
|
40 |
+
* Communicates the main benefit or transformation
|
41 |
+
* Sounds professional and memorable
|
42 |
+
* Is specific to the niche or industry mentioned in avatar_description
|
43 |
+
- If product_name contains a full phrase like "Un curso llamado Inglés sin problemas", extract only the real name ("Inglés sin problemas")
|
44 |
|
45 |
2. Analyze ALL available information:
|
46 |
+
- Product/service name (product_name variable) or create one if needed
|
47 |
- Target audience description (avatar_description)
|
48 |
- Content from uploaded files (if any)
|
49 |
|
|
|
54 |
|
55 |
4. Create a comprehensive offer by combining:
|
56 |
- The appropriate type (determined in step 3)
|
57 |
+
- The exact product name (if provided) or your created name (if needed)
|
58 |
- A compelling dream based on avatar_description
|
59 |
- A relevant obstacle based on avatar_description
|
60 |
|
|
|
77 |
- "Ahora puedes acceder a un..."
|
78 |
- "Tenemos para ti un..."
|
79 |
- "Disfruta de un..."
|
80 |
+
"""
|
81 |
|
82 |
elif selected_formula_name == "Oferta Dorada":
|
83 |
additional_instructions = """
|
84 |
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
|
85 |
+
1. ATTENTION HOOK HANDLING:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
- Analyze the avatar_description DEEPLY to understand their specific pain points, frustrations, and desires
|
87 |
- Select a powerful attention hook that DIRECTLY connects with the avatar's current reality
|
88 |
- DO NOT use questions as hooks - use statements, statistics, or shocking revelations instead
|
89 |
- CUSTOMIZE the hook specifically for this avatar - don't use generic examples
|
90 |
- The hook MUST address the SAME problem that your promise will solve
|
91 |
|
92 |
+
2. MAINTAIN THEMATIC CONSISTENCY:
|
93 |
- The attention hook, quantifiable promise, and benefit statement MUST all address the SAME problem
|
94 |
- Create a LOGICAL PROGRESSION from problem (hook) to solution (promise) to implementation (benefit)
|
95 |
|
96 |
+
3. Create a compelling QUANTIFIABLE PROMISE that:
|
97 |
- Is written COMPLETELY IN CAPITAL LETTERS
|
98 |
- Includes concrete numbers (money, time, results)
|
99 |
- Uses powerful action verbs (EARN, MULTIPLY, ACHIEVE, MASTER)
|
|
|
102 |
- NEVER uses exclamation marks (!)
|
103 |
- DIRECTLY addresses the same problem mentioned in the hook
|
104 |
|
105 |
+
4. Craft a benefit statement that:
|
106 |
- Clearly explains the result they will obtain
|
107 |
- Includes an authority element (proven method, studies, experience)
|
108 |
- Establishes a realistic timeframe or effort needed
|
109 |
- CONTINUES the same theme established in the hook and promise
|
110 |
+
"""
|
111 |
|
112 |
# Create the instruction using the system prompt at the beginning
|
113 |
instruction = f"""{offer_system_prompt}
|
|
|
133 |
|
134 |
return instruction
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
# The rest of your offer_formulas dictionary remains unchanged
|
137 |
offer_formulas = {
|
138 |
"Oferta Dorada": {
|