JeCabrera commited on
Commit
e70a84a
·
verified ·
1 Parent(s): 2ccbbde

Upload 8 files

Browse files
Files changed (3) hide show
  1. app.py +27 -5
  2. consciousness_levels.py +119 -0
  3. prompts.py +19 -2
app.py CHANGED
@@ -20,6 +20,8 @@ if 'habilidades' not in st.session_state:
20
  st.session_state.habilidades = ""
21
  if 'creatividad' not in st.session_state:
22
  st.session_state.creatividad = 1.0
 
 
23
 
24
  # Función para generar el perfil de cliente ideal
25
  @st.cache_resource
@@ -29,7 +31,7 @@ def get_model(temperature):
29
  }
30
  return genai.GenerativeModel('gemini-2.0-flash', generation_config=generation_config)
31
 
32
- def generate_buyer_persona(product, skills, target_audience, temperature):
33
  if not product or not skills:
34
  return "Por favor, completa los campos de producto y habilidades."
35
 
@@ -37,7 +39,8 @@ def generate_buyer_persona(product, skills, target_audience, temperature):
37
  instruction = create_instruction(
38
  product_service=product,
39
  skills=skills,
40
- target_audience=target_audience
 
41
  )
42
 
43
  # Añadir instrucción explícita para respuesta en español
@@ -117,6 +120,24 @@ with col1:
117
  step=0.1,
118
  key="creatividad_slider")
119
  st.session_state.creatividad = creatividad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
 
121
  # Botón para generar
122
  submit = st.button("GENERAR PERFIL DE CLIENTE IDEAL", on_click=update_profile)
@@ -132,7 +153,8 @@ with col2:
132
  st.session_state.producto,
133
  st.session_state.habilidades,
134
  st.session_state.publico_objetivo,
135
- st.session_state.creatividad
 
136
  )
137
  # Guardar en session_state
138
  st.session_state.perfil_cliente = perfil_cliente
@@ -164,8 +186,8 @@ with col2:
164
  st.download_button(
165
  label="Descargar Perfil",
166
  data=st.session_state.perfil_cliente,
167
- file_name="cliente_ideal.txt",
168
- mime="text/plain"
169
  )
170
  else:
171
  st.warning("Por favor, completa los campos de producto y habilidades antes de generar el perfil.")
 
20
  st.session_state.habilidades = ""
21
  if 'creatividad' not in st.session_state:
22
  st.session_state.creatividad = 1.0
23
+ if 'incluir_niveles_conciencia' not in st.session_state:
24
+ st.session_state.incluir_niveles_conciencia = False
25
 
26
  # Función para generar el perfil de cliente ideal
27
  @st.cache_resource
 
31
  }
32
  return genai.GenerativeModel('gemini-2.0-flash', generation_config=generation_config)
33
 
34
+ def generate_buyer_persona(product, skills, target_audience, temperature, include_consciousness_levels=False):
35
  if not product or not skills:
36
  return "Por favor, completa los campos de producto y habilidades."
37
 
 
39
  instruction = create_instruction(
40
  product_service=product,
41
  skills=skills,
42
+ target_audience=target_audience,
43
+ include_consciousness_levels=include_consciousness_levels
44
  )
45
 
46
  # Añadir instrucción explícita para respuesta en español
 
120
  step=0.1,
121
  key="creatividad_slider")
122
  st.session_state.creatividad = creatividad
123
+
124
+ # Opción para incluir análisis de niveles de conciencia
125
+ incluir_niveles = st.checkbox(
126
+ "Incluir análisis de los 5 niveles de conciencia",
127
+ value=st.session_state.incluir_niveles_conciencia,
128
+ help="Analiza al cliente ideal desde los 5 niveles de conciencia de Eugene Schwartz"
129
+ )
130
+ st.session_state.incluir_niveles_conciencia = incluir_niveles
131
+
132
+ if incluir_niveles:
133
+ st.info("""
134
+ **Los 5 niveles de conciencia:**
135
+ 1. **Desconocido**: No sabe que tiene un problema
136
+ 2. **Consciente del problema**: Reconoce el problema pero no sabe cómo resolverlo
137
+ 3. **Consciente de la solución**: Conoce posibles soluciones pero no sabe cuál elegir
138
+ 4. **Consciente del producto**: Conoce tu producto pero no está convencido
139
+ 5. **Consciente de la compra**: Está listo para comprar pero necesita un incentivo final
140
+ """)
141
 
142
  # Botón para generar
