498AS

Nestlé GEO Audit · Reporte Métricas GEO Crisis

Reporte de Métricas GEO — Crisis Nestlé Fórmula Infantil

Fecha: Febrero 2026
Project ID: 53a04a4c-db6a-4308-b8a3-c59ad8dd06ed
Engines / Runs: - GPT-4o-mini ("Efficient model for most tasks") → d0e337d2-64f2-4671-a694-851749cbd740 - Gemini ("Fast, low-cost, high-performance Gemini 2.5") → ada78f46-455f-453c-9012-279bd86cf8fb

Respuestas analizadas: 28,865 (GPT-4o-mini: 19,587; Gemini: 9,278)


Resumen Ejecutivo (métricas clave)

Nota metodológica: todos los números y promedios provienen de queries SQL ejecutadas con radar analytics query --sql "..." sobre tablas analíticas (responses, entity_mentions, attribute_mentions, response_sources).

Tabla 0. Volumen de respuestas por engine

Engine run_id Respuestas
Gemini ada78f46-455f-453c-9012-279bd86cf8fb 9,278
GPT-4o-mini d0e337d2-64f2-4671-a694-851749cbd740 19,587

Tabla 0B. Volumen de menciones por marca (set Nestlé+competidores)

Engine entity_identifier menciones (filas) respuestas con mención
Gemini nan 6,281 2,903
Gemini aptamil 3,331 1,465
Gemini enfamil 3,206 1,827
Gemini almiron 2,793 1,430
Gemini nestle 2,709 2,001
Gemini blemil 2,607 1,289
Gemini hero-baby 1,666 1,012
Gemini nidina 819 608
Gemini nativa 309 233
GPT-4o-mini nan 4,029 3,123
GPT-4o-mini enfamil 3,826 2,838
GPT-4o-mini nestle 2,532 1,964
GPT-4o-mini almiron 2,390 2,032
GPT-4o-mini blemil 1,893 1,598
GPT-4o-mini hero-baby 1,107 951
GPT-4o-mini nidina 414 379
GPT-4o-mini nativa 330 293
GPT-4o-mini aptamil 48 39

Tabla 0C. Volumen “macro” de detecciones Safety/Security (todas las entidades)

Engine atributo detecciones respuestas con detección avg sentiment (todas las entidades)
Gemini safety 5,935 2,983 3.471
Gemini security 4 4 2.500
GPT-4o-mini safety 9,884 4,810 3.203
GPT-4o-mini security 927 620 3.269

Tabla 1. Citación / grounding (volumen)

Engine Total citas (response_sources) Respuestas con citas Citas promedio por respuesta
Gemini 60,515 5,718 10.583
GPT-4o-mini 45,834 11,306 4.054

Tabla 2. Contaminación “Brasil/ANVISA” (presencia en respuestas)

Engine Total respuestas % con “ANVISA” % con “Brasil/Brazil” % con (ANVISA o Brasil) Mezcla ANVISA + (España/Portugal)
Gemini 9,278 3.07% (285) 3.45% (320) 4.15% (385) 29
GPT-4o-mini 19,649* 2.78% (546) 4.69% (922) 5.86% (1,152) 48

*En esta tabla el total de responses para GPT-4o-mini sale como 19,649 por query de contaminación; la tabla de volumen por engine (Tabla 0) contabiliza 19,587. Esta diferencia suele ocurrir cuando hay respuestas duplicadas/adjuntas en particiones o diferencias de filtro temporal. En el anexo incluyo ambas queries exactas para auditoría.

Tabla 3. Safety Sentiment (Nestlé vs Competidores) — lectura rápida

Engine Nestlé (NAN+NIDINA+NATIVA+NESTLE) avg safety Competidores avg safety Delta
Gemini 3.157 3.376 -0.219
GPT-4o-mini 2.900 3.449 -0.549

(Detalle por marca y ranking en Sección 1.)

Tabla 4. Fuentes “sensibles” (citas a dominios específicos)

Dominio Gemini citas GPT-4o-mini citas
www.nestlebebe.es 1,040 568
www.nestlebebe.pt 304 460
nocomasmasmentiras.org 447 49
www.gov.br 137 561
(anvisa*) 10 (antigo.anvisa.gov.br) 1 (bibliotecadigital.anvisa.gov.br)
www.aesan.gob.es 551 121

1. Safety Sentiment Index

1.1 Global: Safety + Security (por marca/competidor)

Definición operativa (para este reporte): - Usamos attribute_mentions con attribute_identifier IN ('safety','security'). - Medimos avg(sentiment) (escala entera en la tabla) y volumen de detecciones. - Filtramos por entity_identifier dentro del set: Nestlé (nan, nidina, nativa, nestle) + competidores (enfamil, almiron, aptamil, blemil, hero-baby).

Tabla 1.1A — Safety (avg sentiment + volumen)

Engine entity_identifier avg safety sentiment detecciones respuestas con detección
Gemini nan 3.260 258 233
Gemini nestle 3.190 247 234
Gemini aptamil 3.327 165 153
Gemini almiron 2.979 144 130
Gemini enfamil 3.915 59 58
Gemini nidina 2.643 56 53
Gemini blemil 3.744 39 37
Gemini hero-baby 3.914 35 35
Gemini nativa 2.842 19 19
GPT-4o-mini nestle 2.720 404 378
GPT-4o-mini nan 3.130 353 324
GPT-4o-mini almiron 2.951 163 159
GPT-4o-mini enfamil 3.807 145 138
GPT-4o-mini nidina 2.617 47 44
GPT-4o-mini blemil 3.778 45 44
GPT-4o-mini hero-baby 3.976 42 41
GPT-4o-mini nativa 3.150 20 18
GPT-4o-mini aptamil 2.846 13 10

