latentSource

Puse una IA en mi quiniela del Mundial. Así es como le fue realmente.

Un bot que lee el estado de los partidos en vivo desde la web abierta, convierte una lectura cualitativa de cada juego en un marcador y es evaluado diariamente frente a resultados reales. Tras una semana y media, ya tenemos las cifras.

15 de junio de 2026·6 min read
Compartir
Puse una IA en mi quiniela del Mundial. Así es como le fue realmente.

Cada Mundial, mis amigos organizan una quiniela de predicciones. Pronosticas el marcador de cada partido, obtienes puntos por acercarte y alguien lanza provocaciones en el chat grupal durante un mes. Este año, agregué a nuestra quiniela un doceavo jugador que no es una persona. Es un agente que integré en una aplicación de Discord; predice cada partido por su cuenta y se le califica frente a resultados reales exactamente igual que al resto de nosotros. Lo llamamos Memo Ocho Bits.

No quería un juguete. Quería saber si un LLM con grounding en datos de la web en vivo podría realmente competir con personas que ven mucho fútbol. Así que le asigné dos tareas reales: leer el estado en vivo de cada partido de la web abierta y convertir una lectura cualitativa de cada juego en una predicción concreta; luego, lo evalué frente a la realidad cada día. Ambas tareas se ejecutan en Google Gemini. Así es como funciona cada una y, después, la parte que importa: si es realmente bueno.

Lectura del estado del partido en vivo

El problema más difícil no es el modelo. Es que los datos de entrenamiento del modelo no tienen idea de qué sucedió en un partido que comenzó hace veinte minutos. Los pesos estáticos no pueden decirte el marcador actual. Por lo tanto, el rastreador en vivo no le pregunta a Gemini qué sabe, sino que le pide a Gemini que vaya a leer la web en este momento, utilizando el grounding de Google Search. Esa función de grounding es la única razón por la que esto funciona y, por el momento, es el único diferenciador real que Gemini tiene sobre otros proveedores para este tipo de tareas.

Cada pocos minutos, para cada partido en su ventana de tiempo en vivo, el bot lanza una consulta con grounding, recibe un cúmulo de texto de análisis extraído de lo que sea que la web esté diciendo sobre el juego y luego obliga a ese desorden a adoptar una forma estricta:

{{ "home_score": 2, "away_score": 1, "minute": 67, "status": "live", "confidence": 0.86 }}

Así, el parloteo cualitativo de un partido en vivo —comentarios, crónicas, medias frases como "y es el dos-uno tras una hora de juego accidentada"— se reduce a unos pocos campos tipificados sobre los que el resto del sistema puede actuar. Si la confianza supera el umbral y el partido parece haber finalizado, el bot registra ese marcador en la base de datos y vuelve a calcular los puntos de las predicciones de todos. Sin humanos de por medio. Esa última parte me puso nervioso al principio, por eso existe el filtro de confianza. Una lectura con grounding de un juego en vivo es buena pero no infalible, y no querrás liquidar una quiniela basada en un 3-2 alucinado.

Convirtiendo una lectura del juego en un número

Ahora la parte que compite con mis amigos. Antes de un partido, la IA hace su elección en dos llamadas a Gemini, no en una, y la división es deliberada.

La primera llamada es la cualitativa. Lee la web para este encuentro (fixture) —cuotas de apuestas, previas de expertos, estado de forma, lesiones— y escribe una evaluación honesta de cómo es probable que se desarrolle el juego. Eso genera un párrafo de razonamiento anclado en lo que los corredores de apuestas y analistas realmente piensan hoy, no en lo que un modelo recuerda vagamente de su entrenamiento. La segunda llamada toma ese párrafo y exprime el juicio en un número:

{{ "home_goals": 1, "away_goals": 0, "confidence": 0.62 }}

Mantengo esto como dos pasos a propósito. Una lectura cualitativa y una extracción numérica limpia son tareas diferentes, y pedirle a una sola llamada que razone libremente y emita un JSON ordenado te da una versión peor de cada una. Al separarlas, el razonamiento se mantiene rico mientras que la salida sigue siendo procesable (parseable). Todo el conjunto de prompts reside en archivos editables, por lo que cuando la IA dice algo tonto, puedo ajustar las instrucciones sin tener que volver a desplegar el código.

La elección se distribuye entonces a cada servidor que ejecuta una quiniela y se introduce como una predicción normal bajo el ID de usuario 1. Desde el punto de vista de la tabla de posiciones, es solo otro jugador.

Evaluándolo cada día

Esta es la parte que más me importa, porque es la que mantiene la honestidad de todos. La IA es calificada con las mismas reglas estilo Kicktipp que los humanos: acierta el marcador exacto y obtienes el máximo de puntos; acierta la diferencia de goles y obtienes un poco menos; solo acierta al ganador y obtienes menos aún; y si fallas el resultado por completo, obtienes un punto de participación. Los partidos de eliminación directa valen el doble. Las predicciones de la IA pasan por la misma función de puntuación en el segundo en que un partido finaliza. Sin trato especial, sin evaluar con curva.