143
  submit = st.button("GENERAR PERFIL DE CLIENTE IDEAL", on_click=update_profile)
 
153
  st.session_state.producto,
154
  st.session_state.habilidades,
155
  st.session_state.publico_objetivo,
156
+ st.session_state.creatividad,
157
+ st.session_state.incluir_niveles_conciencia
158
  )
159
  # Guardar en session_state
160
  st.session_state.perfil_cliente = perfil_cliente
 
186
  st.download_button(
187
  label="Descargar Perfil",
188
  data=st.session_state.perfil_cliente,
189
+ file_name="cliente_ideal.md",
190
+ mime="text/markdown"
191
  )
192
  else:
193
  st.warning("Por favor, completa los campos de producto y habilidades antes de generar el perfil.")
consciousness_levels.py ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Diccionario de niveles de conciencia según el modelo de Eugene Schwartz
2
+ CONSCIOUSNESS_LEVELS = {
3
+ "Desconocido": {
4
+ "estado_mental": "La persona no está consciente de que tiene un problema o necesidad.",
5
+ "ejemplo": "Alguien que no sabe que su negocio necesita mejorar sus campañas de marketing o que el copywriting es un factor clave para sus ventas.",
6
+ "estrategia": "Hacer que la audiencia tome conciencia de que tiene un problema. No mencionar el producto o servicio, sino enfocarse en los dolores, frustraciones o desafíos que están experimentando sin saberlo.",
7
+ "preguntas_clave": [
8
+ "¿Qué problemas tiene esta persona que aún no reconoce?",
9
+ "¿Qué señales o síntomas está experimentando sin relacionarlos con el problema real?",
10
+ "¿Qué creencias limitantes le impiden ver el problema?",
11
+ "¿Qué consecuencias negativas está experimentando sin entender su origen?"
12
+ ],
13
+ "enfoque_mensaje": "Crear conciencia del problema"
14
+ },
15
+
16
+ "Consciente_del_problema": {
17
+ "estado_mental": "La persona ahora es consciente de que tiene un problema, pero aún no sabe cómo resolverlo.",
18
+ "ejemplo": "Alguien que sabe que sus correos de lanzamiento no están generando suficientes ventas, pero no sabe cómo mejorar su copywriting.",
19
+ "estrategia": "Hablar sobre el problema y cómo afecta la vida del cliente. Empezar a introducir soluciones, pero sin enfocarse en un producto o servicio específico.",
20
+ "preguntas_clave": [
21
+ "¿Cómo está intentando resolver el problema actualmente?",
22
+ "¿Qué soluciones ha probado que no han funcionado?",
23
+ "¿Qué impacto emocional tiene este problema en su vida diaria?",
24
+ "¿Qué consecuencias negativas está experimentando por no resolver el problema?"
25
+ ],
26
+ "enfoque_mensaje": "Mostrar la urgencia del problema"
27
+ },
28
+
29
+ "Consciente_de_la_solucion": {
30
+ "estado_mental": "La persona ya sabe que existen soluciones para su problema, pero aún no sabe cuál elegir.",
31
+ "ejemplo": "Alguien que sabe que puede mejorar sus correos con IA o estrategias de copywriting, pero no sabe qué herramienta o método es el mejor.",
32
+ "estrategia": "Presentar diferentes soluciones (como cursos, herramientas, métodos) y destacar los beneficios generales sin entrar en detalles específicos de la oferta aún.",
33
+ "preguntas_clave": [
34
+ "¿Qué soluciones está considerando actualmente?",
35
+ "¿Qué criterios está utilizando para evaluar las diferentes opciones?",
36
+ "¿Qué dudas o confusiones tiene sobre las soluciones disponibles?",
37
+ "¿Qué información necesita para tomar una decisión informada?"
38
+ ],
39
+ "enfoque_mensaje": "Presentar las soluciones disponibles"
40
+ },
41
+
42
+ "Consciente_del_producto": {
43
+ "estado_mental": "La persona conoce tu producto o servicio, pero aún no está completamente convencida de que sea la mejor opción para ella.",
44
+ "ejemplo": "Alguien que ha oído hablar de tu herramienta de IA para copywriting y sabe lo que hace, pero necesita pruebas adicionales para confiar en que es lo que realmente necesita.",
45
+ "estrategia": "Enfocarse en mostrar las características del producto, sus beneficios clave, testimonios, casos de éxito, y cualquier otra evidencia que respalde su efectividad.",
46
+ "preguntas_clave": [
47
+ "¿Qué objeciones o dudas tiene sobre el producto/servicio?",
48
+ "¿Qué evidencia necesita para confiar en la efectividad de la solución?",
49
+ "¿Qué características o beneficios son más importantes para su situación específica?",
50
+ "¿Cómo compara esta solución con otras alternativas que está considerando?"
51
+ ],
52
+ "enfoque_mensaje": "Probar la superioridad de tu oferta"
53
+ },
54
+
55
+ "Consciente_de_la_compra": {
56
+ "estado_mental": "La persona ya está completamente informada sobre tu producto, y solo necesita un pequeño empujón o incentivo para tomar la decisión de compra.",
57
+ "ejemplo": "Alguien que conoce bien tu herramienta de IA para copywriting y está listo para comprar, pero necesita ver una oferta atractiva o algún detalle final que lo convenza de tomar acción.",
58
+ "estrategia": "Proporcionar un llamado a la acción claro, ofreciendo algo adicional como un descuento, un bono, una oferta limitada o alguna urgencia para motivar la compra inmediata.",
59
+ "preguntas_clave": [
60
+ "¿Qué factores podrían estar retrasando su decisión de compra?",
61
+ "¿Qué incentivos o garantías necesita para sentirse seguro al realizar la compra?",
62
+ "¿Qué proceso de compra prefiere (suscripción, pago único, prueba gratuita)?",
63
+ "¿Qué preocupaciones finales necesita resolver antes de comprar?"
64
+ ],
65
+ "enfoque_mensaje": "Facilitar la decisión de compra"
66
+ }
67
+ }
68
+
69
+ def get_consciousness_analysis_format():
70
+ """
71
+ Retorna el formato para el análisis de los niveles de conciencia
72
+ """
73
+ return """
74
+ **Análisis de los 5 Niveles de Conciencia**
75
+
76
+ 1. **Nivel Desconocido**:
77
+ - Estado actual: [Describir cómo se encuentra la persona en este nivel]
78
+ - Pensamientos típicos: [Frases o ideas que suele tener]
79
+ - Señales que experimenta: [Síntomas o situaciones que vive sin reconocer el problema]
80
+ - Mensaje efectivo: [Tipo de mensaje que resonaría con la persona en este nivel]
81
+
82
+ 2. **Nivel Consciente del Problema**:
83
+ - Estado actual: [Describir cómo se encuentra la persona en este nivel]
84
+ - Frustraciones principales: [Qué le molesta o preocupa específicamente]
85
+ - Soluciones intentadas: [Qué ha probado sin éxito]
86
+ - Mensaje efectivo: [Tipo de mensaje que resonaría con la persona en este nivel]
87
+
88
+ 3. **Nivel Consciente de la Solución**:
89
+ - Estado actual: [Describir cómo se encuentra la persona en este nivel]
90
+ - Alternativas que considera: [Qué opciones está evaluando]
91
+ - Criterios de evaluación: [Qué factores son importantes en su decisión]
92
+ - Mensaje efectivo: [Tipo de mensaje que resonaría con la persona en este nivel]
93
+
94
+ 4. **Nivel Consciente del Producto**:
95
+ - Estado actual: [Describir cómo se encuentra la persona en este nivel]
96
+ - Objeciones principales: [Dudas específicas sobre el producto/servicio]
97
+ - Evidencia que busca: [Qué pruebas necesita para confiar]
98
+ - Mensaje efectivo: [Tipo de mensaje que resonaría con la persona en este nivel]
99
+
100
+ 5. **Nivel Consciente de la Compra**:
101
+ - Estado actual: [Describir cómo se encuentra la persona en este nivel]
102
+ - Factores de decisión final: [Qué determinará su compra]
103
+ - Incentivos efectivos: [Qué ofertas o garantías le motivarían]
104
+ - Mensaje efectivo: [Tipo de mensaje que resonaría con la persona en este nivel]
105
+ """
106
+
107
+ def get_consciousness_levels_description():
108
+ """
109
+ Retorna una descripción general de los niveles de conciencia
110
+ """
111
+ return """
112
+ Los 5 niveles de conciencia representan las etapas por las que pasa una persona en su proceso de toma de decisiones:
113
+
114
+ 1. **Desconocido**: No sabe que tiene un problema
115
+ 2. **Consciente del problema**: Reconoce el problema pero no sabe cómo resolverlo
116
+ 3. **Consciente de la solución**: Conoce posibles soluciones pero no sabe cuál elegir
117
+ 4. **Consciente del producto**: Conoce tu producto pero no está convencido
118
+ 5. **Consciente de la compra**: Está listo para comprar pero necesita un incentivo final
119
+ """
prompts.py CHANGED
@@ -179,7 +179,7 @@ Ensure your buyer persona thoroughly addresses these questions to create an accu
179
  ---
