Spaces:
Sleeping
Sleeping
File size: 22,456 Bytes
6ab0e7c 425d9e5 53e29c5 425d9e5 53e29c5 425d9e5 53e29c5 425d9e5 53e29c5 425d9e5 53e29c5 425d9e5 53e29c5 425d9e5 086c0b9 425d9e5 74a04c8 425d9e5 fc35b8e 425d9e5 fc35b8e 425d9e5 fc35b8e 425d9e5 c7f2024 74a04c8 c7f2024 425d9e5 74a04c8 425d9e5 fc35b8e 425d9e5 53e29c5 6ab0e7c 53e29c5 6ab0e7c 53e29c5 425d9e5 53e29c5 c7c2115 0fa3208 0eaa586 6ab0e7c 5b9a3d9 0c9ec73 6ab0e7c 0c9ec73 5b9a3d9 0c9ec73 5b9a3d9 0c9ec73 6ab0e7c aa5496e 0eaa586 74a04c8 6ab0e7c 425d9e5 6ab0e7c 74a04c8 6ab0e7c 74a04c8 6ab0e7c 425d9e5 6ab0e7c 74a04c8 6ab0e7c fc35b8e 74a04c8 6ab0e7c 425d9e5 6ab0e7c fc35b8e 6ab0e7c 74a04c8 6ab0e7c 425d9e5 6ab0e7c 74a04c8 6ab0e7c 74a04c8 6ab0e7c 425d9e5 6ab0e7c 74a04c8 53e29c5 f3a33b4 64599b6 f3a33b4 bfb2c37 c9db07c bfb2c37 f46c20a e393388 |
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 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 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 |
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 extract_product_name(product_name_input):
"""
Extracts the actual product name from user input, especially when it's enclosed in quotes.
Args:
product_name_input: The raw input string containing the product name
Returns:
str: The extracted product name, or empty string if generic
"""
import re
# If input is empty or None, return empty string
if not product_name_input or product_name_input.strip() == "":
return ""
# Check if there's a name in quotes
quote_pattern = r'"([^"]+)"'
matches = re.findall(quote_pattern, product_name_input)
if matches:
# Return the first quoted string found
return matches[0]
# If no quotes but contains "llamado" or similar phrases, extract what follows
called_patterns = [
r'llamado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)',
r'titulado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)',
r'denominado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)',
r'nombrado\s+(.+?)(?:\s+que|\s+con|\s+para|\.$|$)'
]
for pattern in called_patterns:
matches = re.search(pattern, product_name_input, re.IGNORECASE)
if matches:
extracted = matches.group(1).strip()
# If the extracted text has quotes, remove them
if extracted.startswith('"') and extracted.endswith('"'):
extracted = extracted[1:-1]
return extracted
# Check if the input is generic (common course/product types without specific names)
generic_patterns = [
r'^(curso|taller|programa|webinar|entrenamiento|sistema|método|servicio|producto|aplicación|comunidad|masterclass)(\s+de\s+.+)?$',
r'^(un|el|mi|nuestro)\s+(curso|taller|programa|webinar|entrenamiento|sistema|método|servicio|producto|aplicación|comunidad|masterclass)(\s+de\s+.+)?$'
]
for pattern in generic_patterns:
if re.match(pattern, product_name_input.lower(), re.IGNORECASE):
# This is a generic description, return empty string to trigger creative name generation
return ""
# If no patterns match, return the original input
return product_name_input.strip()
def create_offer_instruction(avatar_description, product_name, selected_formula_name):
"""
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 ("Fórmula Sueño-Obstáculo" or "Oferta Dorada")
Returns:
str: Complete instruction for generating the offer
"""
# Extract the actual product name if it's in quotes or after "llamado"
extracted_name = extract_product_name(product_name)
# 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:
- CRITICAL: If a product name is provided in quotes or after words like "llamado", "titulado", etc.,
YOU MUST USE THAT EXACT NAME. This is non-negotiable.
- The extracted product name is: "{extracted_name}"
- If this extracted name is not empty, use it EXACTLY as provided with no modifications
- Only create a new name if the extracted name is empty or contains generic placeholders
2. Analyze ALL available information:
- Product/service name (use the extracted name provided above)
- 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 as extracted (if provided)
- 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..."
""".format(extracted_name=extracted_name)
elif selected_formula_name == "Oferta Dorada":
additional_instructions = """
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
1. PRODUCT/SERVICE NAME HANDLING:
- CRITICAL: If a product name is provided in quotes or after words like "llamado", "titulado", etc.,
YOU MUST USE THAT EXACT NAME. This is non-negotiable.
- The extracted product name is: "{extracted_name}"
- If this extracted name is not empty, use it EXACTLY as provided with no modifications
- Only create a new name if the extracted name is empty or contains generic placeholders
2. FOLLOW THE 6-STEP PROCESS FOR CREATING AN IRRESISTIBLE OFFER:
STEP 1: IDENTIFY THE MAIN PROBLEM (ATTENTION HOOK)
- Analyze the avatar_description DEEPLY to understand their specific pain points
- Create a powerful hook that directly addresses their biggest frustration or anxiety
- Use statements that make them think "this person understands my situation exactly"
- Focus on the emotional impact of their problem, not just the practical aspects
- Use statistics, shocking revelations, direct statements or questions
- The hook must create an immediate emotional connection
- IMPORTANT: Vary your opening approach using different formats:
* Direct question: "¿Estás cansado de...?"
* Shocking statistic: "El 83% de las personas..."
* Bold statement: "La mayoría de métodos para..."
* Empathetic observation: "Sé lo frustrante que..."
* Challenge: "Imagina poder..."
* Contrast: "Mientras otros..."
* Revelation: "Lo que nadie te dice sobre..."
* Story opener: "Hace unos años, yo también..."
* Avoid always starting with "Si [problema]..." - use this format only 20% of the time
STEP 2: CRAFT A QUANTIFIABLE VALUE PROMISE
- Write a promise COMPLETELY IN CAPITAL LETTERS that includes:
* Concrete numbers (money, time, results)
* Powerful action verbs (EARN, MULTIPLY, ACHIEVE, MASTER)
* Specific timeframes (EN 30 DÍAS, EN SOLO 2 SEMANAS)
* Clear effort indicators (CON SOLO 15 MINUTOS DIARIOS)
- Follow this structure: CÓMO [LOGRAR RESULTADO DESEADO] SIN [OBJECIÓN O CREENCIA LIMITANTE]
- NEVER use exclamation marks (!) in this section
- Make the promise both ambitious and believable
STEP 3: DEMONSTRATE TRUST AND AUTHORITY
- Include elements that prove your system works:
* Personal results ("Así como he vendido más de $250,000 USD")
* Client results ("Mis clientes han vendido más de $5,000,000")
* Social proof (testimonials, case studies)
- Establish credibility through specific numbers and verifiable claims
- Connect your authority directly to the promised result
STEP 4: REDUCE DELIVERY TIME
- Clearly state how quickly they will see results
- Make the timeframe specific and believable
- Emphasize speed without sacrificing quality
- Use phrases like "en solo X días" or "desde la primera semana"
- IMPORTANT: This refers to when they'll see RESULTS, not how long they need to work
- Examples: "verás resultados en 30 días", "transformación completa en 8 semanas"
STEP 5: MINIMIZE CLIENT EFFORT
- Address the fear of complicated processes
- CLEARLY specify the exact effort required from the client:
* Time commitment: "con solo 15 minutos al día"
* Frequency: "practicando 3 veces por semana"
* Complexity: "siguiendo 5 pasos sencillos"
* Prerequisites: "sin necesidad de experiencia previa"
- Make the implementation process seem accessible and straightforward
- Emphasize the low effort-to-results ratio
- Examples: "dedicando solo 20 minutos diarios", "con 3 ejercicios simples"
STEP 6: COMBINE ALL ELEMENTS INTO A COHESIVE OFFER
- Ensure all elements address the SAME core problem
- Create a LOGICAL PROGRESSION from problem to solution to implementation
- Maintain thematic consistency throughout the entire offer
- Use one of the 5 structure formats for the final benefit statement
3. FINAL STRUCTURE FORMAT:
Choose one of these more concise formats for the benefit statement:
1. "[Feature] para [Benefit] + [prueba social/autoridad] en [tiempo específico]."
2. "Con [Feature] lograrás [Benefit] + [prueba social/autoridad] en [tiempo específico]."
3. "Gracias a [Feature] conseguirás [Benefit] + [prueba social/autoridad] en [tiempo específico]."
4. "Mediante [Feature] alcanzarás [Benefit] + [prueba social/autoridad] en [tiempo específico]."
5. "Usando [Feature] obtendrás [Benefit] + [prueba social/autoridad] en [tiempo específico]."
IMPORTANT:
- Keep this section under 30 words when possible
- Focus on ONE primary benefit rather than multiple
- Include ONE specific proof element (number, statistic, or result)
- Specify exact timeframe (días, semanas, meses)
- Eliminate redundant phrases and filler words
4. COMPLETE OFFER TEMPLATE:
[Varied attention hook using one of the 8 formats above]
DESCUBRE CÓMO [LOGRAR RESULTADO DESEADO] SIN [MIEDO, CREENCIA LIMITANTE O ESFUERZO INDESEADO].
[Estructura concisa elegida del punto 3] + [prueba social/autoridad] +
[TIEMPO DE ENTREGA: cuándo verán resultados] + [ESFUERZO DEL CLIENTE: qué tienen que hacer exactamente].
EXAMPLES OF CLEAR DISTINCTION:
- "Verás resultados en solo 30 días, dedicando apenas 15 minutos diarios."
- "Transformarás tu inglés en 8 semanas, practicando solo 3 veces por semana."
- "Dominarás estas técnicas en 60 días, siguiendo 5 pasos sencillos cada mañana."
""".format(extracted_name=extracted_name)
# 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
def generate_complete_offer(avatar_description, product_name, selected_formula_name, include_bonuses=True):
"""
Generates a complete offer including the main offer and optional bonuses.
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
include_bonuses: Whether to include bonuses in the offer
Returns:
dict: Instructions for generating the complete offer
"""
# Create main offer instruction
main_offer_instruction = create_offer_instruction(avatar_description, product_name, selected_formula_name)
# Create bonus instruction if requested
bonus_instruction = None
if include_bonuses:
# Import the bonus generator from the new module
from bonuses.generator import create_bonus_instruction
bonus_instruction = create_bonus_instruction(avatar_description, product_name, selected_formula_name)
return {
"main_offer_instruction": main_offer_instruction,
"bonus_instruction": bonus_instruction
}
# The rest of your offer_formulas dictionary remains unchanged
offer_formulas = {
"Oferta Dorada": {
"description": """
Formula: [Attention Hook + QUANTIFIABLE PROMISE IN ALL CAPS + Benefit + Authority + Time or Effort]
This formula is designed to speak directly to the avatar, capturing their attention immediately, reflecting their current situation, and showing the transformation they desire.
### **How to apply it?**
#### 1 **Attention Hook**
The first step is to capture the avatar's attention with a powerful hook that can be a shocking revelation, an unexpected question, or a dramatic fact. IMPORTANT: CUSTOMIZE THE HOOK BASED ON THE AVATAR AND THEIR SPECIFIC PROBLEMS. Don't use generic examples, but adapt them to the client's situation.
Analyze first:
- What is the avatar's biggest pain or frustration?
- What are they trying to achieve without success?
- What limiting beliefs do they have?
---
#### 2 **QUANTIFIABLE PROMISE IN ALL CAPS**
This is the most important part. You must create a specific, quantifiable promise written COMPLETELY IN CAPITAL LETTERS that immediately captures attention. It must include:
- Concrete numbers (money, time, results)
- Powerful action verbs (EARN, MULTIPLY, ACHIEVE, MASTER)
- The specific result they will obtain
- Optionally, the time or effort required
- IMPORTANT: DO NOT USE EXCLAMATION MARKS (!) IN THIS SECTION UNDER ANY CIRCUMSTANCES
**Incorrect example:**
"Improve your sales with our system." (Vague, no numbers, no impact).
"¡MULTIPLY YOUR SALES IN RECORD TIME!" (Uses exclamation marks, NEVER use them).
**Correct example:**
"FACTURA MAS DE $1.000 USD USANDO 15 EMAILS ESCRITOS EN 15 MINUTOS CADA UNO" (Specific, quantifiable, impactful).
"MULTIPLICA POR 3 TUS INTERACCIONES EN REDES SOCIALES EN SOLO 2 SEMANAS" (Clear, measurable, with defined time).
---
#### 3 **Benefit + Authority + Time or Effort**
In this part, we explain the result they will obtain, supported by an authority factor (proven method, studies, experience, validations) and establishing a time frame or necessary effort to achieve it.
**Structure Formats:**
1. "[Feature] para que puedas [Benefit] con lo que [Meaning]"
2. "Con [Feature] podrás [Benefit] permitiéndote [Meaning]"
3. "Gracias a [Feature] lograrás [Benefit] haciendo que [Meaning]"
4. "Mediante [Feature] conseguirás [Benefit] lo que significa [Meaning]"
5. "Usando [Feature] alcanzarás [Benefit] transformando [Meaning]"
**Incorrect example:**
"Grow your business with our strategy." (Doesn't say how long it will take or how reliable the strategy is).
**Correct examples:**
"El Sistema de emails persuasivos para que puedas convertir lectores en clientes con lo que multiplicarás tus ventas en solo 30 días."
"Con nuestra metodología de copywriting podrás crear ofertas irresistibles permitiéndote aumentar tu tasa de conversión en un 200% con solo 15 minutos al día."
"Gracias a nuestro framework de contenido lograrás posicionarte como autoridad haciendo que tu audiencia te busque a ti en lugar de a tu competencia."
"Mediante nuestro sistema de automatización conseguirás generar ventas mientras duermes lo que significa libertad financiera real en menos de 90 días."
"Usando nuestra estrategia de redes sociales alcanzarás 10.000 seguidores cualificados transformando tu presencia digital en una máquina de generación de leads."
---
### **Fixed structure:**
"[Varied Attention Hook]
[QUANTIFIABLE PROMISE IN ALL CAPS]
[Choose one of the 5 structure formats for Benefit + Authority + Time or Effort]"
""",
"examples": [
# Example 1 - Question format
"""¿Estás cansado de que tus prospectos te pregunten y pregunten pero nunca cierren la venta?
DESCUBRE CÓMO VENDER CON UNA SOLA LLAMADA PRODUCTOS DE MÁS DE $1,000 USD SIN MANIPULAR, MENTIR O FORZAR LA VENTA.
Con nuestro proceso de venta persuasiva lograrás convertir objeciones en ventas, como ya han hecho más de 500 emprendedores en menos de 30 días.""",
# Example 2 - Statistic format
"""El 78% de los emprendedores luchan cada mes para llegar a fin de mes, ¿eres uno de ellos?
MULTIPLICA TUS INGRESOS POR 3 EN LOS PRÓXIMOS 90 DÍAS SIN TRABAJAR MÁS HORAS NI CONTRATAR PERSONAL ADICIONAL.
Mediante nuestro sistema de optimización de negocios alcanzarás la rentabilidad que 327 emprendedores ya disfrutan en menos de un trimestre.""",
# Example 3 - Bold statement format with clear time/effort distinction
"""La mayoría de dietas fallan porque atacan el síntoma y no la causa real del sobrepeso.
PIERDE ENTRE 5 Y 8 KILOS EN 30 DÍAS SIN DIETAS RESTRICTIVAS, SIN PASAR HAMBRE Y SIN EFECTO REBOTE.
Gracias a nuestro método de reprogramación metabólica activarás tu quema natural de grasa, avalado por estudios clínicos con 94% de efectividad. Verás los primeros resultados en solo 7 días, dedicando apenas 15 minutos diarios a los ejercicios metabólicos.""",
# Example 4 - Contrast format
"""Mientras otros influencers consiguen miles de seguidores cada semana, tú sigues creando contenido que nadie ve.
CONSIGUE 100 NUEVOS SEGUIDORES CUALIFICADOS POR SEMANA Y CONVIERTE EL 10% EN CLIENTES PAGANDO CON SOLO 3 PUBLICACIONES SEMANALES.
Usando nuestra estrategia de contenido de alto impacto transformarás tu presencia en redes en un canal de ventas automático en menos de 30 días.""",
# Example 5 - Empathetic format
"""Sé lo frustrante que es despertarse sin energía día tras día, sintiendo que nunca hay suficientes horas.
AUMENTA TU ENERGÍA UN 65% Y RECUPERA 2 HORAS PRODUCTIVAS AL DÍA CON SOLO 15 MINUTOS DE RUTINA MATUTINA.
El Sistema de activación bioenergética optimizará tu rendimiento físico y mental desde la primera semana, usado por los CEOs más exitosos del mundo."""
]
},
"Fórmula Sueño-Obstáculo": {
"description": """
Formula: [Type + Name + Dream + Obstacle]
This formula connects directly with the client's desires and concerns:
1. Type: The type of solution (training, product, or service)
2. Name: The name of your solution
3. Dream: The big dream or result that the client wants to achieve
4. Obstacle: The obstacle that would normally prevent achieving that dream
**Suggested solution types:**
- Online course
- Webinar
- Training
- Program
- Workshop
- Mentorship
- Consulting
- Membership
- System
- Method
- Service
- Product
- Application
- Community
- Masterclass
**Suggested opening variations:**
- "Se trata de un..."
- "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..."
**Structure Format (Classic example):**
"Se trata de un (training, product or service) llamado ("name of your solution") que te va a permitir (big dream) aún y cuando (big obstacle)"
""",
"examples": [
# Example 1 - Sales Training
"""Se trata de mi exclusivo entrenamiento llamado "Venta Express 3.0" con el que te convertirás en todo un Rockstar de las ventas con el que conectarás con tus clientes para inspirarlos al cierre de una forma fácil y divertida aún y cuando sea la primera vez que escuchen de ti.""",
# Example 2 - Fitness Program
"""Presentamos un programa de transformación física llamado "Metabolismo Activado" que te permitirá perder hasta 10 kilos en 8 semanas aún y cuando hayas intentado todas las dietas sin éxito.""",
# Example 3 - Digital Marketing
"""Descubre nuestro sistema de marketing digital llamado "Tráfico Convertidor" que te ayudará a multiplicar tus ventas online sin necesidad de gastar fortunas en publicidad aún y cuando no tengas experiencia previa en marketing.""",
# Example 4 - Personal Finance
"""Tenemos para ti un método financiero llamado "Libertad Financiera Acelerada" que te permitirá generar ingresos pasivos y construir patrimonio aún y cuando partas desde cero o tengas deudas actualmente.""",
# Example 5 - Language Learning
"""Imagina tener acceso a un curso de idiomas llamado "Inglés Sin Barreras Pro" con el que dominarás el inglés conversacional en solo 90 días aún y cuando hayas fracasado con métodos tradicionales en el pasado.""",
# Example 6 - Productivity
"""Hemos creado un workshop intensivo llamado "Productividad Imparable" que te enseñará a duplicar tus resultados trabajando menos horas aún y cuando tengas una agenda completamente saturada.""",
# Example 7 - Relationships
"""Por fin existe un programa de coaching llamado "Conexiones Profundas" que te ayudará a encontrar y mantener relaciones saludables y satisfactorias aún y cuando hayas tenido experiencias dolorosas en el pasado."""
]
}
} |