import streamlit as st
from lib.gpt_providers.text_generation.main_text_generation import llm_text_gen
def input_section():
st.markdown("""
🚀 ACCA Copywriting Generator
Create persuasive marketing copy using the proven ACCA (Awareness-Curiosity-Conviction-Action) formula.
""", unsafe_allow_html=True)
# Educational content about ACCA copywriting
with st.expander("📚 What is ACCA Copywriting?", expanded=False):
st.markdown("""
### Understanding the ACCA Copywriting Formula
The ACCA formula is a powerful copywriting framework that guides your audience through a journey from problem recognition to action:
- **Awareness**: Highlight the problem or pain point your audience faces
- **Curiosity**: Agitate the problem by emphasizing its negative impact
- **Conviction**: Present your solution and build confidence in it
- **Action**: Provide a clear, compelling call to action
### Why ACCA Copywriting Works
The ACCA formula works because it:
- Follows the natural decision-making process of your audience
- Creates a logical progression from problem to solution
- Builds emotional investment before asking for commitment
- Addresses objections before they arise
- Ends with a clear next step
### When to Use ACCA Copywriting
The ACCA formula is particularly effective for:
- Product launches
- Service promotions
- Problem-solving offers
- Educational content
- Sales pages
- Email marketing sequences
""")
# Main input form
with st.expander("✍️ Create Your ACCA Copy", expanded=True):
col1, col2 = st.columns([1, 1])
with col1:
brand_name = st.text_input('**🏢 Brand/Company Name**',
placeholder="e.g., Alwrity",
help="Enter the name of your brand or company.")
target_audience = st.text_input('**👥 Target Audience**',
placeholder="e.g., Small business owners, Tech professionals",
help="Who is your ideal customer? Be specific about demographics and psychographics.")
awareness = st.text_input('❓ **Awareness (Problem)**',
placeholder="e.g., Struggling to manage finances",
help="What problem or pain point does your audience face?")
with col2:
description = st.text_input('**📝 Brand Description** (In 5-6 words)',
placeholder="e.g., AI writing tools",
help="Describe your product or service briefly.")
unique_selling_point = st.text_input('**💎 Unique Selling Point**',
placeholder="e.g., 10x faster content creation",
help="What makes your product/service different from competitors?")
curiosity = st.text_input('🔥 **Curiosity (Agitation)**',
placeholder="e.g., Leads to financial instability and stress",
help="Why is this problem serious for your audience? Highlight the negative impact.")
conviction = st.text_input('💡 **Conviction (Solution)**',
placeholder="e.g., Provides easy-to-use budgeting tools with AI insights",
help="How does your product/service solve this problem? Explain the benefits.")
call_to_action = st.text_input('🎯 **Action (Call to Action)**',
placeholder="e.g., Start your free trial today",
help="What specific action do you want your audience to take?")
tone_style = st.selectbox(
'**🎭 Copy Tone & Style**',
options=['Professional', 'Conversational', 'Humorous', 'Authoritative', 'Empathetic', 'Aspirational'],
help="Select the tone and style for your copy."
)
if st.button('**🚀 Generate ACCA Copy**', type="primary"):
if not brand_name or not description or not awareness or not curiosity or not conviction:
st.error("⚠️ Please fill in all required fields (Brand Name, Description, Awareness, Curiosity, and Conviction)!")
else:
with st.spinner("✨ Crafting persuasive ACCA copy..."):
acca_copy = generate_acca_copy(
brand_name,
description,
awareness,
curiosity,
conviction,
target_audience,
unique_selling_point,
call_to_action,
tone_style
)
if acca_copy:
st.markdown("""
✨ Your ACCA Copy
""", unsafe_allow_html=True)
# Display the copy with a nice format
st.markdown(acca_copy)
# Add copy button
st.markdown("""
""", unsafe_allow_html=True)
# Add tips for using the copy - using a container instead of an expander
st.markdown("""
💡 Tips for Using Your ACCA Copy
""", unsafe_allow_html=True)
st.markdown("""
### How to Use Your ACCA Copy Effectively
1. **Test different versions**: A/B test your copy to see which version resonates most with your audience
2. **Pair with visuals**: Combine your copy with images that reinforce each stage of the ACCA formula
3. **Consider the platform**: Adapt your copy based on where it will appear (social media, email, website, etc.)
4. **Measure results**: Track conversion metrics to see how your ACCA copy performs
5. **Refine over time**: Continuously improve your copy based on audience feedback and performance data
""")
else:
st.error("💥 **Failed to generate ACCA Copy. Please try again!**")
def generate_acca_copy(brand_name, description, awareness, curiosity, conviction, target_audience,
unique_selling_point, call_to_action, tone_style):
system_prompt = """You are an expert copywriter specializing in the ACCA (Awareness-Curiosity-Conviction-Action) formula.
Your expertise is in creating compelling, persuasive marketing copy that guides audiences through a journey from problem
recognition to taking action. Your copy is authentic, specific to the brand, and focused on the target audience's needs."""
prompt = f"""Create 3 different marketing campaigns for {brand_name}, which is a {description}.
TARGET AUDIENCE: {target_audience}
UNIQUE SELLING POINT: {unique_selling_point}
TONE & STYLE: {tone_style}
Use the ACCA formula with these elements:
- **Awareness**: {awareness}
- **Curiosity**: {curiosity}
- **Conviction**: {conviction}
- **Action**: {call_to_action}
For each campaign:
1. Create a compelling headline that captures attention
2. Write 2-3 paragraphs that follow the ACCA formula
3. End with a strong call to action
4. Explain how each element of the ACCA formula is used in the copy
Format each campaign clearly with "CAMPAIGN 1:", "CAMPAIGN 2:", etc. as headers.
Make the copy authentic, specific to the brand, and focused on the target audience's needs and desires.
"""
try:
return llm_text_gen(prompt, system_prompt=system_prompt)
except Exception as e:
st.error(f"Error generating copy: {str(e)}")
return None