Tabla 1.1B — Security (avg sentiment + volumen)

Engine entity_identifier avg security sentiment detecciones respuestas con detección
GPT-4o-mini nan 3.121 33 32
GPT-4o-mini almiron 3.450 20 20
GPT-4o-mini enfamil 3.929 14 12
GPT-4o-mini blemil 4.000 12 11
GPT-4o-mini hero-baby 3.917 12 12
GPT-4o-mini nestle 3.000 7 6
GPT-4o-mini nativa 4.000 7 6
GPT-4o-mini nidina 2.667 6 6

Observación: en Gemini aparecen detecciones de security muy bajas a nivel global (4 detecciones en el esquema), y además no necesariamente asociadas al set de entity_identifier filtrado. Por eso, en el corte “por marca” la tabla de Gemini security no devuelve filas significativas.

1.2 Por marca Nestlé (NAN, NIDINA, NATIVA, NESTLE)

Tabla 1.2A — Nestlé Safety (solo 4 marcas Nestlé)

Engine Marca (entity_identifier) avg safety detecciones
Gemini nan 3.260 258
Gemini nestle 3.190 247
Gemini nidina 2.643 56
Gemini nativa 2.842 19
GPT-4o-mini nan 3.130 353
GPT-4o-mini nestle 2.720 404
GPT-4o-mini nidina 2.617 47
GPT-4o-mini nativa 3.150 20

1.3 Comparativa vs competidores + ranking (Safety)

Tabla 1.3A — Ranking por Safety Sentiment (incluye Nestlé + competidores)

Engine Rank entity_identifier avg safety detecciones
Gemini 1 enfamil 3.915 59
Gemini 2 hero-baby 3.914 35
Gemini 3 blemil 3.744 39
Gemini 4 aptamil 3.327 165
Gemini 5 nan 3.260 258
Gemini 6 nestle 3.190 247
Gemini 7 almiron 2.979 144
Gemini 8 nativa 2.842 19
Gemini 9 nidina 2.643 56
GPT-4o-mini 1 hero-baby 3.976 42
GPT-4o-mini 2 enfamil 3.807 145
GPT-4o-mini 3 blemil 3.778 45
GPT-4o-mini 4 nativa 3.150 20
GPT-4o-mini 5 nan 3.130 353
GPT-4o-mini 6 almiron 2.951 163
GPT-4o-mini 7 aptamil 2.846 13
GPT-4o-mini 8 nestle 2.720 404
GPT-4o-mini 9 nidina 2.617 47

1.4 Queries ejecutadas (Sección 1)

-- Tabla 0 (respuestas por run)
SELECT run_id, engine_name, countDistinct(id) AS responses
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY run_id, engine_name;

-- Tabla 1.1A/1.1B (avg sentiment + detecciones por entidad y atributo)
WITH ['nan','nidina','nativa','nestle','enfamil','almiron','aptamil','blemil','hero-baby'] AS brands
SELECT run_id, attribute_identifier, entity_identifier,
       round(avg(sentiment),3) AS avg_sentiment,
       count() AS detections,
       countDistinct(response_id) AS responses_with_detection
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND attribute_identifier IN ('safety','security')
  AND entity_identifier IN brands
GROUP BY run_id, attribute_identifier, entity_identifier
ORDER BY run_id, attribute_identifier, detections DESC;

-- Tabla 1.3A (ranking safety)
WITH ['nan','nidina','nativa','nestle','enfamil','almiron','aptamil','blemil','hero-baby'] AS brands,
     'safety' AS attr
SELECT run_id,
       entity_identifier,
       round(avg(sentiment),3) AS avg_safety_sentiment,
       count() AS detections,
       dense_rank() OVER (PARTITION BY run_id ORDER BY avg(sentiment) DESC) AS rank_safety
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND attribute_identifier=attr
  AND entity_identifier IN brands
GROUP BY run_id, entity_identifier
ORDER BY run_id, rank_safety, detections DESC;

2. Share of Narrative (Fuentes)

2.1 Top dominios citados (Top 50 por engine)

Interpretación: el campo source_domain proviene de response_sources. Se cuenta cada cita como una fila. La métrica pct_citations se calcula como % sobre el total de citas del run.

Tabla 2.1A — Top 50 dominios (Gemini)

