← Volver a proyectos

AI Share of Voice

Full-stack · arquitecto y principal desarrollador · SaaS multi-tenant
Muestreo estadístico N×(prompt×modelo) con intervalos de confianza t-Student: la Share of Voice se reporta con barras de error, no como número puntual — porque las respuestas de los LLMs son no-determinísticas
Pipeline multi-proveedor (OpenAI/Gemini/Claude) con clientes lazy + fallback: la consulta corre con web-search y un segundo LLM parser extrae menciones estructuradas (marca, posición, framing, sentimiento, citas) resolviendo entidades con dedup por alias
Cierra el loop: auditoría de entidad (Wikipedia/Wikidata/Schema) → playbook de acciones AEO priorizadas por impacto/esfuerzo, detección de drift por canarios y contraste contra mercado real (patentamientos DNRPA)

GEO · Generative Engine Optimization · SaaS multi-tenant

El rank-tracking de la era de las IAs. Cuando alguien le pregunta a ChatGPT "¿qué SUV me conviene?", ¿tu marca aparece, la recomiendan o la ignoran? Esta plataforma mide esa señal difusa a través de varios modelos, la convierte en Share of Voice con intervalos de confianza, y la traduce en un plan concreto para mejorarla.

3motores LLM medidos
muestreo por prompt×modelo
39modelos de datos
33módulos de backend

¿Qué problema resuelve AI Share of Voice?

El SEO tradicional asume que la gente hace clic en resultados de búsqueda. Pero cada vez más, la decisión de compra pasa por una respuesta generada: le preguntás a una IA “¿cuál me conviene?” y te tira una recomendación ya masticada. En ese mundo no importa tanto en qué puesto rankeás en Google, sino cómo te nombran —o si te nombran— cuando el modelo responde. Eso es lo que la industria empezó a llamar GEO (Generative Engine Optimization) o AEO (Answer Engine Optimization).

El problema es que esa señal es escurridiza. Las respuestas de los LLMs son no-determinísticas: la misma pregunta, dos veces, da dos respuestas distintas. No hay un “puesto 3” estable. Y no alcanza con leer la respuesta: hay que entender si a la marca la recomiendan, la mencionan al pasar, la comparan o directamente la desaconsejan — y en qué se apoya el modelo para decir eso.

Construí AI Share of Voice como herramienta para una agencia de GEO (INDI): una plataforma que le pregunta sistemáticamente a los modelos, mide la posición de cada marca con rigor estadístico, y cierra el círculo con un diagnóstico accionable de por qué una marca aparece poco y qué hacer al respecto. El primer vertical es el mercado automotor argentino.

¿Cómo funciona el pipeline de AI Share of Voice?

El corazón del sistema es un pipeline que convierte preguntas en métricas. No es una llamada a un LLM y listo — es una cadena de pasos, cada uno con su decisión de diseño.

Promptspreguntas reales de compra, priorizadas por demanda
LLM × 3OpenAI · Gemini · Claude, con web-search activo
Parser LLMextrae menciones estructuradas de cada respuesta
Resolvermatchea marcas por alias, dedup, entidades pendientes
Agregaciónmedia, desvío e IC 95% por (prompt×proveedor)
Muestreo: cada prompt prioritario se corre N veces por modelo — con un tope duro de tasks para acotar costo

La decisión estructural más importante está en los extremos de esa cadena. En la entrada, el muestreo estadístico: como el mismo prompt da respuestas distintas, cada prompt prioritario se ejecuta N veces contra cada modelo. En la salida, la agregación honesta: se computa la Share of Voice por corrida en la unidad correcta —(prompt × proveedor)— y se guardan media, desvío y un intervalo de confianza al 95% con una implementación real de la t de Student. El número que ve el estratega no es un punto: viene con barra de error.

El otro extremo interesante es el parser. La respuesta cruda del modelo es prosa; para medir hay que estructurarla. Un segundo LLM barato, con temperatura 0, extrae de cada respuesta un esquema rico por mención: marca y modelo, posición, si la recomiendan, sentimiento, tipo de framing (recomendada / mencionada / comparada / desaconsejada), posicionamiento de precio, y las fuentes que el modelo dice haber usado. Ese parser detecta JSON truncado, limpia fences y valida cada enum con fallback — porque en producción los modelos devuelven de todo.

¿Qué decisiones técnicas sostienen AI Share of Voice?

Las partes que más me importan no son las pantallas lindas, son las decisiones que hacen que los números sean confiables y que la herramienta diga algo accionable.

Rigor estadístico

Share of Voice con barras de error

