JeCabrera commited on
Commit
4beeb9c
·
verified ·
1 Parent(s): 6f7d8a1

Update format/format.py

Browse files
Files changed (1) hide show
  1. format/format.py +1 -373
format/format.py CHANGED
@@ -168,231 +168,6 @@ buyer_persona_formats = {
168
  6. Satisfacer su necesidad de control sobre su futuro profesional
169
  7. Alcanzar un sentido de pertenencia en círculos profesionales de mayor prestigio
170
  """
171
- },
172
-
173
- # Formato para búsqueda de mercado
174
- "Búsqueda": {
175
- "template": """
176
- **1. Nicho:**
177
- [Descripción detallada del nicho de mercado al que se dirige el producto o servicio]
178
-
179
- **2. Avatar:**
180
- [Descripción detallada del cliente ideal, incluyendo demografía, psicografía y comportamientos]
181
-
182
- **3. Meta Primaria:**
183
- [La meta principal que el cliente ideal desea alcanzar]
184
-
185
- **4. Queja Primaria:**
186
- [La frustración o problema principal que experimenta el cliente ideal]
187
-
188
- **5. Metas Secundarias:**
189
- - [Meta secundaria 1]
190
- - [Meta secundaria 2]
191
- - [Meta secundaria 3]
192
-
193
- **6. Quejas Secundarias:**
194
- - [Queja secundaria 1]
195
- - [Queja secundaria 2]
196
- - [Queja secundaria 3]
197
-
198
- **7. Los 5 Principales Puntos de Dolor:**
199
- - [Punto de dolor 1]
200
- - [Punto de dolor 2]
201
- - [Punto de dolor 3]
202
- - [Punto de dolor 4]
203
- - [Punto de dolor 5]
204
-
205
- **8. Gran Deseo Secreto:**
206
- [El deseo profundo que el cliente ideal no suele expresar abiertamente]
207
-
208
- **9. Estilo de vida soñado:**
209
- [Descripción del estilo de vida ideal al que aspira el cliente]
210
-
211
- **10. Los 5 Principales Deseos:**
212
- - [Deseo 1]
213
- - [Deseo 2]
214
- - [Deseo 3]
215
- - [Deseo 4]
216
- - [Deseo 5]
217
-
218
- **11. Objeciones:**
219
- - [Objeción 1]
220
- - [Objeción 2]
221
- - [Objeción 3]
222
-
223
- **12. Miedo más grande:**
224
- [El temor principal que impide al cliente ideal tomar acción]
225
-
226
- **13. Soluciones falsas:**
227
- - [Solución falsa 1]
228
- - [Solución falsa 2]
229
-
230
- **14. Gran Queja de la Solución Existente:**
231
- [La principal crítica que tiene el cliente ideal sobre las soluciones actuales en el mercado]
232
-
233
- **15. Creencias equivocadas:**
234
- - [Creencia equivocada 1]
235
- - [Creencia equivocada 2]
236
-
237
- **16. Alternativas caras:**
238
- - [Alternativa cara 1]
239
- - [Alternativa cara 2]
240
- """,
241
- "description": """
242
- **Formato Búsqueda**
243
-
244
- Este formato se enfoca en la investigación de mercado y el análisis detallado de las necesidades, deseos y objeciones del cliente ideal.
245
-
246
- **Características principales:**
247
- - Estructura organizada por puntos numerados
248
- - Enfoque en metas, quejas y puntos de dolor
249
- - Análisis de objeciones y creencias limitantes
250
- - Exploración de alternativas y soluciones falsas
251
-
252
- **Ideal para:**
253
- - Desarrollo de nuevos productos o servicios
254
- - Investigación de mercado detallada
255
- - Cuando necesitas entender las objeciones y barreras de compra
256
- - Creación de contenido educativo que aborde creencias equivocadas
257
- """,
258
- "example": """
259
- **1. Nicho:**
260
- Profesionales de nivel medio (30-45 años) que buscan mejorar sus habilidades de inglés para avanzar en sus carreras corporativas en empresas multinacionales o con proyección internacional.
261
-
262
- **2. Avatar:**
263
- Carlos es un gerente de proyectos de 38 años con 10 años de experiencia en su campo. Tiene educación universitaria, está casado y tiene un hijo pequeño. Trabaja en una empresa tecnológica en expansión y gana un salario medio-alto. Es ambicioso, orientado a resultados y valora la eficiencia. Su nivel de inglés es intermedio bajo (B1) pero necesita un B2-C1 para las oportunidades que desea.
264
-
265
- **3. Meta Primaria:**
266
- Hablar inglés con fluidez en entornos profesionales para acceder a mejores oportunidades laborales y posible promoción.
267
-
268
- **4. Queja Primaria:**
269
- A pesar de años de estudio intermitente, no logra superar la barrera del inglés intermedio y esto está limitando su crecimiento profesional.
270
-
271
- **5. Metas Secundarias:**
272
- - Poder participar activamente en reuniones internacionales sin sentirse inseguro
273
- - Presentar proyectos en inglés con confianza ante clientes y superiores
274
- - Ampliar su red de contactos profesionales internacionales
275
- - Mejorar su CV para ser más competitivo en el mercado laboral
276
- - Ayudar a su hijo con el inglés en el futuro
277
-
278
- **6. Quejas Secundarias:**
279
- - No tiene tiempo suficiente para estudiar con métodos tradicionales
280
- - Los cursos que ha probado son demasiado genéricos y no se enfocan en su contexto profesional
281
- - Se siente frustrado por invertir dinero en métodos que no dan resultados
282
- - Le cuesta mantener la motivación y constancia en el aprendizaje
283
-
284
- **7. Los 5 Principales Puntos de Dolor:**
285
- - Vergüenza al hablar inglés en reuniones importantes donde están sus jefes
286
- - Frustración al ver cómo compañeros con menos experiencia pero mejor inglés consiguen mejores oportunidades
287
- - Estrés por tener que preparar presentaciones en inglés con mucha antelación
288
- - Ansiedad cuando recibe llamadas inesperadas de clientes internacionales
289
- - Sensación de estancamiento profesional debido a esta barrera lingüística
290
-
291
- **8. Gran Deseo Secreto:**
292
- Ser reconocido como un profesional de clase mundial, respetado internacionalmente por su expertise, no limitado por barreras lingüísticas que ocultan su verdadero potencial.
293
-
294
- **9. Estilo de vida soñado:**
295
- Una carrera internacional con viajes frecuentes, dirigiendo equipos globales, con un salario significativamente mayor que le permita darle a su familia experiencias internacionales y una educación de primer nivel para su hijo.
296
-
297
- **10. Los 5 Principales Deseos:**
298
- - Sentirse seguro y competente al comunicarse en inglés en cualquier contexto profesional
299
- - Obtener un ascenso o posición con mayor responsabilidad y mejor remuneración
300
- - Ser reconocido como un experto en su campo a nivel internacional
301
- - Tener la libertad de elegir entre oportunidades laborales globales
302
- - Proporcionar un mejor futuro y más oportunidades para su familia
303
-
304
- **11. Objeciones:**
305
- - "No tengo tiempo suficiente para dedicarle al aprendizaje del inglés"
306
- - "Ya he gastado dinero en cursos que no funcionaron, ¿por qué este sería diferente?"
307
- - "A mi edad es más difícil aprender un idioma nuevo"
308
-
309
- **12. Miedo más grande:**
310
- Quedarse estancado profesionalmente mientras ve cómo otros avanzan, sintiendo que ha alcanzado su techo por una limitación que podría haber superado.
311
-
312
- **13. Soluciones falsas:**
313
- - Aplicaciones gratuitas de idiomas que prometen fluidez en poco tiempo
314
- - Cursos genéricos de inglés que no se enfocan en vocabulario profesional específico
315
-
316
- **14. Gran Queja de la Solución Existente:**
317
- Los métodos tradicionales de enseñanza de inglés requieren demasiado tiempo, son aburridos y no se adaptan a las necesidades específicas del contexto profesional.
318
-
319
- **15. Creencias equivocadas:**
320
- - "Necesito vivir en un país de habla inglesa para realmente aprender el idioma"
321
- - "Si no aprendí bien inglés en el colegio/universidad, ya es demasiado tarde"
322
-
323
- **16. Alternativas caras:**
324
- - Contratar un tutor privado de inglés para clases personalizadas (costoso y requiere coordinar horarios)
325
- - Tomar un año sabático para estudiar inglés en el extranjero (inviable por responsabilidades familiares y profesionales)
326
- """
327
- },
328
-
329
- # Formato narrativo para contar la historia del cliente ideal
330
- "Storytelling": {
331
- "template": """
332
- **HISTORIA DEL CLIENTE IDEAL**
333
-
334
- **Protagonista:**
335
- [Nombre y breve descripción del cliente ideal]
336
-
337
- **Situación actual:**
338
- [Descripción detallada de la vida actual del cliente, sus circunstancias y contexto]
339
-
340
- **El problema:**
341
- [Narración del problema principal que enfrenta el protagonista en su día a día]
342
-
343
- **Intentos fallidos:**
344
- [Historia de las soluciones que ha intentado y por qué no han funcionado]
345
-
346
- **Momento de descubrimiento:**
347
- [Cómo descubre o descubriría tu solución]
348
-
349
- **Transformación:**
350
- [Cómo cambia su vida después de implementar tu solución]
351
-
352
- **Nuevo estado:**
353
- [Descripción de su nueva realidad y los beneficios que experimenta]
354
- """,
355
- "description": """
356
- **Formato Storytelling**
357
-
358
- Este formato se enfoca en la investigación de mercado y el análisis detallado de las necesidades, deseos y objeciones del cliente ideal.
359
-
360
- **Características principales:**
361
- - Estructura organizada por puntos numerados
362
- - Enfoque en metas, quejas y puntos de dolor
363
- - Análisis de objeciones y creencias limitantes
364
- - Exploración de alternativas y soluciones falsas
365
-
366
- **Ideal para:**
367
- - Desarrollo de nuevos productos o servicios
368
- - Investigación de mercado detallada
369
- - Cuando necesitas entender las objeciones y barreras de compra
370
- - Creación de contenido educativo que aborde creencias equivocadas
371
- """,
372
- "example": """
373
- **HISTORIA DEL CLIENTE IDEAL**
374
-
375
- **Protagonista:**
376
- Ana es una emprendedora de 35 años que dirige su propio estudio de diseño gráfico desde hace tres años. Es creativa, perfeccionista y apasionada por su trabajo.
377
-
378
- **Situación actual:**
379
- Ana trabaja más de 12 horas diarias intentando equilibrar la parte creativa de su negocio con las tareas administrativas. Tiene cinco clientes recurrentes, pero le cuesta conseguir nuevos proyectos. Cada mes es una lucha para cubrir todos los gastos y se siente constantemente estresada por la inestabilidad financiera.
380
-
381
- **El problema:**
382
- Aunque Ana es excelente en su trabajo creativo, no tiene estrategia de marketing definida. Publica ocasionalmente en redes sociales cuando recuerda hacerlo, pero sin un plan coherente. Ha perdido oportunidades porque potenciales clientes no la encuentran o no entienden claramente el valor de sus servicios. Se siente invisible en un mercado saturado.
383
-
384
- **Intentos fallidos:**
385
- Ha probado crear perfiles en todas las redes sociales populares, pero no mantiene ninguno actualizado. Contrató a un freelancer para que le hiciera una página web, pero quedó abandonada sin tráfico. Intentó hacer networking en eventos locales, pero no logró convertir esos contactos en clientes. Cada intento le ha costado tiempo y dinero sin resultados tangibles.
386
-
387
- **Momento de descubrimiento:**
388
- Un día, mientras busca desesperadamente soluciones en internet, Ana encuentra un webinar sobre estrategias de marketing específicas para estudios creativos. Por primera vez, escucha consejos que realmente entienden su situación y ofrecen un camino claro y estructurado para atraer clientes ideales sin sacrificar su tiempo creativo.
389
-
390
- **Transformación:**
391
- Ana implementa el sistema de marketing aprendido, creando contenido estratégico que muestra su expertise. Establece un embudo de ventas simple pero efectivo que convierte visitantes en clientes. Aprende a comunicar el valor de su trabajo de manera que resuena con quienes realmente valoran el diseño de calidad.
392
-
393
- **Nuevo estado:**
394
- Seis meses después, Ana ha duplicado su cartera de clientes y puede ser selectiva con los proyectos que acepta. Ha aumentado sus tarifas un 30% y los clientes pagan sin cuestionar porque entienden el valor que aporta. Trabaja menos horas pero genera más ingresos. El estrés ha disminuido considerablemente y ha recuperado la pasión por su trabajo al poder enfocarse en la parte creativa que realmente ama.
395
- """
396
  }
397
  }
398
 
@@ -585,151 +360,4 @@ validation_questions = {
585
  Ensure your buyer persona thoroughly addresses these questions to create an accurate profile of someone who will value and invest in your offering.
586
  ---
587
  """
588
- }
589
-
590
- # Funciones para manejar el texto crudo y renderizado
591
-
592
- def get_raw_format(format_name):
593
- """
594
- Devuelve el texto crudo (sin renderizar) de un formato específico.
595
-
596
- Args:
597
- format_name (str): Nombre del formato ('Jung's_Avatar', 'Búsqueda', o 'Storytelling')
598
-
599
- Returns:
600
- dict: Diccionario con las claves 'template', 'description' y 'example' conteniendo el texto crudo
601
- """
602
- if format_name not in buyer_persona_formats:
603
- raise ValueError(f"Formato '{format_name}' no encontrado. Formatos disponibles: {', '.join(buyer_persona_formats.keys())}")
604
-
605
- return {
606
- 'template': buyer_persona_formats[format_name]['template'],
607
- 'description': buyer_persona_formats[format_name]['description'],
608
- 'example': buyer_persona_formats[format_name]['example']
609
- }
610
-
611
- def get_rendered_format(format_name, **kwargs):
612
- """
613
- Devuelve el texto renderizado de un formato específico, reemplazando los placeholders
614
- con los valores proporcionados en kwargs.
615
-
616
- Args:
617
- format_name (str): Nombre del formato ('Jung's_Avatar', 'Búsqueda', o 'Storytelling')
618
- **kwargs: Pares clave-valor para reemplazar en el template
619
-
620
- Returns:
621
- str: Texto del template con los placeholders reemplazados
622
- """
623
- if format_name not in buyer_persona_formats:
624
- raise ValueError(f"Formato '{format_name}' no encontrado. Formatos disponibles: {', '.join(buyer_persona_formats.keys())}")
625
-
626
- template = buyer_persona_formats[format_name]['template']
627
-
628
- # Reemplazar placeholders simples
629
- for key, value in kwargs.items():
630
- placeholder = f"[{key}]"
631
- template = template.replace(placeholder, value)
632
-
633
- return template
634
-
635
- def format_for_display(text, disable_accordion=True):
636
- """
637
- Formatea el texto para su visualización, desactivando el comportamiento de acordeón
638
- y asegurando que el formato sea consistente.
639
-
640
- Args:
641
- text (str): El texto a formatear
642
- disable_accordion (bool): Si es True, elimina cualquier marcado que pueda causar comportamiento de acordeón
643
-
644
- Returns:
645
- str: Texto formateado para visualización
646
- """
647
- # Asegurar que los saltos de línea se preserven correctamente
648
- text = text.replace('\n', '<br>')
649
-
650
- # Asegurar que los elementos de lista con viñetas se muestren correctamente
651
- text = text.replace('• ', '&bull; ')
652
-
653
- # Envolver el contenido en un div con estilos que eviten el comportamiento de acordeón
654
- html = f"""
655
- <div class="static-content" style="white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word;">
656
- {text}
657
- </div>
658
- """
659
-
660
- return html
661
-
662
- def fix_storytelling_description():
663
- """
664
- Corrige la descripción del formato Storytelling para que refleje correctamente sus características.
665
- """
666
- buyer_persona_formats["Storytelling"]["description"] = """
667
- **Formato Historia**
668
-
669
- Este formato utiliza la estructura narrativa para contar la historia del cliente ideal, desde su situación problemática hasta la transformación que experimenta con tu solución.
670
-
671
- **Características principales:**
672
- - Enfoque en la narrativa y el viaje del cliente
673
- - Estructura de historia con inicio, nudo y desenlace
674
- - Énfasis en la transformación y el cambio
675
- - Formato ideal para conectar emocionalmente
676
-
677
- **Ideal para:**
678
- - Páginas de ventas y landing pages
679
- - Estudios de caso y testimonios
680
- - Cuando necesitas generar conexión emocional
681
- - Comunicar claramente el antes y después de tu solución
682
- """
683
- return "Descripción del formato Storytelling corregida."
684
-
685
- # Función para generar HTML que muestre el resultado sin acordeón
686
- def get_response_html_wrapper(content, title="Tu Cliente Ideal"):
687
- """
688
- Envuelve el contenido en un div con estilos que evitan el comportamiento de acordeón
689
- y aplica un formato consistente.
690
-
691
- Args:
692
- content (str): El contenido a mostrar
693
- title (str): El título del contenedor
694
-
695
- Returns:
696
- str: HTML formateado para mostrar el contenido
697
- """
698
- return f"""
699
- <div style="padding: 15px; border: 2px solid #3D89B8; border-radius: 8px;
700
- box-shadow: 0 2px 5px rgba(61, 137, 184, 0.1); margin-bottom: 5px;
701
- white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word;">
702
- <h3 style="color: #1A3A5F; padding-bottom: 10px; border-bottom: 1px solid #3D89B8; margin-bottom: 15px;">{title}</h3>
703
- <div>{content}</div>
704
- </div>
705
- """
706
-
707
- # Función para generar el perfil completo
708
- def generate_buyer_persona(format_name, data):
709
- """
710
- Genera un perfil de cliente ideal basado en el formato especificado y los datos proporcionados.
711
-
712
- Args:
713
- format_name (str): Nombre del formato a utilizar
714
- data (dict): Diccionario con los datos para rellenar el template
715
-
716
- Returns:
717
- str: HTML con el perfil de cliente ideal generado y formateado para visualización
718
- """
719
- try:
720
- # Obtener el template renderizado
721
- rendered_text = get_rendered_format(format_name, **data)
722
-
723
- # Formatear para visualización
724
- formatted_html = format_for_display(rendered_text)
725
-
726
- # Envolver en el contenedor de respuesta
727
- result_html = get_response_html_wrapper(formatted_html)
728
-
729
- return result_html
730
-
731
- except Exception as e:
732
- return f"<div class='error'>Error al generar el perfil: {str(e)}</div>"
733
-
734
- # Corregir la descripción del formato Storytelling
735
- fix_storytelling_description()
 
168
  6. Satisfacer su necesidad de control sobre su futuro profesional
169
  7. Alcanzar un sentido de pertenencia en círculos profesionales de mayor prestigio
170
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  }
172
  }
173
 
 
360
  Ensure your buyer persona thoroughly addresses these questions to create an accurate profile of someone who will value and invest in your offering.
361
  ---
362
  """
363
+ }