Dominio Citas % del total
vertexaisearch.cloud.google.com 17,569 29.032
www.primor.eu 1,093 1.806
www.youtube.com 1,056 1.745
www.nestlebebe.es 1,040 1.719
www.healthychildren.org 897 1.482
www.nestlefamilynes.com.mx 793 1.310
www.elconfidencialdigital.com 765 1.264
www.atida.com 750 1.239
www.enfamil.com 679 1.122
www.promofarma.com 668 1.104
www.fda.gov 639 1.056
elpais.com 591 0.977
www.elconfidencial.com 580 0.958
www.aesan.gob.es 551 0.911
scielo.isciii.es 507 0.838
blog.marvimundo.com 474 0.783
www.nestlenutritionmedicallatam.com 452 0.747
nocomasmasmentiras.org 447 0.739
www.enfamil.es 438 0.724
www.summerhealth.com 434 0.717
medlineplus.gov 426 0.704
www.familynescam.com 394 0.651
www.actapediatrica.com 393 0.649
nutriben.es 392 0.648
go-food.es 339 0.560
maspanales.com 329 0.544
pedia-gess.com 329 0.544
www.nestlebebe.pt 304 0.502
www.lechepuleva.es 288 0.476
www.elmundo.es 285 0.471
www.cun.es 274 0.453
www.redaccionmedica.com 255 0.421
happymami.com 253 0.418
www.nutritienda.com 251 0.415
www.aeped.es 249 0.411
www.carrefour.es 247 0.408
babybio.es 246 0.407
www.publico.es 242 0.400
novalacprofesionales.es 230 0.380
www.familynes.cl 218 0.360
www.recetasparamibebe.com 216 0.357
farma2go.com 211 0.349
alergiaalalechedevaca.es 208 0.344
www.elespanol.com 204 0.337
novalac.es 198 0.327
www.farmaciamarket.es 198 0.327
www.dsm-firmenich.com 198 0.327
www.infobae.com 196 0.324
pequeayuda.com 195 0.322
espanol.babycenter.com 192 0.317

Tabla 2.1B — Top 50 dominios (GPT-4o-mini)

Dominio Citas % del total
www.fda.gov 2,085 4.549
elpais.com 1,372 2.993
www.elconfidencialdigital.com 938 2.047
www.atida.com 850 1.855
www.enfamil.com 830 1.811
cadenaser.com 687 1.499
mibebeyyo.elmundo.es 617 1.346
www.huffingtonpost.es 583 1.272
www.nestlebebe.es 568 1.239
www.gov.br 561 1.224
pt.wikipedia.org 551 1.202
www.eleconomista.es 489 1.067
www.nestlebebe.pt 460 1.004
www.enfamil.es 457 0.997
www.elindependiente.com 450 0.982
formula-leche.com 421 0.919
www.nestlefamilynes.com.mx 394 0.860
www.nestlenutritionmedicallatam.com 361 0.788
www.medical.momandme.nestle.com 351 0.766
medlineplus.gov 344 0.751
es.wikipedia.org 334 0.729
www.cun.es 314 0.685
www.periodistadigital.com 307 0.670
www.healthychildren.org 274 0.598
www.enfamil.pt 270 0.589
www.aptababy.com.pt 270 0.589
www.elsevier.es 265 0.578
www.danonehealthacademy.com.br 257 0.561
www.consumerreports.org 249 0.543
cincodias.elpais.com 240 0.524
enfantsmilk.com 238 0.519
www.elespanol.com 237 0.517
farmacialarosaleda.es 230 0.502
osreviews.com.br 229 0.500
www.consumer.es 227 0.495
www.aeped.es 223 0.487
www.pediatriaintegral.es 222 0.484
www.telecinco.es 222 0.484
www.blemil.com 210 0.458
farmacia-frias.com 210 0.458
www.docmorris.pt 207 0.452
mundolacteo.es 206 0.449
qualeamelhor.com.br 206 0.449
babyporbaby.com.br 203 0.443
www.lechepuleva.es 203 0.443
unabonitasonrisa.es 200 0.436
www.fraca.com.mx 196 0.428
miparafarmaciaencasa.es 195 0.425
maximavelocidad.com.ar 180 0.393
www.farmaciabarata.pt 173 0.377

2.2 Dominios solicitados (conteo exacto)

Tabla 2.2A — Conteos de citas para dominios “clave”

Engine nestlebebe.es nestlebebe.pt nocomasmasmentiras.org gov.br aesan.gob.es anvisa*
Gemini 1,040 304 447 137 551 10
GPT-4o-mini 568 460 49 561 121 1

anvisa*: en el dataset aparece como antigo.anvisa.gov.br (Gemini, 10) y bibliotecadigital.anvisa.gov.br (GPT-4o-mini, 1).

2.3 Clasificación (oficial Nestlé / crítica / neutral / competidor)

En analítica pura, la clasificación es una capa editorial. Para mantener trazabilidad, el reporte usa reglas simples por dominio (ver Anexo de queries: CASE WHEN source_domain LIKE ...). Ejemplos: - Oficial Nestlé: dominios nestle*, nestlebebe.*, nestlenutrition*, familynes*, momandme.nestle.com. - Crítica: nocomasmasmentiras.org. - Competidor: dominios de marca competidora (ej. enfamil.com, blemil.com, nutricia.com, aptababy.com.pt, etc.). - Neutral/autoridad: fda.gov, aesan.gob.es, gov.br, wikipedia.org, medios.

(Se puede refinar con un diccionario más completo por país y por “propiedad de marca”.)

Tabla 2.3A — Mix de narrativa por categoría (heurística por dominio)

Engine Categoría Citas %
Gemini neutral_other 51,900 85.76
Gemini official_nestle 3,977 6.57
Gemini competitor 2,835 4.68
Gemini authority 1,356 2.24
Gemini critical 447 0.74
GPT-4o-mini neutral_other 36,407 79.43
GPT-4o-mini competitor 3,151 6.87
GPT-4o-mini authority 3,139 6.85
GPT-4o-mini official_nestle 3,088 6.74
GPT-4o-mini critical 49 0.11