Medir posicionamiento sobre un sistema no-determinístico sin cuantificar la incertidumbre es engañarse. Por eso la capa de scoring tiene una implementación propia de la t de Student (con tabla e interpolación), computa intervalos de confianza solo cuando hay muestra suficiente (n≥2), y deriva un visibility score = calidad × confianza, donde la confianza crece con el tamaño de muestra.

  • SOV agregada en la unidad correcta: (prompt × proveedor), no menciones sueltas
  • Media, desvío e IC 95% persistidos por lote de muestreo
  • Planificación de N para un margen objetivo — cuántas corridas hacen falta
Abstracción multi-proveedor

Tres motores, una interfaz, degradación elegante

Cada proveedor implementa una interfaz común y se instancia de forma lazy dentro de la consulta — para que los SDKs de OpenAI/Anthropic no exploten en import cuando falta una key (clave para que los tests corran sin credenciales). El sistema descubre en runtime qué proveedores tienen key y funciona con los que haya; si Gemini no soporta AbortSignal, se emula con un Promise.race.

  • Consulta con herramientas de web-search / grounding, devolviendo citas estructuradas
  • Roles de modelo separados: uno para responder, uno barato para parsear, uno para analizar
  • Fallback por proveedor: la herramienta no se cae porque falte una API key
Extracción y matching de entidades

De prosa a menciones estructuradas

El resolver precarga marcas y alias una sola vez para matar los N+1, matchea sin distinguir mayúsculas por nombre o alias, da de alta modelos desconocidos como "pendientes" para revisión, y a una marca nombrada sin producto la ata a un modelo centinela para no perder la señal de marca. Lo que no matchea no se tira: se guarda con su JSON crudo para recuperarlo después.

  • Resolver en memoria por respuesta — sin N+1 contra la base
  • Descubrimiento de modelos nuevos + cola de menciones sin matchear
  • Cada mención guarda posición, framing, sentimiento y fuentes declaradas
Del dato a la acción

Auditoría de entidad → playbook priorizado

Medir sin decir qué hacer es un reporte, no una herramienta. El módulo de auditoría corre cuatro crawlers en paralelo (Wikipedia, Wikidata, Schema.org, citas) bajo Promise.allSettled, puntúa la presencia de entidad de la marca y reconcilia los hallazgos en acciones concretas de un playbook —cada una con su rango de impacto, esfuerzo y tiempo estimado— matcheadas contra un catálogo de tácticas AEO en Markdown.

  • Score de entidad por fuente + score global, con findings ok/warn/crit
  • Acciones priorizadas por impacto × esfuerzo (crear artículo de Wikipedia, Q-id, FAQ schema, llms.txt…)
  • Detección de drift por canarios: re-pregunta fija + test de outlier estadístico (media + 3σ)
La vuelta al mundo real

Visibilidad en IAs vs. mercado de verdad

Una marca puede sonar mucho en las respuestas y vender poco, o al revés. El módulo de mercado cosecha los patentamientos reales (DNRPA), matchea las marcas contra las del workspace y computa el gap: dónde estás sub-representado en las IAs frente a tu cuota de mercado real. Ese contraste es la señal de oportunidad más clara para el estratega.

  • Cosecha de mercado por período, matcheada por alias contra las marcas trackeadas
  • Gap SOV-IA vs. cuota real, con veredicto sub/sobre-representada
  • Radar de demanda: keywords y preguntas cosechadas (SERP/PAA/marketplaces) → nuevos prompts a medir

La arquitectura, en corto

Backend en Express + TypeScript sobre PostgreSQL/Prisma (39 modelos, 33 módulos), multi-tenant real: casi todo scopeado por workspace, con auth JWT + refresh tokens rotados y hasheados, y una FK compuesta que garantiza a nivel base que la marca principal pertenece al mismo workspace. Siete cron jobs independientes (corridas de medición, digest semanal, canarios de drift, auditoría de entidad, cosechas de mercado y demanda) arrancables en runtime desde settings. Frontend en React 19 + Vite + Tailwind v4 con React Query y Recharts, en un lenguaje visual tipo Stripe: claro, preciso, el dato al centro. El backend valida su config al arrancar y no levanta sin JWT fuerte ni al menos una key de LLM; los tests corren sobre Postgres real con los clientes LLM instanciados de forma lazy, así la suite no depende de credenciales.

Cierre

AI Share of Voice es el proyecto donde más se nota una idea que me importa: medir bien es una decisión de diseño, no un detalle. Cualquiera puede llamar a un LLM y contar cuántas veces aparece una marca; lo difícil es hacerlo de forma que el número resista — muestrear contra la no-determinación, agregarlo en la unidad correcta, ponerle un intervalo de confianza, y recién ahí convertirlo en una recomendación. Todo el resto de la plataforma —el parser, el matching de entidades, la auditoría, el playbook, el contraste con el mercado real— existe para cerrar el camino que va de “¿qué dicen las IAs de mi marca?” a “¿y qué hago mañana para mejorarlo?”.