180
 
181
  This prompt ensures the ideal customer aligns with your interests and skills and will be a good prospect for your products/services."""
182
- def create_instruction(product_service, skills, target_audience=None, gender=None):
183
  # Preparar la información del público objetivo si se proporciona
184
  target_audience_info = ""
185
  if target_audience:
@@ -195,6 +195,23 @@ def create_instruction(product_service, skills, target_audience=None, gender=Non
195
  else:
196
  gender_instruction = "\n\nElige un solo género (hombre o mujer) para el perfil y mantén la concordancia de género en todo el texto."
197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  return (
199
  f"{system_prompt}\n\n"
200
  f"Create a detailed buyer persona for someone who would be interested in {product_service} and would resonate with my skills in {skills}. Focus on identifying the ideal customer "
@@ -204,5 +221,5 @@ def create_instruction(product_service, skills, target_audience=None, gender=Non
204
  f"IMPORTANTE: Tu respuesta DEBE seguir el formato del ejemplo proporcionado en [FORMAT] y [EXAMPLE], pero utiliza viñetas (- o *) para listar elementos en las secciones como Miedos, Inseguridades, Culpa, Problemas, Frustraciones, Valores e Intereses. \n\n"
205
  f"Usa formato markdown con **negritas** para destacar conceptos importantes y organiza el texto para que sea fácil de leer. \n\n"
206
  f"Asegúrate de que la respuesta esté completamente en español y mantenga la concordancia de género en todo el texto según el perfil elegido.\n\n"
207
- f"NO incluyas ningún texto introductorio, análisis adicional, ni conclusiones. Proporciona SOLO el perfil del cliente ideal siguiendo el formato especificado.\n\n"
208
  )
 
179
  ---
180
 
181
  This prompt ensures the ideal customer aligns with your interests and skills and will be a good prospect for your products/services."""