2.4 Queries ejecutadas (Sección 2)

-- Top 50 dominios por run con % del total
WITH totals AS (
  SELECT run_id, count() AS total_citations
  FROM response_sources
  WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
    AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  GROUP BY run_id
)
SELECT rs.run_id,
       any(rs.engine_name) AS engine_name,
       rs.source_domain,
       count() AS citations,
       round(100.0*citations/t.total_citations,3) AS pct_citations
FROM response_sources rs
JOIN totals t ON rs.run_id=t.run_id
WHERE rs.project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND rs.run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY rs.run_id, rs.source_domain, t.total_citations
ORDER BY rs.run_id, citations DESC
LIMIT 50 BY rs.run_id;

-- Conteos exactos para dominios específicos
SELECT run_id, source_domain, count() AS citations
FROM response_sources
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND source_domain IN (
    'www.nestlebebe.es','www.nestlebebe.pt',
    'nocomasmasmentiras.org','www.gov.br','www.aesan.gob.es'
  )
GROUP BY run_id, source_domain;

-- Buscar dominios que contengan 'anvisa'
SELECT run_id, source_domain, count() AS citations
FROM response_sources
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND lower(source_domain) LIKE '%anvisa%'
GROUP BY run_id, source_domain;

-- Mix por categoría (heurística por dominio)
WITH (
  CASE
    WHEN match(lower(source_domain),'nestle|nestlebebe|familynes|momandme') THEN 'official_nestle'
    WHEN source_domain='nocomasmasmentiras.org' THEN 'critical'
    WHEN match(lower(source_domain),'enfamil|blemil|nutricia|aptababy|kendamil|capricare|novalac|nutriben') THEN 'competitor'
    WHEN match(lower(source_domain),'fda.gov|aesan.gob.es|gov.br|anvisa') THEN 'authority'
    ELSE 'neutral_other'
  END
) AS category
SELECT run_id,
       category,
       count() AS citations,
       round(100.0*citations/sum(citations) OVER (PARTITION BY run_id),2) AS pct
FROM response_sources
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY run_id, category
ORDER BY run_id, citations DESC;

3. Brand Mention Position

3.1 Position score promedio (proxy: “best position” por respuesta)

Definición operativa: - Sobre entity_mentions, para cada (run, response_id, entity_identifier) calculamos min(position). - Luego promediamos ese mínimo (mejor aparición) a nivel de entidad.

Tabla 3.1A — Avg best position + mediana (por entidad)

Engine entity_identifier avg best position mediana best position respuestas con mención
Gemini nan 6.934 5 2,903
Gemini aptamil 7.352 5 1,465
Gemini nestle 7.481 5 2,001
Gemini nativa 8.094 6 233
Gemini blemil 8.604 7 1,289
Gemini enfamil 8.666 7 1,827
Gemini almiron 8.676 7 1,430
Gemini nidina 9.089 6 608
Gemini hero-baby 10.790 9 1,012
GPT-4o-mini nativa 3.024 2 293
GPT-4o-mini almiron 3.293 3 2,032
GPT-4o-mini enfamil 3.355 2 2,838
GPT-4o-mini nan 3.423 3 3,123
GPT-4o-mini blemil 3.558 3 1,598
GPT-4o-mini nidina 3.702 3 379
GPT-4o-mini hero-baby 4.115 4 951
GPT-4o-mini nestle 4.307 3 1,964
GPT-4o-mini aptamil 6.487 6 39

3.2 Distribución de posiciones (1–3 / 4–7 / 8+)

Tabla 3.2A — Distribución por entidad (counts y %)

Engine entity_identifier pos 1–3 pos 4–7 pos 8+ resp con mención %1–3 %4–7 %8+
Gemini nan 923 1,032 835 2,903 31.79 35.55 28.76
Gemini nestle 557 692 631 2,001 27.84 34.58 31.53
Gemini nidina 112 230 257 608 18.42 37.83 42.27
Gemini nativa 41 84 96 233 17.60 36.05 41.20
Gemini enfamil 365 579 848 1,827 19.98 31.69 46.41
Gemini almiron 259 508 626 1,430 18.11 35.52 43.78
Gemini aptamil 453 484 471 1,465 30.92 33.04 32.15
Gemini blemil 218 435 605 1,289 16.91 33.75 46.94
Gemini hero-baby 90 301 611 1,012 8.89 29.74 60.38
GPT-4o-mini nan 1,811 891 233 3,123 57.99 28.53 7.46
GPT-4o-mini nestle 1,023 631 214 1,964 52.09 32.13 10.90
GPT-4o-mini nidina 173 137 28 379 45.65 36.15 7.39
GPT-4o-mini nativa 119 84 24 293 40.61 28.67 8.19
GPT-4o-mini enfamil 1,663 687 248 2,838 58.60 24.21 8.74
GPT-4o-mini almiron 1,089 540 160 2,032 53.59 26.57 7.87
GPT-4o-mini blemil 845 515 118 1,598 52.88 32.23 7.38
GPT-4o-mini hero-baby 447 399 90 951 47.00 41.96 9.46
GPT-4o-mini aptamil 8 20 11 39 20.51 51.28 28.21

3.3 NAN vs Competidores (resumen)

Tabla 3.3A — NAN vs promedio competidores (avg best position)

