JeCabrera's picture
Upload 6 files
c7c2115 verified
raw
history blame
10.1 kB
# Define system prompts for different generators
# System prompt for offer generation
offer_system_prompt = """You are a world-class expert copywriter, experienced in creating compelling offers that connect emotionally with the target audience.
OBJECTIVE:
- Generate a convincing offer in Spanish
- Connect emotionally with the audience
- Address real desires, problems, and motivations
- Maintain natural and conversational language
CRITICAL OUTPUT RULES:
- Output ONLY the offer itself with NO introductory text, explanations, or additional commentary
- Start directly with the attention hook or opening phrase
- The entire response should be ONLY the offer itself following the formula structure
- Do not include phrases like "Aquí tienes una oferta convincente" or "Esta es tu oferta"
"""
# Remove the circular import
# from formulas import offer_formulas
def create_offer_instruction(avatar_description, product_name, selected_formula_name, offer_formulas=None):
"""
Creates instructions for generating an offer based on the selected formula.
Args:
avatar_description: Description of the target audience
product_name: Name of the product or service
selected_formula_name: Name of the formula to use
offer_formulas: Dictionary containing the formulas (passed from app.py)
Returns:
str: Complete instruction for generating the offer
"""
# Get the selected formula
selected_formula = offer_formulas[selected_formula_name]
# Add specific instructions for each formula
additional_instructions = ""
if selected_formula_name == "Fórmula Sueño-Obstáculo":
additional_instructions = """
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
1. PRODUCT/SERVICE NAME HANDLING:
- If product_name is provided and not empty, use it EXACTLY as written
- If product_name is empty, generic (like "Producto/Servicio"), or contains placeholders, CREATE a compelling name that:
* Reflects the target audience's desires and challenges
* Communicates the main benefit or transformation
* Sounds professional and memorable
* Is specific to the niche or industry mentioned in avatar_description
- If product_name contains a full phrase like "Un curso llamado Inglés sin problemas", extract only the real name ("Inglés sin problemas")
2. Analyze ALL available information:
- Product/service name (product_name variable) or create one if needed
- Target audience description (avatar_description)
- Content from uploaded files (if any)
3. Determine the most appropriate type (curso, webinar, entrenamiento, etc.) based on:
- Any type mentioned in product_name
- The nature of the solution described in avatar_description
- The most suitable format for the target audience's needs
4. Create a comprehensive offer by combining:
- The appropriate type (determined in step 3)
- The exact product name (if provided) or your created name (if needed)
- A compelling dream based on avatar_description
- A relevant obstacle based on avatar_description
5. The dream should be ambitious but believable, incorporating:
- Target audience desires from avatar_description
- Explicit goals mentioned in uploaded content (if any)
6. The obstacle should reflect:
- Real problems mentioned in avatar_description
- Challenges that would normally prevent achieving the dream
7. IMPORTANT: Vary the way you start the phrase. Instead of always using "Se trata de un...", use different openings such as:
- "Presentamos un..."
- "Te ofrecemos un..."
- "Descubre nuestro..."
- "Conoce el..."
- "Hemos creado un..."
- "Imagina tener acceso a un..."
- "Por fin existe un..."
- "Ahora puedes acceder a un..."
- "Tenemos para ti un..."
- "Disfruta de un..."
"""
elif selected_formula_name == "Oferta Dorada":
additional_instructions = """
SPECIFIC INSTRUCTIONS FOR THIS FORMULA:
1. ATTENTION HOOK HANDLING:
- Analyze the avatar_description DEEPLY to understand their specific pain points, frustrations, and desires
- Select a powerful attention hook that DIRECTLY connects with the avatar's current reality
- DO NOT use questions as hooks - use statements, statistics, or shocking revelations instead
- CUSTOMIZE the hook specifically for this avatar - don't use generic examples
- The hook MUST address the SAME problem that your promise will solve
Choose randomly from these statement hooks and CUSTOMIZE for your avatar:
- "El 83% de los [avatar's profession/role] pierden [specific resource] en [specific activity] que nadie aprovecha."
- "9 de cada 10 [avatar's field] fracasan en sus primeros 6 meses por este error."
- "Lo que nadie te dice sobre [avatar's challenge] es que la mayoría fracasa en los primeros 3 meses."
- "El secreto que [competitors/industry] no quieren que sepas sobre [avatar's goal]."
- "Tu [avatar's current strategy/approach] está ahuyentando a tus [avatar's desired outcome]."
- "Mientras algunos [positive outcome], tú sigues [negative current situation]."
- "La mayoría de [current solutions] son una pérdida total de [resources]."
- "Hace 6 meses estaba exactamente donde tú estás: [avatar's current struggle]."
2. MAINTAIN THEMATIC CONSISTENCY:
- The attention hook, quantifiable promise, and benefit statement MUST all address the SAME problem
- Create a LOGICAL PROGRESSION from problem (hook) to solution (promise) to implementation (benefit)
3. Create a compelling QUANTIFIABLE PROMISE that:
- Is written COMPLETELY IN CAPITAL LETTERS
- Includes concrete numbers (money, time, results)
- Uses powerful action verbs (EARN, MULTIPLY, ACHIEVE, MASTER)
- Specifies the exact result they will obtain
- Optionally includes time or effort required
- NEVER uses exclamation marks (!)
- DIRECTLY addresses the same problem mentioned in the hook
4. Craft a benefit statement that:
- Clearly explains the result they will obtain
- Includes an authority element (proven method, studies, experience)
- Establishes a realistic timeframe or effort needed
- CONTINUES the same theme established in the hook and promise
"""
# Create the instruction using the system prompt at the beginning
instruction = f"""{offer_system_prompt}
FORMULA TO USE:
{selected_formula["description"]}
{additional_instructions}
PRODUCT/SERVICE:
{product_name}
TARGET AUDIENCE:
{avatar_description}
Create a compelling offer following the formula structure exactly.
"""
# Add examples if available
if selected_formula.get("examples") and len(selected_formula["examples"]) > 0:
examples_text = "\n\n".join([f"Example {i+1}:\n{example}" for i, example in enumerate(selected_formula["examples"][:3])])
instruction += f"\n\nGet inspired by these examples:\n{examples_text}"
return instruction
# System prompt for benefits generation
system_prompt = """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.
OBJECTIVE:
- Generate convincing and specific benefit bullets in Spanish
- Connect emotionally with the audience
- Address real desires, problems, and motivations
- Maintain natural and conversational language
- Orient each benefit towards action
FORMAT RULES:
- Each benefit must start with "• "
- One benefit per line
- No numbers at the beginning
- No explanations or categories
- Add a line break between each benefit
- Never include : symbols in bullets
- Each benefit must be a complete and concise phrase
BENEFIT STRUCTURE:
- Must be relevant to target audience
- Must show a specific result
- Must include an emotional element
- Must eliminate an objection or pain point
- Must inspire immediate action
EJEMPLO DE FORMATO:
• Transforma tu negocio con estrategias probadas que duplican tus ingresos en 90 días, sin sacrificar tu tiempo en familia.
• Domina las técnicas más efectivas para conquistar tu mercado, mientras mantienes el equilibrio entre trabajo y vida personal.
• Implementa sistemas automatizados que hacen crecer tu empresa incluso mientras duermes, eliminando la necesidad de trabajar más horas.
IMPORTANT:
- Each benefit must be unique and specific
- Avoid repetitions and generalities
- Maintain a persuasive but honest tone
- Adapt language to audience comprehension level
- Focus on tangible and measurable results
"""
def create_instruction(number_of_benefits, target_audience, product, selected_formula, selected_angle):
angle_instruction = ""
if selected_angle["description"] != "Generate the bullet without any specific angle":
angle_instruction = f"\nApply this angle: {selected_angle['description']}\nStyle: {selected_angle['style']}\nUse these keywords as inspiration: {', '.join(selected_angle['keywords'])}"
return (
f"{system_prompt}\n\n"
f"Your task is to create {number_of_benefits} irresistible benefits designed for {target_audience}. "
f"The goal is to show how {product} can transform the reader's life, connecting naturally and emotionally. "
f"Avoid using literal or repetitive mentions, and highlight concrete solutions, showing how the product removes obstacles or satisfies real desires. "
f"{angle_instruction}\n"
f"IMPORTANT: Keep bullets short and direct. "
f"Use the selected formula as a guide:\n\n{selected_formula['description']}\n\n"
f"Get inspired by these examples:\n"
f"- {selected_formula['examples'][0]}\n"
f"- {selected_formula['examples'][1]}\n"
f"- {selected_formula['examples'][2]}\n\n"
f"Your goal is to inspire desire and action, avoiding explanations or categories in the response."
)