Hasta ahora, con 28 partidos terminados en el tablero, aquí está el marcador honesto para Memo Ocho Bits.

Acertó el marcador exacto 3 veces: México 2-0 Sudáfrica, Austria 3-1 Jordania, Ghana 1-0 Panamá. Acertó al ganador —o predijo correctamente el empate— en 16 de 28 partidos. Eso es un 57%, en un resultado de tres vías donde adivinar al azar se sitúa en el 33%. No es magia, pero claramente está haciendo algo.

Invalid viz:graph block: expected JSON like {"name":"my_graph"}.

Cada predicción que la IA ha hecho hasta ahora, por día de partido. El verde es un marcador exacto, el azul acertó al ganador o el empate, el gris falló el resultado. Pasa el cursor sobre cualquier segmento para ver el recuento. El 15 de junio, todo en gris, es el día con muchos empates que se describe a continuación.

Lo interesante es dónde brilla y dónde se desmorona, y los datos lo revelan con claridad. Su mejor día fue el 16 de junio: cuatro partidos, cuatro ganadores correctos, uno de ellos un acierto exacto en el Austria. El peor fue el 15 de junio, donde se fue 0 de 4; y cuando revisé, esa jornada tuvo tres empates (España 0-0 Cabo Verde, Irán 2-2 Nueva Zelanda, Arabia Saudita 1-1 Uruguay), y la IA no predijo ninguno. Los empates son donde todos los pronosticadores fallan, tanto humanos como máquinas. El modelo, anclado en las cuotas de apuestas, casi nunca predice un empate porque los favoritos son los favoritos, y lo hizo de nuevo hoy: Chequia 1-1 Sudáfrica, que la IA tenía como un ordenado 2-0. Así que sigue perdiendo en las sorpresas (upsets).

El otro indicio está en los residuales: subestima las goleadas. Tenía a Alemania sobre Curazao, pero dijo 3-0; el marcador real fue 7-1. La misma historia con Suecia 5-1 y EE. UU. 4-1, ambos los pronosticó como victorias ajustadas de 1-0, y nuevamente hoy en Canadá 6-0 Qatar, donde predijo un educado 2-1. Al basarse en las cuotas, predice marcadores cautelosos y plausibles, que es exactamente lo que describen las apuestas y lo que lo hace aburrido y correcto la mayoría de las veces. Acierta la dirección y subestima la magnitud: un pronosticador que se ciñe al promedio.

Hoy fue un buen día por lo demás: tres de cuatro ganadores acertados, incluyendo a México superando a Corea 1-0 y Suiza venciendo a Bosnia, y esa ronda lo hizo subir en la tabla. La posición que realmente define las provocaciones: en nuestra quiniela, Memo Ocho Bits ahora ocupa el segundo lugar de 12, después de jugar los 28 partidos. Por delante de él está un humano que ve una cantidad de fútbol francamente irrazonable y le lleva 8 puntos de ventaja. Detrás hay diez personas, varias de las cuales están siendo superadas por un bot y no lo están disfrutando.

Invalid viz:graph block: expected JSON like {"name":"my_graph"}.

Posiciones de la quiniela hasta ahora. La IA (ámbar) ocupa el segundo lugar de 12, a 8 puntos del líder. Pasa el cursor sobre cualquier barra para ver los partidos jugados y los marcadores exactos. Juega todos los encuentros, lo que es parte de cómo se mantiene cerca de la cima: nunca se salta un día.

Lo que realmente aprendí

Ninguna de las dos tareas está haciendo algo exótico. Búsqueda con grounding en lugar de confiar en los pesos. Una lectura cualitativa separada de la extracción numérica para que cada llamada haga bien una sola cosa. La misma función de puntuación para la máquina y las personas. La lección, la que sigo reaprendiendo, es que la parte interesante nunca fue la llamada al modelo, sino la disciplina de datos a su alrededor. El filtro de confianza que no liquidará una quiniela con una mala lectura. El paso de salida estructurada que mantiene cada elección procesable. Y la honestidad de evaluar el sistema frente a la realidad todos los días, que es lo que hizo surgir los dos patrones que vale la pena conocer: no puede predecir un empate y siempre ajusta el marcador hacia el favorito.

Quedar segundo frente a humanos que realmente conocen el deporte es, honestamente, un mejor resultado de lo que esperaba. Puede que no gane la quiniela: el líder le lleva 8 puntos y tiene seis marcadores exactos frente a sus tres. Pero está venciendo a todos los demás en la sala, nunca se queda dormido antes de un partido y tiene opiniones sobre Curazao. Para un sistema que es principalmente búsqueda con grounding y un cuidadoso código de enlace (glue code), lo acepto. Puedes verlo seguir jugando durante el torneo en mundial.mexicodev.org.