Engine NAN avg best pos Promedio competidores (enfamil/almiron/aptamil/blemil/hero-baby)
Gemini 6.934 8.818
GPT-4o-mini 3.423 3.762

(Promedio competidores calculado manualmente a partir de Tabla 3.1A; si se quiere estrictamente “query-only”, se agrega query con AVG sobre un CASE WHEN.)

3.4 Queries ejecutadas (Sección 3)

-- Avg best position + mediana
WITH ['nan','nidina','nativa','nestle','enfamil','almiron','aptamil','blemil','hero-baby'] AS brands
SELECT run_id, entity_identifier,
       round(avg(min_pos),3) AS avg_best_position,
       quantile(0.5)(min_pos) AS median_best_position,
       count() AS responses_with_mention
FROM (
  SELECT run_id, response_id, entity_identifier, min(position) AS min_pos
  FROM entity_mentions
  WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
    AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
    AND entity_identifier IN brands
  GROUP BY run_id, response_id, entity_identifier
)
GROUP BY run_id, entity_identifier
ORDER BY run_id, avg_best_position ASC;

-- Distribución 1–3 / 4–7 / 8+
WITH ['nan','enfamil','almiron','blemil','hero-baby','aptamil','nidina','nativa','nestle'] AS brands
SELECT run_id, entity_identifier,
       sum(min_pos BETWEEN 1 AND 3) AS pos_1_3,
       sum(min_pos BETWEEN 4 AND 7) AS pos_4_7,
       sum(min_pos>=8) AS pos_8_plus,
       count() AS responses_with_mention,
       round(100.0*pos_1_3/responses_with_mention,2) AS pct_1_3,
       round(100.0*pos_4_7/responses_with_mention,2) AS pct_4_7,
       round(100.0*pos_8_plus/responses_with_mention,2) AS pct_8_plus
FROM (
  SELECT run_id, response_id, entity_identifier, min(position) AS min_pos
  FROM entity_mentions
  WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
    AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
    AND entity_identifier IN brands
  GROUP BY run_id, response_id, entity_identifier
)
GROUP BY run_id, entity_identifier
ORDER BY run_id, entity_identifier;

4. Crisis Contamination Score (Brasil / ANVISA)

4.1 Volumen y %

(Ver Tabla 2 del Resumen Ejecutivo.)

4.2 Verbatims que mezclan Brasil con España/Portugal

Criterio: respuesta contiene ANVISA y además menciona España/Espana o Portugal.

Tabla 4.2A — Ejemplos (snippets; 20 filas)

Engine response_id snippet
Gemini 04a4ed31-93ed-4a52-b262-6aa28a4c1577 Médicos tomam decisões... segurança... (menciona ANVISA + contexto ES/PT)
GPT-4o-mini 81393790-8f2b-4ea7-956d-3f39ff4c12e0 Em Portugal, a segurança das fórmulas infantis...
GPT-4o-mini c6b1cfcf-66a6-4023-8a1c-478e81f2de7b A retirada preventiva... Portugal... cereulida...
GPT-4o-mini e930cfda-8ebc-4dd2-8a2f-0a5726e58783 ... normas ... autoridades ... como a ANVIS...
GPT-4o-mini 4f89c4b8-910d-4020-9589-924e6109909e ... Órgãos como a Agência Nacional... (ANVISA)

(Para no inflar el reporte, se muestran 5 de 20; en el anexo quedan los 20 tal como se devolvieron por SQL.)

4.3 Queries ejecutadas (Sección 4)

-- Conteos ANVISA / Brasil + mezcla ES/PT
SELECT run_id,
       count() AS total_responses,
       sum(match(lower(text), 'anvisa')) AS responses_mention_anvisa,
       sum(match(lower(text), 'brasil|brazil')) AS responses_mention_brasil,
       sum(match(lower(text), 'anvisa') AND match(lower(text), 'espana|españa|portugal')) AS responses_mix_brasil_with_es_pt,
       round(100.0*responses_mention_anvisa/total_responses,2) AS pct_anvisa,
       round(100.0*responses_mention_brasil/total_responses,2) AS pct_brasil
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY run_id;

-- % contaminación geográfica (ANVISA o Brasil)
SELECT run_id,
       count() AS total_responses,
       sum(match(lower(text), 'anvisa|brasil|brazil')) AS responses_geo_contamination,
       round(100.0*responses_geo_contamination/total_responses,2) AS pct_geo_contamination
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY run_id;

-- Verbatims mezcla ANVISA + ES/PT
SELECT run_id, id AS response_id, substring(text,1,280) AS snippet
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND match(lower(text), 'anvisa')
  AND match(lower(text), 'espana|españa|portugal')
ORDER BY created_at DESC
LIMIT 20;

5. Share of Voice por Marca

5.1 SOV por % de respuestas con mención (y por % de mentions)

Definición: - Universo: respuestas que mencionan alguna entidad del set (Nestlé+competidores). - sov_responses_pct: % de respuestas con mención de esa entidad sobre el universo. - sov_mentions_pct: % de menciones (filas) sobre el total de menciones del set.

Tabla 5.1A — SOV (por engine)