182
+ def create_instruction(product_service, skills, target_audience=None, gender=None, include_consciousness_levels=False):
183
  # Preparar la información del público objetivo si se proporciona
184
  target_audience_info = ""
185
  if target_audience:
 
195
  else:
196
  gender_instruction = "\n\nElige un solo género (hombre o mujer) para el perfil y mantén la concordancia de género en todo el texto."
197
 
198
+ # Añadir instrucciones para niveles de conciencia si se solicita
199
+ consciousness_instruction = ""
200
+ if include_consciousness_levels:
201
+ from consciousness_levels import get_consciousness_analysis_format, get_consciousness_levels_description
202
+ consciousness_instruction = f"""
203
+
204
+ Además, incluye una sección adicional llamada "Análisis de los 5 Niveles de Conciencia" donde analizarás al cliente ideal desde estos cinco niveles de conciencia de Eugene Schwartz:
205
+
206
+ {get_consciousness_levels_description()}
207
+
208
+ Utiliza el siguiente formato para esta sección:
209
+
210
+ {get_consciousness_analysis_format()}
211
+
212
+ Esta sección debe ser profunda y revelar cómo evoluciona la mentalidad del cliente ideal a lo largo de su proceso de toma de decisiones, desde que no conoce tu producto hasta que está listo para comprarlo.
213
+ """
214
+
215
  return (
216
  f"{system_prompt}\n\n"
217
  f"Create a detailed buyer persona for someone who would be interested in {product_service} and would resonate with my skills in {skills}. Focus on identifying the ideal customer "
 
221
  f"IMPORTANTE: Tu respuesta DEBE seguir el formato del ejemplo proporcionado en [FORMAT] y [EXAMPLE], pero utiliza viñetas (- o *) para listar elementos en las secciones como Miedos, Inseguridades, Culpa, Problemas, Frustraciones, Valores e Intereses. \n\n"
222
  f"Usa formato markdown con **negritas** para destacar conceptos importantes y organiza el texto para que sea fácil de leer. \n\n"
223
  f"Asegúrate de que la respuesta esté completamente en español y mantenga la concordancia de género en todo el texto según el perfil elegido.\n\n"
224
+ f"NO incluyas ningún texto introductorio, análisis adicional, ni conclusiones. Proporciona SOLO el perfil del cliente ideal siguiendo el formato especificado.{consciousness_instruction}\n\n"
225
  )