#!/usr/bin/env python3 """ Completa brandbooks de tenants activos con datos reales de marca (webs, IG, FB, LinkedIn, oferta, voz, ads, blog, compliance). Corrige handles numéricos / webs erróneas. Preserva kit visual (colores/fuentes/assets). """ from __future__ import annotations import json import re import urllib.request from pathlib import Path from typing import Any ROOT = Path(__file__).resolve().parents[1] def env(k: str) -> str: for line in (ROOT / ".env.local").read_text().splitlines(): if line.startswith(k + "="): return line.split("=", 1)[1].strip().strip('"').strip("'") return "" URL = env("NEXT_PUBLIC_SUPABASE_URL") KEY = env("SUPABASE_SERVICE_ROLE_KEY") HR = {"apikey": KEY, "Authorization": f"Bearer {KEY}"} HW = {**HR, "Content-Type": "application/json", "Prefer": "return=minimal"} def get(path: str) -> Any: req = urllib.request.Request(f"{URL}/rest/v1/{path}", headers=HR) return json.loads(urllib.request.urlopen(req).read()) def patch(path: str, body: dict) -> None: req = urllib.request.Request( f"{URL}/rest/v1/{path}", data=json.dumps(body).encode(), headers=HW, method="PATCH", ) urllib.request.urlopen(req) def handles( ig: str = "", fb: str = "", li: str = "", blog: str = "", yt: str = "", tiktok: str = "", ) -> dict: return { "instagram": ig, "facebook": fb, "linkedin": li, "tiktok": tiktok, "blog": blog, "youtube": yt, } def channels( ig: str = "", fb: str = "", li: str = "", blog: str = "", yt: str = "", email: str = "", tiktok: str = "", other: str = "", ) -> dict: return { "instagram": ig, "facebook": fb, "linkedin": li, "tiktok": tiktok, "blog": blog, "youtube": yt, "email": email, "other": other, } # --------------------------------------------------------------------------- # PACKS — brand manager packs (datos verificados en webs / Meta / LinkedIn) # --------------------------------------------------------------------------- PACKS: dict[str, dict[str, Any]] = { "4ventures-hub": { "brand_name": "4Ventures", "website": "https://4ventures.es/", "vertical": "Agencia boutique de marketing y ventas", "tagline": "Aceleramos tu crecimiento con estrategia de marketing y ventas", "elevator_pitch": "Agencia boutique que une marketing, ventas y operación para marcas que quieren crecer con sistema (España, EE.UU. y LatAm).", "brand_promise": "Estrategia accionable, creatividades y performance bajo un mismo techo.", "positioning": "Boutique de crecimiento: menos ruido, más sistema comercial y de marca.", "archetype": "El Sabio + El Gobernante (claridad + ejecución)", "mission": "Ayudar a empresas a vender más y mejor con marca, demanda y procesos medibles.", "vision": "Ser el centro de mando de marketing y ventas de marcas ambiciosas.", "values": ["Claridad", "Ejecución", "Transparencia", "Orientación a resultado"], "tone": "Directo, experto, cercano a founders y directores de marketing; sin jerga vacía.", "personality": ["estratégico", "operativo", "claro", "ambicioso"], "voice_do": [ "Hablar de métricas y sistemas", "Mostrar casos y bastidores de ejecución", "Proponer el siguiente paso concreto", ], "voice_dont": [ "Promesas mágicas de viralidad", "Jerga de agencia sin sustancia", "Hablar como consultora genérica", ], "messaging_pillars": [ "Marketing + ventas alineados", "Creatividades con sistema", "Datos y centro de mando", "Equipo boutique", ], "example_good": [ "No necesitás más anuncios: necesitás un sistema que convierta tráfico en pipeline.", ], "example_bad": ["Somos la mejor agencia del mercado 🚀🚀🚀"], "icp": "PYMES y scale-ups B2B/B2C con ticket medio-alto que ya invierten en ads o RRSS y necesitan orden, marca y ROI.", "geo": "España (HQ) · operaciones con clientes en EE.UU. y LatAm", "languages": ["es", "en"], "value_proposition": "Estrategia, creatividades, paid media y CRM/ventas integrados en un centro de mando.", "products_services": [ "Estrategia de marca y go-to-market", "Creatividades Ads + RRSS", "Meta Ads / Google Ads", "RRSS y calendarios editoriales", "SEO / web / inbound", "CRM y procesos comerciales", ], "differentiators": [ "Boutique con ownership real", "Marketing y ventas en el mismo tablero", "Producción creativa propia + performance", ], "proof_points": [ "Portfolio multi-sector (formación, legal, beauty, B2B industrial)", "Operación con Meta, Google y creatividades en Drive por cliente", ], "pillars_rrss": ["ops", "casos", "tips", "equipo", "thought-leadership"], "series_recurrentes": ["Bastidores de campaña", "Errores que matan el ROAS", "Sistema comercial"], "formats_priority": ["carrusel", "reel", "post", "stories"], "channel_handles": handles( ig="https://www.instagram.com/4lincesventures/", fb="https://www.facebook.com/4ventures", li="https://www.linkedin.com/company/4ventures-es/", blog="https://4ventures.es/", ), "channels": channels( ig="Marca, bastidores y prueba social", fb="Comunidad y alcance local", li="Autoridad B2B y captación de clientes agencia", blog="SEO y artículos de método", email="Nurturing y propuestas", ), "ads_usps": [ "Marketing + ventas en un sistema", "Creatividades con ADN de marca", "Reporting accionable", ], "ads_ctas": ["Agendar diagnóstico", "Hablar con el equipo", "Ver método"], "ads_objections": ["Ya tengo agencia", "Es caro", "No tengo tiempo de onboarding"], "ads_angles": ["Orden vs caos", "ROAS con marca", "Equipo senior sin overhead"], "ads_funnel": ["TOFU awareness", "MOFU método", "BOFU diagnóstico"], "linkedin_themes": [ "Go-to-market", "Paid media con marca", "Procesos comerciales", "Leadership de growth", ], "linkedin_formats": ["carrusel método", "caso corto", "opinión founder"], "linkedin_cta": ["Diagnóstico", "Mensaje directo", "Newsletter"], "blog_themes": ["Performance", "Marca", "Ventas", "Stack de marketing"], "blog_seo_keywords": [ "agencia marketing españa", "meta ads agencia", "estrategia go to market", ], "blog_cta": ["Agendar llamada", "Descargar checklist"], "claims_forbidden": ["Garantía de ROAS fijo", "Resultados en X días sin contexto"], "required_disclaimers": ["Resultados dependen de sector, oferta y presupuesto"], "emoji_policy": "Pocos, funcionales; evitar spam de cohetes.", "b2b_offering": "Retainer de marketing integral + proyectos de creatividades y paid media.", "b2c_offering": "", "usp_differentiators": "Centro de mando: marca, creatividades, ads y ventas en un mismo hilo.", "current_priorities": "Captación de clientes con ticket medio-alto y casos publicables.", "jobs_to_be_done": [ "Ordenar marketing disperso", "Subir calidad creativa", "Conectar ads con ventas", ], "buying_triggers": [ "Cambio de agencia", "Caída de ROAS", "Lanzamiento de producto", ], "barriers": ["Miedo a cambiar de proveedor", "Presupuesto fragmentado"], "customer_frustrations": "Agencias que entregan posts sin estrategia ni ownership de pipeline.", "desired_transformation": "Pasar de ruido táctico a un sistema de crecimiento medible.", "freeform_notes": "Operador por defecto marketing@4ventures.es. Hub interno + marca pública 4Ventures / @4lincesventures.", }, "agua-miia": { "brand_name": "Agua Miia", "website": "https://aguamiia.es/", "vertical": "Agua filtrada por ósmosis inversa (hogar, empresa, hostelería)", "tagline": "Agua filtrada por ósmosis inversa para hogar, empresa y hostelería", "elevator_pitch": "Agua Miia lleva agua de alta pureza por ósmosis inversa a hogares, oficinas y hostelería, con instalación y servicio pensados para dejar de comprar garrafas.", "brand_promise": "Agua más pura, más cómoda y con menos plástico de un solo uso.", "positioning": "Ósmosis inversa por suscripción / servicio: pureza + comodidad vs garrafa y filtro básico.", "archetype": "El Cuidador + El Explorador (salud + modernidad)", "mission": "Facilitar acceso a agua de calidad en el punto de consumo.", "vision": "Ser la referencia de agua filtrada inteligente en España.", "values": ["Pureza", "Comodidad", "Sostenibilidad", "Cercanía"], "tone": "Cercano, fresco, confiable; pedagogía suave sobre calidad del agua.", "personality": ["limpio", "moderno", "cercano", "práctico"], "voice_do": [ "Hablar de beneficios cotidianos (sabor, cocina, café, piel)", "Mostrar hogar/oficina reales", "Explicar ósmosis sin tecnicismos extremos", ], "voice_dont": [ "Miedo sanitario exagerado", "Claims médicos no demostrados", "Atacar marcas de agua embotellada con insultos", ], "messaging_pillars": [ "Pureza 99%", "Adiós a las garrafas", "Hogar / empresa / hostelería", "Sabor y hábitos saludables", ], "example_good": [ "El café sabe distinto cuando el agua está bien filtrada. Ósmosis en casa, sin logistics de garrafas.", ], "example_bad": ["Cura enfermedades con nuestra agua"], "icp": "Hogares urbanos conscientes + oficinas y HORECA que quieren agua de calidad sin logística de botellas.", "geo": "España", "languages": ["es"], "value_proposition": "Ósmosis inversa con servicio: agua premium en el grifo, menos plástico, mejor sabor.", "products_services": [ "Equipos de ósmosis inversa", "Instalación y mantenimiento", "Soluciones hogar", "Soluciones empresa", "Soluciones hostelería", ], "differentiators": [ "Enfoque suscripción/servicio", "Cobertura hogar + B2B", "Narrativa anti-garrafa", ], "proof_points": ["+99% purificación comunicada en RRSS", "Presencia IG activa @aguamiia"], "pillars_rrss": ["producto", "hábitos", "antes-después", "B2B hostelería", "sostenibilidad"], "series_recurrentes": ["El agua del café", "Adiós garrafas", "Miia en empresas"], "formats_priority": ["reel", "stories", "carrusel", "post"], "channel_handles": handles( ig="https://www.instagram.com/aguamiia/", fb="https://www.facebook.com/AguaMiia", blog="https://aguamiia.es/", ), "channels": channels( ig="Demanda y prueba de producto", fb="Alcance local y remarketing", blog="SEO y educación sobre ósmosis", email="Leads y nurturing instalación", ), "ads_usps": [ "Ósmosis inversa", "Sin garrafas", "Hogar y negocio", ], "ads_ctas": ["Pedir información", "Calcular ahorro", "WhatsApp"], "ads_objections": ["Ya tengo filtro de jarra", "Es caro", "No quiero obras"], "ads_angles": ["Sabor", "Ahorro vs embotellada", "Oficina sin plástico"], "linkedin_themes": ["Bienestar en la oficina", "HORECA y calidad del agua", "ESG plástico"], "linkedin_formats": ["caso B2B", "carrusel beneficio"], "linkedin_cta": ["Solicitar demo empresa"], "blog_themes": ["Calidad del agua", "Ósmosis vs otros filtros", "Hostelería"], "blog_seo_keywords": [ "ósmosis inversa hogar", "agua filtrada suscripción", "filtro agua oficina", ], "claims_forbidden": [ "Cura o previene enfermedades", "Afirmaciones médicas sin respaldo", ], "required_disclaimers": [ "Beneficios referidos a calidad organoléptica y reducción de residuos, no a pretensiones terapéuticas", ], "b2b_offering": "Equipos y servicio para oficinas, clínicas y hostelería.", "b2c_offering": "Ósmosis para el hogar con instalación.", "usp_differentiators": "Pureza + servicio + menos plástico de un solo uso.", "current_priorities": "Captación hogar y cuentas HORECA/empresa.", "jobs_to_be_done": ["Mejorar sabor", "Eliminar cartera de garrafas", "Imagen sostenible"], "buying_triggers": ["Mudanza", "Nacimiento/familia", "Apertura local"], "customer_frustrations": "Garrafas pesadas, plástico y agua con mal sabor.", "desired_transformation": "Agua buena siempre disponible en el grifo.", "freeform_notes": "Web canónica https://aguamiia.es/ (también responde aguamiia.com). IG @aguamiia.", }, "bps": { "brand_name": "Blue Parrot School", "website": "https://blueparrotschool.com/", "vertical": "Escuela de idiomas (inglés) · B2C + B2B FUNDAE", "tagline": "Inglés real, cultura pop y certificaciones", "elevator_pitch": "Escuela de inglés práctica (Madrid/Málaga + online) con metodología usable, series educativas y preparación oficial Cambridge/Aptis/IELTS; en B2B, Entidad Organizadora FUNDAE.", "brand_promise": "Salir hablando con confianza, no solo aprobando teoría.", "positioning": "Inglés útil + pop culture + certificación seria (vs apps de 15 min).", "archetype": "El Sabio + El Bufón", "mission": "Ayudar a alumnos a hablar inglés con confianza para trabajo, viajes y exámenes.", "vision": "Referencia de inglés práctico y certificaciones en España.", "values": ["Cercanía", "Rigor", "Diversión útil", "Progreso medible"], "tone": "Cercano, divertido y riguroso; pop sin frivolidad.", "personality": ["cercano", "divertido", "riguroso", "pop"], "voice_do": [ "Ejemplos reales y micro-lecciones", "Series FALSE FRIEND / SLANG / MTW", "Dato concreto > adjetivo vacío", ], "voice_dont": [ "Black Friday genérico", "Tono académico seco", "Anglicismos de postureo (boost, unlock)", ], "messaging_pillars": [ "Errores que delatan", "Inglés de la calle / pop", "Certificaciones con método", "Profesor fijo + 60 min", ], "icp": "Adultos 25-45 que necesitan inglés real o certificado; empresas que quieren FUNDAE sin papeleo.", "geo": "Madrid · Málaga · Online (España)", "languages": ["es", "en"], "value_proposition": "Inglés usable desde la primera semana, con camino claro a certificado y B2B FUNDAE llave en mano.", "products_services": [ "Cursos generales e intensivos", "Trinity / IELTS / Cambridge / Aptis", "Inglés oposiciones", "1to1 y online", "In-company + FUNDAE (Entidad Organizadora)", ], "channel_handles": handles( ig="https://www.instagram.com/blueparrotschool/", fb="https://www.facebook.com/blueparrotschool", li="https://www.linkedin.com/company/blue-parrot-school/", blog="https://blueparrotschool.com/", ), "channels": channels( ig="Adquisición B2C y comunidad educativa", fb="Alcance y remarketing cursos", li="Captación B2B RRHH / FUNDAE", blog="SEO exámenes y método", email="Leads y matrículas", ), "ads_usps": [ "Profesor fijo", "Sesiones 60 min", "FUNDAE Entidad Organizadora", "Madrid / Málaga / Online", ], "ads_ctas": ["Test de nivel", "Reservar plaza", "Solicitar presupuesto B2B", "WhatsApp"], "linkedin_themes": [ "FUNDAE sin fricción", "Inglés por vertical (Legal, IT, Financiero)", "ROI formación idiomas", ], "blog_themes": ["False friends", "Preparación exámenes", "Inglés profesional"], "blog_seo_keywords": [ "academia inglés madrid", "preparación cambridge", "cursos inglés fundae", ], "claims_forbidden": ["Garantía de aprobado", "Nivel C1 en X semanas sin matices"], "b2b_offering": "Programas in-company / online con gestión FUNDAE integral.", "b2c_offering": "Cursos adultos, intensivos, 1to1 y preparación de exámenes oficiales.", "usp_differentiators": "Profesor fijo + 60 min + especialización sectorial + FUNDAE propia.", "current_priorities": "Matrículas B2C certificados + captación empresas FUNDAE.", "pillars_rrss": [ "false-friend", "slang", "certificaciones", "método", "comunidad", ], "freeform_notes": "Linktree: https://linktr.ee/blueparrotschool. Preservar DNA B2B FUNDAE ya en brandbook.", }, "brava-dermoestetica": { "brand_name": "BRAVA Dermoestética", "website": "https://www.bravadermoestetica.com/", "vertical": "Clínica de dermoestética / enfermería estética (Madrid)", "tagline": "Realza tu belleza natural", "elevator_pitch": "Clínica de dermoestética avanzada en Barrio de Salamanca (Madrid) liderada por enfermeras especializadas: diagnóstico facial personalizado y tratamientos con resultado natural.", "brand_promise": "Belleza que se nota en vitalidad, no en artificialidad.", "positioning": "Enfermería dermoestética premium y cercana vs clínicas de volumen o estética agresiva.", "archetype": "El Cuidador + El Amante (cuidado + belleza)", "mission": "Devolver confianza con tratamientos seguros, personalizados y naturales.", "vision": "Referencia de dermoestética natural en Madrid Salamanca.", "values": ["Naturalidad", "Seguridad", "Personalización", "Cercanía clínica"], "tone": "Cálido, experto, femenino-elegante; sin miedo ni promesas milagro.", "personality": ["elegante", "cercana", "clínica", "natural"], "voice_do": [ "Educar sobre piel y tratamientos", "Mostrar bastidores con profesionalidad", "Insistir en valoración personalizada", ], "voice_dont": [ "Antes/después engañosos", "Garantizar resultados idénticos", "Lenguaje quirúrgico agresivo", ], "messaging_pillars": [ "Diagnóstico facial", "Resultado natural", "Enfermería especializada", "Tratamientos avanzados", ], "icp": "Mujeres (y hombres) 25-55 en Madrid que buscan dermoestética segura y natural en Salamanca.", "geo": "Calle de Castelló 41, Barrio de Salamanca, Madrid 28001", "languages": ["es"], "value_proposition": "Valoración personalizada + tratamientos de estética avanzada con enfoque enfermero y resultado natural.", "products_services": [ "Limpieza facial profunda", "Peeling", "Dermapen", "Mesoterapia facial / capilar", "PRP capilar", "Polinucleótidos / biorevitalización", "Bioestimuladores", "Pack Piel Renovada", "Valoración / test de piel", ], "differentiators": [ "Equipo de enfermería dermoestética", "Enfoque natural", "Ubicación Salamanca", ], "proof_points": [ "Clínica en Castelló 41", "Comunidad IG @bravadermoestetica", "Presencia Doctoralia", ], "pillars_rrss": [ "educación-piel", "tratamientos", "bastidores-clínica", "resultados-naturales", "comunidad", ], "series_recurrentes": ["Qué necesita tu piel", "Mitos dermoestética", "Día en BRAVA"], "formats_priority": ["reel", "stories", "carrusel", "post"], "channel_handles": handles( ig="https://www.instagram.com/bravadermoestetica/", fb="https://www.facebook.com/BRAVADermoestetica", blog="https://www.bravadermoestetica.com/", ), "channels": channels( ig="Canal principal de captación y confianza", fb="Remarketing local Madrid", blog="Web + test de piel / captación leads", other="Beacons/link-in-bio: https://beacons.ai/bravadermoestetica", ), "ads_usps": [ "Resultado natural", "Valoración personalizada", "Salamanca, Madrid", "Enfermería especializada", ], "ads_ctas": ["Pedir cita", "Test de piel gratis", "WhatsApp", "Reservar valoración"], "ads_objections": ["Miedo a quedar artificial", "Dolor", "Precio", "Primera vez"], "ads_angles": ["Naturalidad", "Primera valoración", "Pack piel renovada"], "linkedin_themes": [], "blog_themes": ["Cuidado facial", "Tratamientos", "Mitos estética"], "blog_seo_keywords": [ "dermoestética madrid", "clínica estética salamanca madrid", "mesoterapia facial madrid", ], "claims_forbidden": [ "Resultados permanentes garantizados", "Sin riesgos", "Equivalencia a cirugía", ], "required_disclaimers": [ "Resultados individuales variables", "Información no sustituye valoración sanitaria", ], "sector_rules": "Publicidad sanitaria responsable; sin promesas milagro; consentimientos de imagen.", "b2c_offering": "Tratamientos faciales y capilares de dermoestética avanzada.", "usp_differentiators": "Belleza natural con criterio clínico de enfermería.", "current_priorities": "Citas valoración + packs faciales en Madrid.", "jobs_to_be_done": ["Mejorar textura/luminosidad", "Rejuvenecer sin artificialidad"], "buying_triggers": ["Evento", "Cambio de estación", "Primera consulta gratis/test"], "customer_frustrations": "Clínicas que empujan tratamientos sin escuchar la piel.", "desired_transformation": "Piel cuidada y confianza sin verse 'hech@'.", "freeform_notes": "Web oficial https://www.bravadermoestetica.com/ (NO usar solo beacons como web). Tel +34 628 625 958.", }, } def pack_legal_delgado() -> dict: return { "brand_name": "Delgado Abogados", "website": "https://abogadosdelgado.es/", "vertical": "Despacho de abogados multidisciplinar · derecho bancario", "tagline": "Despacho multidisciplinar con especial fortaleza en derecho bancario", "elevator_pitch": "Delgado Abogados es un despacho multidisciplinar con fuerte expertise en derecho bancario y atención cercana a particulares y empresas.", "brand_promise": "Asesoramiento legal claro, cercano y orientado a proteger tus derechos.", "positioning": "Abogacía seria y cercana, con foco bancario, frente a despachos fríos o genéricos.", "archetype": "El Cuidador + El Gobernante", "mission": "Defender los intereses de clientes con rigor y cercanía.", "vision": "Ser el despacho de referencia en banca y servicios legales integrales para sus clientes.", "values": ["Rigor", "Cercanía", "Transparencia", "Compromiso"], "tone": "Serio, cercano, autoridad legal sin frialdad ni fear-mongering.", "personality": ["profesional", "cercano", "claro", "protector"], "voice_do": [ "Explicar en lenguaje entendible", "Educar sobre derechos bancarios", "Transmitir calma y control", ], "voice_dont": [ "Garantizar resultados judiciales", "Sensacionalismo", "Atacar a bancos con insultos", ], "messaging_pillars": [ "Derecho bancario", "Casos y educación legal", "Cercanía", "Multidisciplinar", ], "icp": "Particulares y pymes afectados por productos bancarios o que necesitan asesoría legal integral.", "geo": "España (despacho Delgado Abogados — web abogadosdelgado.es)", "languages": ["es"], "value_proposition": "Experiencia en derecho bancario + trato humano + capacidad multidisciplinar.", "products_services": [ "Derecho bancario", "Asesoramiento a particulares", "Asesoramiento a empresas", "Litigación y gestiones asociadas", ], "channel_handles": handles( ig="https://www.instagram.com/delgadoabogados/", fb="https://www.facebook.com/delgadoabogados", li="https://www.linkedin.com/company/abogados-delgado/", blog="https://abogadosdelgado.es/", ), "channels": channels( ig="Educación legal y confianza", fb="Alcance y remarketing local", li="Autoridad profesional y B2B suave", blog="SEO jurídico / contenidos", ), "ads_usps": ["Expertos en derecho bancario", "Trato cercano", "Despacho multidisciplinar"], "ads_ctas": ["Consulta", "Llamar", "WhatsApp", "Pedir información"], "ads_objections": ["Es caro", "No sé si tengo caso", "Miedo a juzgados"], "linkedin_themes": ["Derecho bancario", "Actualidad jurídica", "Consejos legales"], "blog_themes": ["Cláusulas abusivas", "Reclamaciones bancarias", "Guías prácticas"], "blog_seo_keywords": [ "abogados derecho bancario", "reclamación banco", "despacho abogados", ], "claims_forbidden": [ "Garantía de ganar el caso", "Porcentajes de éxito inventados", ], "required_disclaimers": [ "Cada caso requiere estudio individualizado", "La información no constituye asesoramiento legal formal", ], "sector_rules": "Publicidad de servicios jurídicos: veracidad, no garantismo de resultado.", "pillars_rrss": ["educativo-legal", "bancario", "casos", "confianza"], "b2c_offering": "Defensa y asesoramiento a particulares (foco bancario).", "b2b_offering": "Asesoramiento legal a empresas según áreas del despacho.", "usp_differentiators": "Especialización bancaria + cercanía.", "current_priorities": "Leads de consultas bancarias y branding de confianza.", "jobs_to_be_done": ["Entender si tengo caso", "Reclamar al banco", "Sentirme acompañado"], "buying_triggers": ["Carta del banco", "Hipoteca/cláusula", "Conflicto legal"], "customer_frustrations": "Lenguaje jurídico opaco y despachos inaccesibles.", "desired_transformation": "Claridad y defensa efectiva de mis derechos.", "freeform_notes": "Web canónica https://abogadosdelgado.es/. LinkedIn company/abogados-delgado (no confundir con otros 'Delgado Abogados').", } PACKS["delgado-abogados"] = pack_legal_delgado() PACKS["dtatf"] = { "brand_name": "De Tú a Tú Formación", "website": "https://detuatuformacion.es/", "vertical": "Formación profesional, soft skills, IA y empleabilidad (FUNDAE / abierta)", "tagline": "Formación para la nueva era profesional", "elevator_pitch": "detuatuformación diseña experiencias de aprendizaje innovadoras para profesionales y empresas: IA, liderazgo, inclusión, soft skills y empleabilidad, con acreditaciones FUNDAE y certificados de profesionalidad.", "brand_promise": "Aprender de forma cercana, práctica y transformadora.", "positioning": "Formación innovadora y humana (de tú a tú) frente a academias frías o genéricas.", "archetype": "El Cuidador + El Sabio", "mission": "Impulsar el crecimiento de personas y organizaciones con aprendizaje personalizado.", "vision": "Ser el aliado de referencia en formación que transforma vidas y equipos.", "values": ["Cercanía", "Innovación", "Impacto", "Inclusión"], "origin_story": "Nace en 2015 de la visión de Meti Manuel y Marta Martín; crece con formación en abierto y proyectos in-company.", "tone": "Cercano, práctico, motivador; transformación laboral sin postureo.", "personality": ["cercano", "innovador", "humano", "profesional"], "voice_do": [ "Hablar de transformación real en el puesto de trabajo", "Mostrar cursos y convocatorias con claridad", "Tono de tú a tú", ], "voice_dont": [ "Confundir marca con ECP / cuidadores", "Promesas de empleo garantizado", "Jerga vacía de 'revolucionar tu vida' sin oferta", ], "messaging_pillars": [ "Cursos (IA, liderazgo, soft skills)", "Empleabilidad", "Testimonios", "Convocatorias", "Tips formación", ], "icp": "Profesionales que quieren upskilling y empresas que buscan formación in-company / FUNDAE.", "geo": "Madrid (Calle Araucaria 22) · online · España", "languages": ["es"], "value_proposition": "Formación práctica e innovadora, cercana, con foco en IA, liderazgo e inclusión, para personas y empresas.", "products_services": [ "Cursos en abierto", "Formación empresas / in-company", "IA para profesionales y docentes", "Liderazgo y soft skills", "Inclusión LGTBIQ+ / protocolos RD", "FUNDAE (entidad formadora/organizadora)", "Certificados de profesionalidad (acreditación)", ], "differentiators": [ "Metodología experiencial", "De tú a tú", "Catálogo IA + skills humanas", "Marca hermana separada de ECP", ], "proof_points": [ "Entidad FUNDAE", "Centro acreditado certificados profesionalidad (CAM/SEPE según oferta)", "Sede Madrid Tetuán", ], "pillars_rrss": ["cursos", "empleabilidad", "testimonios", "convocatorias", "tips-formacion"], "series_recurrentes": ["Curso de la semana", "Tips empleabilidad", "IA en el trabajo"], "channel_handles": handles( ig="https://www.instagram.com/detuatuformacion/", fb="https://www.facebook.com/detuatuformacion", li="https://www.linkedin.com/company/detuatuformacion/", blog="https://detuatuformacion.es/blog/", ), "channels": channels( ig="Comunidad alumnos y lanzamientos", fb="Convocatorias y familias/profesionales", li="B2B empresas y thought leadership formación", blog="SEO y contenidos de upskilling", email="Leads y convocatorias", ), "ads_usps": [ "Formación práctica", "IA y skills del futuro", "FUNDAE / bonificable (cuando aplique)", "Cercanía de tú a tú", ], "ads_ctas": ["Más información", "Reservar plaza", "Hablar con un asesor", "Ver cursos"], "ads_objections": ["No tengo tiempo", "Ya hice un curso similar", "Precio"], "ads_angles": ["Docencia", "IA", "Liderazgo femenino", "Inclusión", "Empleabilidad"], "linkedin_themes": [ "Upskilling IA", "Cultura y liderazgo", "FUNDAE", "Aprendizaje experiencial", ], "linkedin_formats": ["artículo corto", "carrusel curso", "caso empresa"], "linkedin_cta": ["Solicitar info in-company", "Ver catálogo"], "blog_themes": ["IA en la empresa", "Liderazgo", "Empleabilidad", "Inclusión"], "blog_seo_keywords": [ "formación empresas fundae", "curso inteligencia artificial empresas", "formación liderazgo", ], "claims_forbidden": ["Empleo garantizado", "Bonificación FUNDAE sin condiciones"], "required_disclaimers": [ "Condiciones FUNDAE según crédito y normativa vigente", "Plazas y fechas según convocatoria", ], "b2b_offering": "Formación in-company y programas bonificables para equipos.", "b2c_offering": "Cursos en abierto para profesionales.", "usp_differentiators": "Innovación pedagógica + cercanía + catálogo IA/skills.", "current_priorities": "Captación cursos IA/docencia y cuentas empresa.", "jobs_to_be_done": ["Actualizar skills", "Bonificar formación", "Transformar equipos"], "buying_triggers": ["Crédito FUNDAE a punto de caducar", "Nueva herramienta IA", "Convocatoria"], "customer_frustrations": "Cursos teóricos que no se aplican al día a día.", "desired_transformation": "Competencias aplicables y confianza profesional.", "freeform_notes": "NO mezclar creatividades/Meta/Drive con ECP. LinkedIn company/detuatuformacion. Email info@detuatuformacion.es · +34 630 54 93 74.", } PACKS["ecp"] = { "brand_name": "ECP · Escuela de Cuidadores Profesionales", "website": "https://escueladecuidadoresprofesionales.com/", "vertical": "Formación sociosanitaria · certificados de profesionalidad (cuidados)", "tagline": "Formación oficial para cuidadores profesionales", "elevator_pitch": "Escuela especializada en formación de cuidadores profesionales con certificaciones de profesionalidad (SEPE/CAM) en atención sociosanitaria.", "brand_promise": "Formarte con rigor para cuidar con profesionalidad.", "positioning": "Escuela especializada en cuidadores vs academias generalistas o DTATF (marca hermana de soft skills/IA).", "archetype": "El Cuidador + El Sabio", "mission": "Profesionalizar el cuidado con formación oficial y cercana.", "vision": "Referencia en formación sociosanitaria de cuidadores en España.", "values": ["Cuidado", "Rigor", "Empleabilidad", "Cercanía"], "tone": "Cercano, humano, claro; respeto por el sector sociosanitario.", "personality": ["humano", "profesional", "claro", "motivador"], "voice_do": [ "Hablar de vocación y profesionalización", "Explicar certificados y salidas", "Testimonios de alumnos", ], "voice_dont": [ "Mezclar con De Tú a Tú Formación", "Prometer empleo fijo", "Tonos infantiles o melodramáticos", ], "messaging_pillars": [ "Certificados de profesionalidad", "Atención sociosanitaria", "Empleabilidad", "Vocación de cuidado", ], "icp": "Personas que quieren trabajar o profesionalizarse como cuidadores; reconversión laboral sociosanitaria.", "geo": "España (formación ECP)", "languages": ["es"], "value_proposition": "Formación especializada en cuidados con vía a certificación oficial.", "products_services": [ "Certificados de profesionalidad atención sociosanitaria", "Formación para cuidadores profesionales", "Itinerarios de empleabilidad sociosanitaria", ], "channel_handles": handles( ig="https://www.instagram.com/escuelaecp/", fb="https://www.facebook.com/Escueladecuidadoresprofesionales", li="https://www.linkedin.com/company/ecp-escuela-de-cuidadores-profesionales/", blog="https://escueladecuidadoresprofesionales.com/", ), "channels": channels( ig="Captación y comunidad @escuelaecp", fb="Convocatorias y alcance", li="Autoridad sector sociosanitario", blog="SEO certificados / cuidadores", ), "ads_usps": [ "Especialistas en cuidadores", "Certificación profesionalidad", "Formación práctica", ], "ads_ctas": ["Más información", "Reservar plaza", "WhatsApp"], "linkedin_themes": ["Profesionalización del cuidado", "Formación sociosanitaria"], "blog_themes": ["Salidas profesionales", "Certificados", "Cuidados"], "blog_seo_keywords": [ "certificado profesionalidad atención sociosanitaria", "curso cuidador profesional", "escuela cuidadores", ], "claims_forbidden": ["Empleo garantizado", "Título universitario"], "required_disclaimers": ["Requisitos y reconocimiento según convocatoria y normativa"], "pillars_rrss": ["formacion", "empleabilidad", "testimonios", "convocatorias"], "b2c_offering": "Cursos y certificados para futuros cuidadores profesionales.", "usp_differentiators": "Especialización exclusiva en cuidadores (separada de DTATF).", "current_priorities": "Convocatorias CP y captación Meta/IG.", "jobs_to_be_done": ["Conseguir certificado", "Reorientar carrera al cuidado"], "buying_triggers": ["Nueva convocatoria", "Desempleo / reconversión"], "customer_frustrations": "Formación genérica que no habilita para el sector.", "desired_transformation": "Cualificación reconocida para trabajar cuidando.", "freeform_notes": "Marca hermana separada: DTATF. No mezclar Meta/Drive/creatividades.", } PACKS["equinsa-parking"] = { "brand_name": "Equinsa Parking", "website": "https://equinsaparking.com/", "vertical": "Fabricante de sistemas de gestión de aparcamientos", "tagline": "Innovación y eficiencia en la gestión de aparcamiento", "elevator_pitch": "Equinsa Parking fabrica e integra sistemas de gestión de aparcamientos (acceso, pago, guiado, LPR, ticketless) con +30 años de especialización y miles de instalaciones.", "brand_promise": "Tecnología que humaniza el aparcamiento: eficiente, fiable y sin fricciones.", "positioning": "Especialista industrial en parking systems (B2B) frente a integradores genéricos.", "archetype": "El Creador + El Gobernante (tecnología + control)", "mission": "Optimizar la operación de aparcamientos con tecnología propia y SAT nacional.", "vision": "Referencia internacional en smart parking.", "values": ["Fiabilidad", "Innovación", "Servicio", "Especialización"], "tone": "Técnico-claro, B2B, confiable; sin hype startup vacío.", "personality": ["industrial", "preciso", "innovador", "cercano-B2B"], "voice_do": [ "Hablar de instalaciones y gamas (Sense PRO, Essens, Espark)", "Beneficios para operador y usuario", "Datos de experiencia (+instalaciones, países)", ], "voice_dont": ["Promesas smart city vacías", "Confundir con Equinsa Networking"], "messaging_pillars": [ "Gamas de producto", "Smart parking / ciudades", "SAT y fiabilidad", "Casos de instalación", ], "icp": "Operadores de parking, constructoras, ayuntamientos, hospitales, centros comerciales, parkings privados.", "geo": "Torrejón de Ardoz (Madrid) · España · presencia internacional", "languages": ["es", "en"], "value_proposition": "Sistemas propios de parking + I+D + SAT nacional para maximizar operación y experiencia de usuario.", "products_services": [ "Gama Sense PRO", "Gama Essens", "Gama Espark (ticketless)", "Control de acceso y pago", "Guiado de vehículos", "Reconocimiento de matrículas (LPR)", "Centralización / on-line", "App móvil", "SAT postventa", ], "differentiators": [ "+30 años especializados solo en parking", "I+D propio", "SAT propio líder", "Miles de instalaciones", ], "proof_points": [ "ISO 9001", "+1700 / +3500 instalaciones (según materiales)", "Sede C. Primavera 16, Torrejón de Ardoz", ], "pillars_rrss": ["producto", "instalaciones", "tips-parking", "b2b", "innovacion"], "channel_handles": handles( li="https://www.linkedin.com/company/equinsa-parking/", yt="https://www.youtube.com/channel/UCWuygaSlmr2fpJKx8UIc3lA", blog="https://equinsaparking.com/", ), "channels": channels( li="Canal principal B2B y captación", yt="Demo productos e instalaciones", blog="SEO soluciones parking", email="Presupuestos y proyectos", other="Contacto sat@equinsa.es · +34 618 18 89 24", ), "ads_usps": [ "Especialistas en parking", "Tecnología propia", "SAT nacional", "Ticketless / LPR / guiado", ], "ads_ctas": ["Solicitar demo", "Hablar con comercial", "Descargar ficha", "Presupuesto"], "ads_objections": ["Ya tengo proveedor", "Capex alto", "Integración compleja"], "linkedin_themes": [ "Smart parking", "Ticketless", "Experiencia de usuario", "Casos de éxito", "Mantenimiento SAT", ], "linkedin_formats": ["caso instalación", "ficha gama", "vídeo producto"], "linkedin_cta": ["Pedir demo", "Contactar ventas"], "blog_themes": ["Gestión de aparcamientos", "Movilidad", "Tecnología LPR"], "blog_seo_keywords": [ "sistemas gestión aparcamiento", "parking ticketless", "reconocimiento matrículas parking", ], "claims_forbidden": ["Garantía de ocupación 100%", "Compatibilidad universal sin estudio"], "b2b_offering": "Diseño, suministro e integración de sistemas de parking + SAT.", "usp_differentiators": "Especialización exclusiva + producto propio + SAT.", "current_priorities": "Leads B2B LinkedIn/Google Ads y notoriedad de gamas.", "jobs_to_be_done": ["Modernizar parking", "Reducir colas", "Centralizar operación"], "buying_triggers": ["Obra nueva", "Renovación equipos", "Quejas de usuarios"], "customer_frustrations": "Sistemas obsoletos y SAT lento.", "desired_transformation": "Parking fluido, medible y fácil de operar.", "freeform_notes": "Web https://equinsaparking.com/ (grupo también equinsa.es). LinkedIn company/equinsa-parking. IG no encontrado con handle propio fiable — dejar vacío.", } PACKS["fbm-abogados"] = { "brand_name": "FBM & Asociados", "website": "https://fbmasociados.com/", "vertical": "Despacho de abogados · herencias y sucesiones", "tagline": "Abogados especialistas en herencias y sucesiones", "elevator_pitch": "Franco Blanco Menchaca & Asociados es un despacho especializado en derecho sucesorio que ofrece servicio llave en mano tras un fallecimiento, con cobertura nacional.", "brand_promise": "Acompañamiento empático y exhaustivo cuando más se necesita.", "positioning": "Especialistas en herencias (llave en mano) vs generalistas.", "archetype": "El Cuidador + El Sabio", "mission": "Guiar a familias en procesos sucesorios con claridad, empatía y rigor.", "vision": "Referencia nacional en derecho sucesorio cercano.", "values": ["Empatía", "Rigor", "Cercanía", "Discreción"], "tone": "Empático, claro, autoridad en sucesiones; humano sin sensacionalismo.", "personality": ["empático", "claro", "profesional", "discreto"], "voice_do": [ "Acompañar sin alarmismo", "Explicar pasos del proceso sucesorio", "Ofrecer tranquilidad y siguiente paso", ], "voice_dont": [ "Garantizar resultados", "Usar dolor familiar como clickbait", "Lenguaje frío de bufete elitista", ], "messaging_pillars": ["Herencias", "Educativo-legal", "Llave en mano", "Cobertura nacional"], "icp": "Familias y herederos que necesitan gestionar una herencia o planificar sucesión; también gestión inmobiliaria asociada.", "geo": "España (Madrid, Bilbao, Vitoria, red en crecimiento)", "languages": ["es"], "value_proposition": "Asesoramiento sucesorio personal y asistencial, llave en mano, a nivel nacional.", "products_services": [ "Herencias y sucesiones", "Instancias / tramitación hereditaria", "Asesoramiento post-fallecimiento", "Gestión inmobiliaria asociada", "Otras ramas del derecho (despacho multidisciplinar con foco sucesorio)", ], "channel_handles": handles( ig="https://www.instagram.com/fbmasociados/", blog="https://fbmasociados.com/", ), "channels": channels( ig="Educación y cercanía @fbmasociados", blog="SEO herencias / guías", email="Captación consultas", other="madrid@fbmasociados.com · +34 911 97 18 64", ), "ads_usps": [ "Especialistas en herencias", "Servicio llave en mano", "Cobertura nacional", "Trato humano", ], "ads_ctas": ["Consulta", "Pedir información", "Llamar", "WhatsApp"], "ads_objections": ["Es caro", "No sé por dónde empezar", "Ya tengo notario"], "linkedin_themes": ["Derecho sucesorio", "Planificación hereditaria", "Guías prácticas"], "blog_themes": ["Pasos de una herencia", "Impuestos sucesiones", "Preguntas frecuentes"], "blog_seo_keywords": [ "abogados herencias", "gestión sucesiones", "tramitar herencia españa", ], "claims_forbidden": ["Garantía de resultado", "Plazos fijos universales"], "required_disclaimers": [ "Cada herencia es distinta", "La información no sustituye consulta personalizada", ], "sector_rules": "Publicidad jurídica prudente; sensibilidad con duelo.", "pillars_rrss": ["herencias", "educativo-legal", "casos", "confianza"], "b2c_offering": "Tramitación y asesoramiento sucesorio a familias.", "usp_differentiators": "Especialización sucesoria + llave en mano + red nacional.", "current_priorities": "Leads de herencias y branding de confianza.", "jobs_to_be_done": ["Tramitar herencia sin caos", "Entender impuestos y plazos"], "buying_triggers": ["Fallecimiento reciente", "Conflicto entre herederos"], "customer_frustrations": "Procesos opacos y falta de acompañamiento emocional.", "desired_transformation": "Herencia resuelta con claridad y menos carga mental.", "freeform_notes": "Razón social Franco Blanco Menchaca & Asociados. Web https://fbmasociados.com/. IG @fbmasociados.", } PACKS["halal-safety"] = { "brand_name": "Halal Safety", "website": "https://www.halalsafety.com/", "vertical": "Certificación Halal (España / Europa / internacional)", "tagline": "Certificación Halal reconocida a nivel internacional", "elevator_pitch": "Halal Safety es una entidad de certificación Halal con +15 años de trayectoria que ayuda a empresas alimentarias y afines a obtener y mantener certificación reconocida internacionalmente.", "brand_promise": "Certificación Halal rigurosa, clara y con reconocimiento internacional.", "positioning": "Entidad de certificación seria y global vs sellos locales poco reconocidos.", "archetype": "El Gobernante + El Sabio (estándar + pedagogía)", "mission": "Facilitar el acceso de empresas a mercados Halal con certificación confiable.", "vision": "Referencia europea de certificación Halal de confianza.", "values": ["Integridad", "Rigor", "Internacionalización", "Claridad"], "tone": "Profesional, claro, intercultural; autoridad técnica sin arrogancia.", "personality": ["riguroso", "internacional", "claro", "cercano-B2B"], "voice_do": [ "Explicar beneficios de certificación para exportar", "Mostrar proceso y confianza", "Hablar a calidad/export/dirección", ], "voice_dont": ["Estereotipos religiosos", "Prometer mercados sin matices"], "messaging_pillars": [ "Certificación internacional", "Proceso claro", "Mercados Halal", "Confianza y compliance", ], "icp": "Empresas agroalimentarias, cosmética, logística y exportadoras que necesitan sello Halal.", "geo": "España · Europa · proyección internacional", "languages": ["es", "en"], "value_proposition": "Certificación Halal con reconocimiento internacional y acompañamiento experto.", "products_services": [ "Certificación Halal", "Auditorías y acompañamiento", "Renovaciones / mantenimiento", "Asesoría para acceso a mercados Halal", ], "channel_handles": handles( ig="https://www.instagram.com/halalsafety/", fb="https://www.facebook.com/SAFETYHORIZON", li="https://www.linkedin.com/company/halal-safety-certification/", blog="https://www.halalsafety.com/", ), "channels": channels( ig="Notoriedad y educación @halalsafety", fb="Comunidad / Safety Horizon", li="Captación B2B principal", blog="SEO certificación Halal", ), "ads_usps": [ "+15 años", "Reconocimiento internacional", "Proceso experto", "España y Europa", ], "ads_ctas": ["Solicitar información", "Hablar con un auditor", "Empezar certificación"], "linkedin_themes": [ "Exportación mercados Halal", "Compliance alimentario", "Casos de certificación", ], "blog_themes": ["Qué es Halal", "Proceso de certificación", "Mercados"], "blog_seo_keywords": [ "certificación halal españa", "certificado halal empresas", "halal certification europe", ], "claims_forbidden": ["Acceso automático a todos los mercados", "Certificación en 24h sin auditoría"], "b2b_offering": "Certificación y acompañamiento Halal para empresas.", "usp_differentiators": "Trayectoria + reconocimiento internacional + foco Europa.", "current_priorities": "Leads LinkedIn/Google y educación de marca.", "pillars_rrss": ["certificacion", "educativo", "mercados", "confianza"], "jobs_to_be_done": ["Obtener sello Halal", "Exportar con confianza"], "buying_triggers": ["Oportunidad de export", "Cliente exige sello", "Auditoría próxima"], "customer_frustrations": "Procesos opacos y sellos sin reconocimiento.", "desired_transformation": "Certificación clara que abre mercados.", "freeform_notes": "LinkedIn principal company/halal-safety-certification. También aparece eci-safety-horizon en web.", } PACKS["la-freseria"] = { "brand_name": "La Fresería", "website": "https://lafreseria.es/", "vertical": "Retail food · fresas con toppings / foodie viral (franquicia)", "tagline": "Las fresas más famosas del mundo", "elevator_pitch": "La Fresería es la marca de fresas con chocolate y creaciones foodie virales con decenas de locales en España y Europa, y modelo de franquicia.", "brand_promise": "Una experiencia dulce, visual y adictiva alrededor de la fresa.", "positioning": "Foodie viral de fresas premium vs neverías genéricas.", "archetype": "El Bufón + El Amante (diversión + indulgencia)", "mission": "Hacer de la fresa un momento memorable y compartible.", "vision": "Llevar las fresas más famosas del mundo a más ciudades (franquicia).", "values": ["Frescura", "Diversión", "Calidad", "Comunidad"], "tone": "Fresco, apetitoso, cercano, estacional y con energía social.", "personality": ["divertido", "visual", "cercano", "goloso"], "voice_do": [ "Mostrar producto hero (ASMR/close-up)", "Estacionalidad y lanzamientos", "UGC y comunidad", ], "voice_dont": ["Claims nutricionales engañosos", "Tono corporativo frío"], "messaging_pillars": ["Producto", "Novedades", "Tiendas", "Franquicia", "Comunidad"], "icp": "Gen Z / millennials foodies + familias; inversores/franquiciados para expansión.", "geo": "España (+ Portugal/Francia en red) · HQ Madrid", "languages": ["es"], "value_proposition": "Fresas 100% nacionales y creaciones virales en locales pequeños de alta rotación.", "products_services": [ "Fresas con chocolate y toppings", "Creaciones de temporada (Fresalado, matcha, ube, etc.)", "Cajitas / regalos", "Franquicia La Fresería", ], "differentiators": [ "Concepto viral de fresa", "Modelo de local pequeño sin salida de humos", "Red >30 locales España", ], "proof_points": [ "+33 locales en España / +35 en Europa (según web franquicia)", "Inversión franquicia desde ~65.000 € (material web)", ], "pillars_rrss": ["producto", "lanzamientos", "tiendas", "ugc", "franquicia"], "series_recurrentes": ["Novedad de temporada", "Detrás del mostrador", "Spotting tiendas"], "formats_priority": ["reel", "stories", "carrusel", "post"], "channel_handles": handles( ig="https://www.instagram.com/lafreseriaoficial/", blog="https://lafreseria.es/", ), "channels": channels( ig="Canal héroe @lafreseriaoficial", blog="Web tiendas + franquicia", email="Franquicia expansion@lafreseria.com / hola@lafreseria.com", other="TikTok/other UGC según campaña", ), "ads_usps": [ "Fresas más famosas del mundo", "Novedades virales", "Regalo perfecto", "Franquicia rentable (B2B)", ], "ads_ctas": ["Encuentra tu tienda", "Pedir", "Info franquicia", "Síguenos"], "ads_angles": ["Producto hero", "Temporada", "Franquicia EBITDA"], "linkedin_themes": ["Expansión franquicia", "Food retail", "Emprendimiento"], "blog_themes": ["Novedades", "Franquicia", "Tiendas"], "blog_seo_keywords": ["fresas con chocolate", "franquicia food", "la fresería tiendas"], "claims_forbidden": ["Claims de salud / dietéticos engañosos", "EBITDA garantizado"], "required_disclaimers": [ "Cifras de franquicia orientativas según material comercial", "Disponibilidad de producto según tienda/temporada", ], "b2b_offering": "Modelo de franquicia (expansión).", "b2c_offering": "Producto foodie en tienda.", "usp_differentiators": "Concepto fresa viral + red europea + formato local ágil.", "current_priorities": "Tráfico a tiendas + leads franquicia.", "jobs_to_be_done": ["Darme un capricho visual", "Regalar", "Abrir franquicia"], "buying_triggers": ["Novedad", "Cumpleaños", "Apertura ciudad"], "customer_frustrations": "Postres feos o poco instagrameables.", "desired_transformation": "Momento wow para compartir.", "freeform_notes": "Razón social BRUTAL VIRAL FOODIES, S.L. Web https://lafreseria.es/. IG @lafreseriaoficial.", } PACKS["noberplast"] = { "brand_name": "Noberplast", "website": "https://noberplast.com/", "vertical": "Fabricación y distribución de envases, bolsas y productos para hogar/comercio/HORECA", "tagline": "Productos para el cuidado del hogar, comercio y profesionales", "elevator_pitch": "Noberplast fabrica y distribuye bolsas de papel y plástico, celulosa, aluminio y envases para hogar, comercios y profesionales, con +30–40 años de experiencia y logística propia.", "brand_promise": "Suministro fiable, amplio catálogo y entregas ágiles para que tu negocio no pare.", "positioning": "Partner de suministros HORECA/comercio con fabricación/distribución propia vs puro marketplace.", "archetype": "El Cuidador + El Gobernante (servicio + fiabilidad)", "mission": "Simplificar y rentabilizar las compras de consumibles para negocios y hogar.", "vision": "Ser el partner de referencia de suministros desechables y celulosa en la península.", "values": ["Fiabilidad", "Servicio", "Calidad", "Cercanía comercial"], "tone": "Práctico, claro, B2B cercano; orientado a catálogo y beneficio operativo.", "personality": ["fiable", "práctico", "industrial-cercano", "resolutivo"], "voice_do": [ "Hablar de catálogo y ahorro por volumen", "Destacar plazos de entrega y stock", "Casos HORECA / comercio", ], "voice_dont": ["Greenwashing sin matiz", "Prometer plazos imposibles"], "messaging_pillars": ["Catálogo", "Logística 48h", "HORECA", "Personalización bolsas", "Sostenibilidad responsable"], "icp": "Comercios, HORECA, profesionales e industria que compran consumibles de forma recurrente.", "geo": "Ajalvir (Madrid) · Península Ibérica", "languages": ["es"], "value_proposition": "Catálogo amplio + experiencia + vehículos propios y entregas rápidas en península.", "products_services": [ "Bolsas papel y plástico (también personalizadas)", "Celulosa / papel multiusos", "Aluminio y envases", "Productos limpieza / hogar", "Suministros HORECA", "Venta online B2B/B2C", ], "differentiators": [ "+30/40 años", "Logística propia", "ISO 9001 / 14001", "Personalización", ], "proof_points": [ "ISO 9001, ISO 14001", "Entregas ~48h península", "Tel. 800 76 00 53 / 91 658 42 42", ], "pillars_rrss": ["producto", "catalogo", "tips-negocio", "sostenibilidad", "bastidores"], "channel_handles": handles( ig="https://www.instagram.com/noberplastsl/", li="https://www.linkedin.com/company/noberplast/", blog="https://noberplast.com/", ), "channels": channels( ig="@noberplastsl producto y marca", li="B2B y captación mayorista", blog="SEO catálogo / consejos", email="Pedidos y cuentas clave", ), "ads_usps": [ "Amplio catálogo", "Entrega rápida", "Precios por volumen", "40 años de experiencia", ], "ads_ctas": ["Ver catálogo", "Pedir presupuesto", "Comprar online", "Llamar"], "linkedin_themes": ["Suministros HORECA", "Envases", "Logística", "Sostenibilidad materiales"], "blog_themes": ["Consejos hostelería", "Productos destacados", "Navidad/temporada"], "blog_seo_keywords": [ "bolsas papel personalizadas", "suministros horeca", "distribuidor celulosa madrid", ], "b2b_offering": "Suministro recurrente y personalización para comercios y HORECA.", "b2c_offering": "Tienda online de productos hogar/profesionales.", "usp_differentiators": "Fabricación/distribución + logística propia + certificaciones.", "current_priorities": "Pedidos online y cuentas B2B.", "jobs_to_be_done": ["Reponer stock sin roturas", "Bajar coste por unidad", "Personalizar packaging"], "buying_triggers": ["Rotura de stock", "Nueva apertura", "Cambio de proveedor"], "customer_frustrations": "Proveedores lentos o catálogo incompleto.", "desired_transformation": "Suministro estable y simple.", "freeform_notes": "Web https://noberplast.com/. IG @noberplastsl. LinkedIn company/noberplast. Crta. Torrejón-Ajalvir Km 0,6 nº16, 28864 Ajalvir.", } PACKS["tsp"] = { "brand_name": "Talento Scholar Program", "website": "https://talentoscholarprogram.com/", "vertical": "Certificaciones universitarias USA para estudiantes preuniversitarios", "tagline": "Certificaciones universitarias americanas antes de la universidad", "elevator_pitch": "Talento Scholar Program permite a estudiantes de 4º ESO, Bachillerato y FP obtener certificaciones oficiales de universidad americana (p. ej. Utah Tech) 100% online, con acompañamiento.", "brand_promise": "Un perfil académico diferencial e internacional antes de entrar en la universidad.", "positioning": "Línea académica/scholar de Talento (separada de becas deportivas TYD).", "archetype": "El Sabio + El Explorador", "mission": "Dar a estudiantes españoles acceso real a credencial universitaria USA mientras cursan Bach/FP.", "vision": "Ser el puente de referencia hacia certificaciones universitarias americanas desde España.", "values": ["Excelencia", "Accesibilidad", "Acompañamiento", "Internacionalización"], "tone": "Orientador, serio-cercano, aspiracional académico (padres + alumnos).", "personality": ["orientador", "aspiracional", "claro", "cercano"], "voice_do": [ "Hablar a padres y alumnos", "Explicar certificaciones y compatibilidad con el cole/FP", "Destacar Utah Tech / oficialidad", ], "voice_dont": [ "Mezclar con becas deportivas TYD", "Prometer admisión universitaria garantizada", "Vender como 'título completo USA' confuso", ], "messaging_pillars": [ "Certificación universitaria USA", "4º ESO / Bach / FP", "100% online", "Perfil diferencial", "Acompañamiento", ], "icp": "Familias con hijos en 4º ESO–Bach–FP que buscan diferenciación académica internacional.", "geo": "España (online) · partner universidad USA", "languages": ["es", "en"], "value_proposition": "Certificaciones oficiales de universidad americana compatibles con estudios actuales, con orientación del equipo.", "products_services": [ "Technology Innovation & Entrepreneurship", "Cybersecurity", "Photography & Digital Imaging", "Orientación y acompañamiento al estudiante", ], "channel_handles": handles( ig="https://www.instagram.com/talentoscholarprogram/", blog="https://talentoscholarprogram.com/", ), "channels": channels( ig="Marca y prueba social @talentoscholarprogram", blog="Landing + captación leads", email="Nurturing familias", other="Powered by Talento y Deporte (marca hermana TYD — no mezclar Meta/creatividades)", ), "ads_usps": [ "Universidad americana", "Antes de la universidad", "100% online", "Compatible con cole/FP", ], "ads_ctas": ["Solicitar información", "Quiero información", "Hablar con el equipo"], "ads_objections": [ "Es caro", "Nivel de inglés", "No sirve en España", "Es solo un curso más", ], "linkedin_themes": [ "Educación internacional", "Credentialing preuniversitario", "EdTech", ], "blog_themes": ["Por qué certificar antes", "Áreas del programa", "FAQ padres"], "blog_seo_keywords": [ "certificación universitaria americana", "cursos universidad eeuu bachillerato", "talento scholar program", ], "claims_forbidden": [ "Admisión garantizada a universidades", "Equivalencia automática a grado", ], "required_disclaimers": [ "Las certificaciones dependen del programa y requisitos de la universidad partner", "No garantiza admisión universitaria", ], "pillars_rrss": [ "beca-academica", "admisiones", "campus", "financiacion", "objeciones", "casos-exito", ], "b2c_offering": "Programa de certificaciones para estudiantes y familias.", "usp_differentiators": "Credencial USA oficial + online + acompañamiento TYD ecosystem.", "current_priorities": "Leads de información y branding Scholar separado de deporte.", "jobs_to_be_done": ["Diferenciar el CV del hijo", "Explorar camino internacional"], "buying_triggers": ["Orientación bachillerato", "Interés STEM/USA", "Comparar con extracurriculares"], "customer_frustrations": "Extracurriculares que no aportan credencial real.", "desired_transformation": "Perfil académico internacional verificable.", "freeform_notes": "Web https://talentoscholarprogram.com/. IG @talentoscholarprogram. GA4 G-3ERLFE3PVL. Hermana TYD: no mezclar.", } PACKS["tyd"] = { "brand_name": "Talento y Deporte", "website": "https://talentoydeporte.com/", "vertical": "Becas deportivas y académicas para estudiar en EE.UU.", "tagline": "Te llevamos a estudiar a Estados Unidos con beca deportiva o académica", "elevator_pitch": "Talento y Deporte ayuda a jóvenes deportistas y estudiantes a conseguir becas en universidades de EE.UU., con acompañamiento en el proceso de admisión y colocación.", "brand_promise": "Un camino real y acompañado hacia estudiar y competir en Estados Unidos.", "positioning": "Especialistas en becas USA (deporte + academic pathways) vs agencias genéricas de 'estudia fuera'.", "archetype": "El Héroe + El Cuidador (ambición + acompañamiento familiar)", "mission": "Abrir puertas universitarias en EE.UU. a talento español e internacional.", "vision": "Ser la referencia ibérica en placement universitario USA.", "values": ["Ambición", "Transparencia", "Acompañamiento", "Excelencia deportiva/académica"], "tone": "Motivador, aspiracional, claro para familias; serio en el proceso.", "personality": ["aspiracional", "cercano", "exigente", "orientador"], "voice_do": [ "Hablar de becas, universidades y proceso", "Mostrar casos de alumnos", "Dirigirse a padres y atletas", ], "voice_dont": [ "Mezclar con Talento Scholar Program", "Garantizar beca del 100%", "Vender turismo académico", ], "messaging_pillars": [ "Becas deportivas USA", "Proceso paso a paso", "Casos de éxito", "Vida universitaria", "Familias", ], "icp": "Familias con hijos deportistas / estudiantes con proyección que buscan universidad en EE.UU.", "geo": "España · LatAm (operaciones TYD) · destino EE.UU.", "languages": ["es", "en"], "value_proposition": "Proceso guiado para becas deportivas/académicas en universidades USA con equipo experto.", "products_services": [ "Asesoramiento becas deportivas", "Placement universitario USA", "Preparación de perfil / video / academic", "Acompañamiento a familias", ], "channel_handles": handles( ig="https://www.instagram.com/talentoydeporte/", fb="https://www.facebook.com/talentoydeporte", yt="https://www.youtube.com/@talentoydeporte", blog="https://talentoydeporte.com/", ), "channels": channels( ig="Canal héroe @talentoydeporte", fb="Alcance familias", yt="Historias y proceso", blog="SEO becas USA", email="Nurturing familias", other="Linktree https://linktr.ee/talentoydeporte", ), "ads_usps": [ "Becas en EE.UU.", "Acompañamiento real", "Casos de éxito", "Deporte + estudios", ], "ads_ctas": ["Pedir información", "Evalúa tu perfil", "Hablar con un asesor"], "linkedin_themes": ["Educación internacional", "Deporte universitario", "Employability"], "blog_themes": ["Cómo funciona la beca", "Vida en USA", "Requisitos"], "blog_seo_keywords": [ "becas deportivas estados unidos", "estudiar en usa con beca", "universidad americana deporte", ], "claims_forbidden": ["Beca 100% garantizada", "Visa/admision asegurada"], "required_disclaimers": [ "La beca depende del perfil deportivo/académico y de la universidad", ], "pillars_rrss": ["becas", "casos", "proceso", "vida-usa", "familias"], "b2c_offering": "Programa de asesoramiento y placement para familias/atletas.", "usp_differentiators": "Especialización becas USA + track record + marca TYD.", "current_priorities": "Leads España (y mercados TYD) sin canibalizar Scholar.", "jobs_to_be_done": ["Conseguir beca", "Entender el proceso", "Elegir universidad"], "buying_triggers": ["Temporada de scouting", "Fin de etapa escolar", "Torneo destacado"], "customer_frustrations": "Agencias opacas y falsas promesas de beca total.", "desired_transformation": "Plaza universitaria USA con plan claro.", "freeform_notes": "Hermana TSP (Scholar) separada. GSC https://talentoydeporte.com/.", } PACKS["virginia-molet"] = { "brand_name": "Gravitae Academy (Virginia Molet)", "website": "https://gravitaeacademy.com/", "vertical": "Executive coaching / leadership academy", "tagline": "Transformación del liderazgo a través de un coaching de primer nivel", "elevator_pitch": "Gravitae Academy, fundada por Virginia Molet (ICF PCC), ayuda a ejecutivos de alto rendimiento a convertirse en líderes reconocidos mediante coaching ejecutivo y de equipos.", "brand_promise": "Liderazgo con gravitas: influencia, claridad y crecimiento de carrera.", "positioning": "Coaching ejecutivo premium internacional (ICF) vs coaching genérico o motivational speaking.", "archetype": "El Sabio + El Magician (transformación)", "mission": "Elevar el liderazgo de ejecutivos y equipos en contextos complejos e internacionales.", "vision": "Red de coaching de primer nivel para líderes globales.", "values": ["Excelencia", "Confidencialidad", "Profundidad", "Impacto"], "tone": "Cercano-premium, internacional (ES/EN), aspiracional sin postureo vacío.", "personality": ["premium", "internacional", "cercana", "exigente"], "voice_do": [ "Hablar de liderazgo, carrera e influencia", "Credenciales ICF / experiencia +20 años / +50 nacionalidades", "Casos y frameworks prácticos", ], "voice_dont": [ "Frases motivacionales vacías", "Prometer ascenso/salario garantizado", "Confundir marca personal con clínica o producto físico", ], "messaging_pillars": [ "Executive coaching", "Liderazgo", "Carrera", "Equipos / systemic coaching", "Comunidad Gravitae", ], "icp": "Directores, heads y C-level que quieren influir más, navegar complejidad y acelerar carrera.", "geo": "Internacional (España/Europa/remoto) · fundadora con trayectoria global", "languages": ["es", "en"], "value_proposition": "Coaching ejecutivo ICF de alto nivel para líderes que operan en entornos internacionales complejos.", "products_services": [ "Executive coaching 1:1", "Team / systemic coaching", "Programas Gravitae Academy", "Formación en liderazgo y comunicación persuasiva", ], "channel_handles": handles( ig="https://www.instagram.com/gravitaeacademyofficial/", li="https://www.linkedin.com/in/virginiamolet", blog="https://gravitaeacademy.com/", ), "channels": channels( ig="@gravitaeacademyofficial comunidad y marca academy", li="Canal B2B principal (Virginia Molet PCC)", blog="Web Gravitae + contenidos", other="Marca personal: https://www.virginiamolet.com/ · también @virginiamoletcoach", ), "ads_usps": [ "ICF PCC", "+20 años experiencia internacional", "Líderes de alto rendimiento", "Coaching 1:1 y equipos", ], "ads_ctas": ["Agendar conversación", "Conocer Gravitae", "LinkedIn"], "linkedin_themes": [ "Liderazgo ejecutivo", "Carrera e influencia", "Coaching de equipos", "Positive psychology aplicada", ], "linkedin_formats": ["artículo", "carrusel framework", "historia de cliente (anon)"], "linkedin_cta": ["Mensaje", "Reservar discovery call"], "blog_themes": ["Liderazgo", "Coaching", "Carrera"], "blog_seo_keywords": [ "executive coaching", "coaching ejecutivo icf", "leadership coaching spain", ], "claims_forbidden": ["Ascenso garantizado", "Aumento salarial asegurado"], "required_disclaimers": ["Resultados dependen del compromiso del coachee y contexto organizacional"], "pillars_rrss": ["liderazgo", "carrera", "bastidores-coaching", "comunidad"], "b2b_offering": "Programas para empresas y equipos directivos.", "b2c_offering": "Coaching ejecutivo individual (B2C premium / B2B2C).", "usp_differentiators": "ICF + experiencia business internacional + Gravitae network.", "current_priorities": "Leads discovery + autoridad LinkedIn/IG Gravitae.", "jobs_to_be_done": ["Ganar influencia", "Navegar cambio", "Preparar siguiente rol"], "buying_triggers": ["Nuevo rol", "Estancamiento", "Reorganización"], "customer_frustrations": "Coaching superficial o formación genérica de liderazgo.", "desired_transformation": "Liderar con claridad, presencia e impacto.", "freeform_notes": "Web negocio https://gravitaeacademy.com/. Personal https://www.virginiamolet.com/. Meta page Gravitae Academy. IG @gravitaeacademyofficial.", } PACKS["wine-advisors"] = { "brand_name": "WineAdvisor", "website": "https://www.wineadvisor.mx/", "vertical": "SaaS / plataforma de gestión y carta digital de vinos (HORECA)", "tagline": "La revolución en la gestión del vino", "elevator_pitch": "WineAdvisor es la plataforma visual para que restaurantes, hoteles y retail gestionen inventario de vino, maridajes y ventas, con una experiencia digital para el comensal y control para el equipo.", "brand_promise": "Impulsa el consumo de vino en tu negocio con una cava digital inteligente.", "positioning": "Software integral de cava (inventario + experiencia + ventas) vs sola carta PDF/QR.", "archetype": "El Creador + El Sabio (innovación + expertise vino)", "mission": "Modernizar cómo los negocios venden y gestionan vino.", "vision": "Estándar digital de gestión de vinos en hostelería (MX / ES / US).", "values": ["Innovación", "Experiencia", "Datos", "Placer sin snobismo"], "tone": "Experto, cercano, comercial B2B HORECA; vino sin snobismo.", "personality": ["innovador", "cercano", "experto", "comercial"], "voice_do": [ "Hablar a dueños de restaurante y sommeliers", "Beneficios: rotación, inventario, upselling", "Mostrar interfaz visual", ], "voice_dont": [ "Elitismo enológico excluyente", "Venderlo solo como 'carta QR'", "Confundir IG ES (@wineadvisor_es) con MX (@wine.advisor)", ], "messaging_pillars": [ "Carta visual", "Inventario y rotación", "Maridajes", "Ventas del equipo", "Datos de consumo", ], "icp": "Restaurantes, hoteles, distribuidores y retail de vino que quieren digitalizar cava y aumentar ticket.", "geo": "México (HQ) · España · EE.UU.", "languages": ["es", "en"], "value_proposition": "Plataforma visual de selección + inventario + analítica para vender más vino con menos fricción.", "products_services": [ "Carta / cava digital visual", "Gestión de inventario", "Maridajes y descubrimiento", "Analítica de ventas", "Implementación e inventario inicial", ], "differentiators": [ "Interfaz visual única", "No es solo QR: es gestión + ventas", "Equipo de implementación", ], "proof_points": [ "Producto wineadvisor.mx", "LinkedIn Intelligent Restaurants de México", "Presencia IG ES @wineadvisor_es y MX @wine.advisor", ], "pillars_rrss": ["producto", "maridaje", "horeca", "educativo-vino", "casos"], "series_recurrentes": ["Tip cava", "Antes/después carta", "Dato de rotación"], "formats_priority": ["reel", "carrusel", "post", "stories"], "channel_handles": handles( ig="https://www.instagram.com/wineadvisor_es/", fb="https://www.facebook.com/WineAdvisor", li="https://www.linkedin.com/company/intelligent-restaurants-de-mexico-s-a-de-c-v-/", blog="https://www.wineadvisor.mx/", ), "channels": channels( ig="ES @wineadvisor_es (también MX @wine.advisor)", fb="WineAdvisor", li="B2B HORECA principal", blog="Producto y captación demo", email="info@wineadvisor.mx", ), "ads_usps": [ "Cava digital visual", "Control de inventario", "Más ventas de vino", "Ideal HORECA", ], "ads_ctas": ["Solicitar demo", "Únete a WineAdvisor", "Hablar con un experto"], "ads_objections": ["Ya tengo carta QR", "Mi equipo no lo usará", "Precio SaaS"], "ads_angles": ["De carta PDF a experiencia", "Rotación de etiquetas", "Upselling en sala"], "linkedin_themes": [ "Hospitality tech", "Gestión de cava", "Experiencia del comensal", "Datos de consumo", ], "linkedin_formats": ["demo UI", "caso restaurante", "carrusel beneficios"], "linkedin_cta": ["Pedir demo", "Contactar"], "blog_themes": ["Gestión de vino", "Tendencias HORECA", "Maridaje"], "blog_seo_keywords": [ "carta de vinos digital", "software inventario vino restaurante", "wineadvisor", ], "b2b_offering": "SaaS + implementación para centros de consumo de vino.", "usp_differentiators": "Experiencia visual + inventario + analítica en una plataforma.", "current_priorities": "Demos HORECA ES/MX y notoriedad de producto.", "jobs_to_be_done": ["Vender más vino", "Controlar stock", "Formar al equipo de sala"], "buying_triggers": ["Carta desactualizada", "Merma/inventario caótico", "Nueva apertura"], "customer_frustrations": "Cartas estáticas y cero datos de qué se vende.", "desired_transformation": "Cava viva que vende sola y se controla fácil.", "freeform_notes": "Web canónica https://www.wineadvisor.mx/. IG campaña ES: @wineadvisor_es. LinkedIn company/intelligent-restaurants-de-mexico-s-a-de-c-v-.", } # Campos de kit visual que no pisamos si ya existen PRESERVE_IF_NONEMPTY = { "colors", "fonts_kit", "kit_assets", "colors_primary", "colors_secondary", "fonts", "source_excerpts", } def is_filled(v: Any) -> bool: if v is None: return False if isinstance(v, str): return bool(v.strip()) if isinstance(v, list): return len(v) > 0 if isinstance(v, dict): return any(is_filled(x) for x in v.values()) return True def looks_like_bad_handle(s: str) -> bool: """Handles que metimos mal (IDs numéricos Meta como URL).""" if not s: return True if re.search(r"instagram\.com/\d{5,}", s): return True if re.search(r"facebook\.com/\d{5,}$", s): return True return False def merge_book(existing: dict, pack: dict) -> dict: out = dict(existing or {}) for k, v in pack.items(): if k in ("channels", "channel_handles") and isinstance(v, dict): base = dict(out.get(k) or {}) for hk, hv in v.items(): if not hv: continue cur = str(base.get(hk) or "") if not cur or looks_like_bad_handle(cur) or k == "channel_handles": base[hk] = hv elif not is_filled(cur): base[hk] = hv else: # pack wins for handles always; for channel roles overwrite if pack set if k == "channels": base[hk] = hv out[k] = base continue if k in PRESERVE_IF_NONEMPTY and is_filled(out.get(k)) and not is_filled(v): continue if v is None: continue if isinstance(v, list) and len(v) == 0 and is_filled(out.get(k)): continue if isinstance(v, str) and v.strip() == "" and is_filled(out.get(k)): # no borrar con vacío continue out[k] = v # website siempre del pack si viene if pack.get("website"): out["website"] = pack["website"] if pack.get("brand_name"): out["brand_name"] = pack["brand_name"] out["version"] = 2 return out def score_key_fields(book: dict) -> tuple[int, list[str]]: keys = [ "website", "tagline", "elevator_pitch", "tone", "mission", "value_proposition", "icp", "products_services", "channel_handles", "ads_usps", "ads_ctas", "linkedin_themes", "blog_themes", "pillars_rrss", ] miss = [k for k in keys if not is_filled(book.get(k))] # channel linkedin specifically ch = book.get("channel_handles") or {} if not is_filled(ch.get("linkedin")): miss.append("linkedin_handle") if not is_filled(ch.get("instagram")): miss.append("instagram_handle") filled = len(keys) - len([k for k in miss if k in keys]) pct = round(100 * filled / len(keys)) return pct, miss def main() -> None: tenants = get( "tenants?agency_followed=neq.false&select=id,slug,name,default_landing_url&order=slug" ) print(f"Active tenants: {len(tenants)} · packs: {len(PACKS)}") missing_packs = [t["slug"] for t in tenants if t["slug"] not in PACKS] if missing_packs: print("WARNING no pack for:", missing_packs) for t in tenants: slug = t["slug"] pack = PACKS.get(slug) if not pack: print(f"[skip] {slug}") continue docs = get( f"documents?tenant_id=eq.{t['id']}&type=eq.brandbook&select=id,content&order=updated_at.desc&limit=1" ) if not docs: print(f"[skip] {slug} sin brandbook doc") continue content = docs[0]["content"] if isinstance(content, str): content = json.loads(content) before, miss_b = score_key_fields(content) merged = merge_book(content, pack) after, miss_a = score_key_fields(merged) patch(f"documents?id=eq.{docs[0]['id']}", {"content": merged}) # sync tenant landing landing = pack.get("website") if landing and t.get("default_landing_url") != landing: patch(f"tenants?id=eq.{t['id']}", {"default_landing_url": landing}) print( f"[ok] {slug:22} score {before}%→{after}% web={pack.get('website')} still_miss={miss_a[:6]}" ) print("DONE") if __name__ == "__main__": main()