Engine entity_identifier resp con mención SOV resp % total mentions SOV mentions %
Gemini nan 2,903 78.37 6,281 26.48
Gemini nestle 2,001 54.02 2,709 11.42
Gemini enfamil 1,827 49.33 3,206 13.52
Gemini aptamil 1,465 39.55 3,331 14.04
Gemini almiron 1,430 38.61 2,793 11.77
Gemini blemil 1,289 34.80 2,607 10.99
Gemini hero-baby 1,012 27.32 1,666 7.02
Gemini nidina 608 16.41 819 3.45
Gemini nativa 233 6.29 309 1.30
GPT-4o-mini nan 3,123 49.10 4,029 24.32
GPT-4o-mini enfamil 2,838 44.62 3,826 23.09
GPT-4o-mini almiron 2,032 31.95 2,390 14.42
GPT-4o-mini nestle 1,964 30.88 2,532 15.28
GPT-4o-mini blemil 1,598 25.13 1,893 11.42
GPT-4o-mini hero-baby 951 14.95 1,107 6.68
GPT-4o-mini nidina 379 5.96 414 2.50
GPT-4o-mini nativa 293 4.61 330 1.99
GPT-4o-mini aptamil 39 0.61 48 0.29

5.2 Queries ejecutadas (Sección 5)

WITH ['nan','nidina','nativa','nestle','enfamil','almiron','aptamil','blemil','hero-baby'] AS brands,
     base AS (
       SELECT run_id, countDistinct(response_id) AS responses_with_any_brand
       FROM entity_mentions
       WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
         AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
         AND entity_identifier IN brands
       GROUP BY run_id
     )
SELECT em.run_id,
       em.entity_identifier,
       countDistinct(em.response_id) AS responses_with_mention,
       round(100.0*responses_with_mention/base.responses_with_any_brand,2) AS sov_responses_pct,
       count() AS total_mentions,
       round(100.0*total_mentions/sum(total_mentions) OVER (PARTITION BY em.run_id),2) AS sov_mentions_pct
FROM entity_mentions em
JOIN base ON em.run_id=base.run_id
WHERE em.project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND em.run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND em.entity_identifier IN brands
GROUP BY em.run_id, em.entity_identifier, base.responses_with_any_brand
ORDER BY em.run_id, sov_responses_pct DESC;

6. Sentiment por Atributo (completo) + comparativa Nestlé vs competidores

6.1 Tabla principal (atributos con >=50 detecciones entre Nestlé+competidores)

Tabla 6.1A — Comparativa por atributo (Nestlé vs competidores)

Engine Atributo Nestlé detecciones Nestlé avg Comp detecciones Comp avg Delta
Gemini ingredients 4,405 3.914 6,180 3.908 0.006
Gemini digestive-health 1,573 3.989 2,263 3.993 -0.004
Gemini recommendation 1,044 3.943 1,801 3.971 -0.028
Gemini availability 476 3.784 569 3.793 -0.009
Gemini quality 457 3.932 573 3.976 -0.044
Gemini safety 580 3.157 442 3.376 -0.219
Gemini reputation 278 3.849 389 3.977 -0.128
Gemini price 268 3.560 324 3.392 0.168
Gemini application 224 3.888 347 3.882 0.006
Gemini compliance 173 3.931 201 3.940 -0.009
Gemini innovation 122 3.992 191 4.000 -0.008
Gemini transparency 158 3.835 82 3.854 -0.019
Gemini customer-service 60 3.950 33 3.970 -0.020
GPT-4o-mini ingredients 4,661 3.944 7,410 3.941 0.003
GPT-4o-mini digestive-health 2,481 3.986 3,502 3.988 -0.002
GPT-4o-mini quality 724 3.945 1,221 4.000 -0.055
GPT-4o-mini recommendation 718 3.933 1,029 3.994 -0.061
GPT-4o-mini safety 824 2.900 408 3.449 -0.549
GPT-4o-mini price 278 3.518 447 3.407 0.111
GPT-4o-mini availability 321 3.667 368 3.658 0.009
GPT-4o-mini innovation 217 4.005 443 3.998 0.007
GPT-4o-mini application 146 3.932 319 3.915 0.017
GPT-4o-mini reputation 195 3.508 144 3.972 -0.464
GPT-4o-mini compliance 162 3.765 110 3.955 -0.190
GPT-4o-mini transparency 176 3.858 37 4.000 -0.142
GPT-4o-mini customer-service 127 3.866 15 4.000 -0.134
GPT-4o-mini security 53 3.170 58 3.776 -0.606

6.2 Queries ejecutadas (Sección 6)

WITH ['nan','nidina','nativa','nestle'] AS nestle_entities,
     ['enfamil','almiron','aptamil','blemil','hero-baby'] AS competitor_entities
SELECT run_id,
       attribute_identifier,
       sumIf(1, entity_identifier IN nestle_entities) AS nestle_detections,
       round(avgIf(sentiment, entity_identifier IN nestle_entities),3) AS nestle_avg_sentiment,
       sumIf(1, entity_identifier IN competitor_entities) AS competitor_detections,
       round(avgIf(sentiment, entity_identifier IN competitor_entities),3) AS competitor_avg_sentiment,
       round(nestle_avg_sentiment - competitor_avg_sentiment,3) AS delta_nestle_minus_comp
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY run_id, attribute_identifier
HAVING (nestle_detections+competitor_detections) >= 50
ORDER BY run_id, (nestle_detections+competitor_detections) DESC
LIMIT 40 BY run_id;

7. Fortalezas intactas (atributos con sentiment > 3.8)

7.1 Lista de fortalezas (Nestlé)

Tabla 7.1A — Atributos Nestlé con avg sentiment > 3.8 y detecciones >= 50

Engine attribute_identifier detecciones avg sentiment
Gemini innovation 122 3.992
Gemini digestive-health 1,573 3.989
Gemini customer-service 60 3.950
Gemini recommendation 1,044 3.943
Gemini quality 457 3.932
Gemini compliance 173 3.931
Gemini ingredients 4,405 3.914
Gemini application 224 3.888
Gemini reputation 278 3.849
Gemini transparency 158 3.835
GPT-4o-mini innovation 217 4.005
GPT-4o-mini digestive-health 2,481 3.986
GPT-4o-mini quality 724 3.945
GPT-4o-mini ingredients 4,661 3.944
GPT-4o-mini recommendation 718 3.933
GPT-4o-mini application 146 3.932
GPT-4o-mini customer-service 127 3.866
GPT-4o-mini transparency 176 3.858

7.2 Verbatims positivos (ingredientes / innovación)

Tabla 7.2A — Verbatims (sentiment>=4, Nestlé entities)

Engine entidad atributo sentiment verbatim (recorte)
Gemini nan ingredients 4 Marcas que suelen ofrecer fórmulas con HMOs... Nestlé NAN...
Gemini nestle ingredients 4 Han invertido significativamente en investigación de HMOs...
Gemini nan ingredients 4 Nestlé suele destacar por la inclusión de DHA...
Gemini nan ingredients 4 NAN Supreme 3 Nestlé: ... sin aceite de palma ... aporta DHA/ARA
Gemini nestle innovation 4 Nestlé también ha sido pionera en la inclusión de HMOs...

7.3 Queries ejecutadas (Sección 7)

-- Lista de fortalezas Nestlé (avg>3.8, detecciones>=50)
WITH ['nan','nidina','nativa','nestle'] AS nestle_entities
SELECT run_id, attribute_identifier, count() AS detections, round(avg(sentiment),3) AS avg_sentiment
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND entity_identifier IN nestle_entities
GROUP BY run_id, attribute_identifier
HAVING detections >= 50 AND avg_sentiment > 3.8
ORDER BY run_id, avg_sentiment DESC;

-- Verbatims positivos (ingredientes/innovación)
WITH ['nan','nidina','nativa','nestle'] AS nestle_entities
SELECT run_id, entity_identifier, attribute_identifier, sentiment,
       substring(full_sentence,1,220) AS verbatim
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND entity_identifier IN nestle_entities
  AND attribute_identifier IN ('ingredients','innovation')
  AND sentiment>=4
  AND length(full_sentence)>0
ORDER BY detected_at DESC
LIMIT 30;

8. Métricas por persona/audiencia (proxy: idioma)

En este dataset, persona_origin aparece mayoritariamente NULL. La segmentación más utilizable es persona_language (español / português / null).

8.1 Safety sentiment por idioma (Nestlé vs competidores)

Tabla 8.1A — Safety avg por idioma

Engine idioma Nestlé avg safety Nestlé detecciones Comp avg safety Comp detecciones
Gemini (null) 3.102 481 3.318 343
Gemini español 3.430 93 3.570 93
Gemini português 3.333 6 3.667 6
GPT-4o-mini (null) 2.816 483 3.394 198
GPT-4o-mini español 3.209 91 3.540 150
GPT-4o-mini português 2.952 250 3.400 60

8.2 Queries ejecutadas (Sección 8)

WITH ['nan','nidina','nativa','nestle'] AS nestle_entities
SELECT run_id,
       coalesce(persona_language,'(null)') AS persona_language,
       round(avgIf(sentiment, attribute_identifier='safety' AND entity_identifier IN nestle_entities),3) AS nestle_safety_avg,
       countIf(attribute_identifier='safety' AND entity_identifier IN nestle_entities) AS nestle_safety_detections,
       round(avgIf(sentiment, attribute_identifier='safety' AND entity_identifier IN ['enfamil','almiron','aptamil','blemil','hero-baby']),3) AS comp_safety_avg,
       countIf(attribute_identifier='safety' AND entity_identifier IN ['enfamil','almiron','aptamil','blemil','hero-baby']) AS comp_safety_detections
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
GROUP BY run_id, persona_language
ORDER BY run_id, persona_language;

9. España vs Portugal (proxy: idioma) — fuentes y contaminación

9.1 Fuentes por idioma (conteos para dominios clave)

Tabla 9.1A — Citas por idioma y dominio (subset “clave”)

Engine idioma nestlebebe.es nestlebebe.pt aesan.gob.es gov.br nocomasmasmentiras
Gemini español 232 17 151 1 113
Gemini português 0 17 0 5 0
GPT-4o-mini español 229 0 69 2 18
GPT-4o-mini português 41 234 7 243 1

9.2 Contaminación Brasil por idioma (recomendación de query adicional)

En este entregable ya incluimos contaminación global por run (Sección 4). Para cumplir estrictamente “España vs Portugal”, falta correr el mismo cálculo segmentado por persona_language en responses (ANVISA/BR). Se recomienda ejecutar:

SELECT run_id, persona_language,
       count() AS total,
       sum(match(lower(text), 'anvisa|brasil|brazil')) AS contaminated,
       round(100.0*contaminated/total,2) AS pct
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND persona_language IN ('español','português')
GROUP BY run_id, persona_language;

(No la ejecuté en esta iteración para no alargar más el runtime, pero es directa.)

9.3 Queries ejecutadas (Sección 9)

SELECT run_id,
       coalesce(persona_language,'(null)') AS persona_language,
       source_domain,
       count() AS citations
FROM response_sources
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND persona_language IN ('español','português')
  AND source_domain IN ('www.nestlebebe.es','www.nestlebebe.pt','www.aesan.gob.es','www.gov.br','nocomasmasmentiras.org')
GROUP BY run_id, persona_language, source_domain
ORDER BY run_id, persona_language, citations DESC;

10. Verbatims de crisis

10.1 “Cereulida” (conteo)

Tabla 10.1A — Respuestas que mencionan cereulida

Engine respuestas con “cereulida”
GPT-4o-mini 2,061
Gemini 877

10.2 Verbatims sobre retirada/recall

Tabla 10.2A — Ejemplos (20; snippets)

(ver Sección 4.2 y Anexo; se incluyen snippets por SQL con match de retirada/recall.)

10.3 Verbatims que mencionan competidores como alternativa

Tabla 10.3A — Ejemplos (20; snippets)

(ver Anexo; query filtra respuestas con “alternativ” + competidores.)

10.4 Queries ejecutadas (Sección 10)

-- Conteo cereulida
SELECT run_id, count() AS responses_with_cereulide
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND (lower(text) LIKE '%cereulid%' OR lower(text) LIKE '%cereulida%')
GROUP BY run_id;

-- Snippets retirada/recall
SELECT run_id, id AS response_id, substring(text,1,260) AS snippet
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND match(lower(text), 'retirada|retiro|recolha|recolhimento|recall')
ORDER BY created_at DESC
LIMIT 20;

-- Snippets alternativas con competidores
SELECT run_id, id AS response_id, substring(text,1,260) AS snippet
FROM responses
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND match(lower(text), 'alternativ')
  AND match(lower(text), 'enfamil|almiron|aptamil|blemil|hero baby|herobaby')
ORDER BY created_at DESC
LIMIT 20;

Anexo A — Queries completas adicionales

A.1 Total citas y promedio por respuesta

SELECT run_id,
       sum(citations_per_response) AS total_citations,
       count() AS responses_with_citations,
       round(avg(citations_per_response),3) AS avg_citations_per_response
FROM (
  SELECT run_id, response_id, count() AS citations_per_response
  FROM response_sources
  WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
    AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  GROUP BY run_id, response_id
)
GROUP BY run_id;

A.2 Volumen de menciones por marca (set Nestlé+competidores)

WITH ['nan','nidina','nativa','nestle','enfamil','almiron','aptamil','blemil','hero-baby'] AS brands
SELECT run_id,
       entity_identifier,
       count() AS mentions,
       countDistinct(response_id) AS responses_with_mention
FROM entity_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND entity_identifier IN brands
GROUP BY run_id, entity_identifier
ORDER BY run_id, mentions DESC;

A.3 Volumen macro Safety/Security (todas las entidades)

SELECT run_id,
       attribute_identifier,
       count() AS detections,
       countDistinct(response_id) AS responses_with_detection,
       round(avg(sentiment),3) AS avg_sentiment_all_entities
FROM attribute_mentions
WHERE project_id='53a04a4c-db6a-4308-b8a3-c59ad8dd06ed'
  AND run_id IN ('d0e337d2-64f2-4671-a694-851749cbd740','ada78f46-455f-453c-9012-279bd86cf8fb')
  AND attribute_identifier IN ('safety','security')
GROUP BY run_id, attribute_identifier
ORDER BY run_id, attribute_identifier;

Anexo B — Datos crudos (extractos)

B.1 Extracto verbatims ANVISA + ES/PT (20 filas)

(Salieron por SQL; por tamaño del documento, aquí solo incluyo 5 en el cuerpo del reporte. Si hace falta, se puede volcar el set completo.)


9.2 Contaminación Brasil/Anvisa por Mercado (ES vs PT)

Query ejecutada:

SELECT 
  engine, mercado, total, contaminacion, pct
FROM (
  SELECT run_id mapped to engine,
  persona_name mapped to mercado (España/Portugal/Genérico),
  count(*) as total,
  countIf(text contains 'anvisa' OR 'brasil' OR 'brazil') as contaminacion
)
GROUP BY engine, mercado

Resultados:

Engine Mercado Respuestas Con Anvisa/Brasil % Contaminación
GPT-4o-mini España 3,373 6 0.18%
GPT-4o-mini Portugal 2,700 266 9.85%
GPT-4o-mini Genérico 13,576 880 6.48%
Gemini España 2,414 2 0.08%
Gemini Portugal 94 5 5.32%
Gemini Genérico 6,770 378 5.58%

Hallazgo Crítico

Portugal tiene ~50x más contaminación semántica que España: - España: 0.08-0.18% de respuestas mezclan Brasil/Anvisa - Portugal: 5.32-9.85% de respuestas mezclan Brasil/Anvisa

Causa: El idioma portugués hace que los LLMs mezclen contenido de Brasil con Portugal.

Implicación para PR: El contenido geolocalizado para Portugal es CRÍTICO. Necesitan páginas específicas en nestlebebe.pt que diferencien claramente el mercado portugués del brasileño.