Todos los recursos

Casi todas las herramientas de apoyo a decisiones modelan, sin decirlo, a una contraparte racional, cooperativa y que muy convenientemente te da la razón. Ese modelo no sirve justo cuando más lo necesitas. Esta guía te lleva paso a paso a armar un modelo de oponente de mayor fidelidad con un LLM, de la evidencia al perfil y al ciclo de simular-y-estresar, más los modos de falla que hacen que un modelo se vea seguro y esté equivocado.

Modelado de oponentes, desde cero y en la práctica

En resumen

  • Un modelo de oponente es una simulación de cómo razona y reacciona el otro lado, no una corazonada de lo que va a decir. Ármalo con evidencia, no con intuición.
  • Separa tres cosas de forma explícita: sus metas, sus restricciones y su BATNA (qué hace si te paras de la mesa). Los modelos flojos las revuelven.
  • Por defecto, el modelo asume una contraparte racional y cooperativa. Las de verdad mienten, anclan y actúan por emoción: tienes que pedirle al modelo que se porte mal.
  • No modeles un solo oponente; modela un panel de tipos posibles y prueba tu jugada contra todos. Una jugada que solo funciona contra el tipo amable es frágil.
  • Trata las predicciones como falsables. Anota lo que el modelo dijo que iba a hacer la contraparte, compáralo con lo que hizo de verdad y afina el perfil.

El modelado de oponentes es la parte del apoyo a decisiones que todo el mundo quiere y casi todos hacen mal. La promesa es sencilla: antes de comprometerte con una jugada (una oferta, un precio, una declaración pública) simulas cómo va a reaccionar el otro lado y eliges la jugada que sobrevive a esa reacción. La trampa es igual de sencilla: un LLM, dejado solo, te va a modelar una contraparte racional, bien informada, cooperativa y que en silencio te da la razón en lo que ya te estabas inclinando. Ese modelo da tranquilidad y se equivoca justo cuando más hay en juego. Al terminar esta guía vas a saber armar un modelo de oponente a partir de evidencia, separar metas de restricciones y de puntos de retiro, correr un ciclo de simular-y-estresar en código y mantener todo honesto comparando sus predicciones con la realidad. Los ejemplos van en TypeScript y Claude, y el modelo mental es el que está detrás de Proyección y ThinkTank AI, pero la disciplina aplica a cualquier stack.

Importante

Requisitos previos. Ya deberías sentirte cómodo haciendo una llamada estructurada a un LLM: definir un esquema de salida, parsearlo y manejar una llamada que falla, alucina un campo o devuelve JSON malformado. El modelado de oponentes es una capa de criterio que va encima de esa plomería. Si la salida estructurada todavía se te complica, arregla eso primero: un parse frágil produce una predicción frágil, y no vas a poder distinguir una falla de la otra.

01 · Entiende qué es de verdad un modelo de oponente

Un modelo de oponente es una simulación de cómo razona y reacciona una contraparte, que usas para predecir su respuesta a una jugada que todavía no has hecho. El énfasis está en razona. Un modelo que solo predice las palabras que va a decir el otro lado es un loro; uno útil predice la decisión que hay detrás de las palabras, así que generaliza a jugadas que no le preguntaste de forma explícita.

Conviene ser honesto con lo que esto no es. No es leer la mente, no es una garantía y no es un solo número. Es una suposición estructurada cuyo valor viene por completo de la calidad de sus insumos y de qué tan duro la pongas a prueba. Un modelo de oponente con mucha confianza pero armado sobre evidencia floja es más peligroso que no tener modelo, porque disfraza una corazonada de algo que parece análisis.

La unidad básica de un modelo de oponente es el perfil de la contraparte: una descripción compacta y respaldada por evidencia de las metas, restricciones, presiones y estilo de decisión de un lado. Todo lo demás en esta guía se trata de armar bien ese perfil y después negarte a confiar en él más de lo que merece.

02 · Arma el perfil con evidencia, no con intuición

La fidelidad viene de insumos concretos. La mejora más grande que le puedes hacer a un modelo de oponente es dejar de describir a la contraparte con adjetivos ("agresiva", "razonable") y empezar a describirla con hechos: qué ha dicho, qué ha hecho antes, a quién le rinde cuentas y qué tiene de verdad en juego.

Separa tres cosas que los modelos flojos confunden todo el tiempo:

  • Metas: lo que está tratando de lograr. Ojo: las metas declaradas y las reales casi siempre difieren; captura ambas y marca cuál es cuál.
  • Restricciones: lo que no puede hacer por más que quiera. Un techo de presupuesto, un jefe que tiene que aprobar, una fecha límite, una reputación que debe cuidar.
  • BATNA: su Mejor Alternativa a un Acuerdo Negociado, o sea qué hace si se para de la mesa. Es el campo más predictivo y el que la gente más se salta. Quien tiene un BATNA fuerte puede darse el lujo de ser paciente; quien lo tiene débil está bajo una presión que tal vez esté escondiendo.

Escribe el perfil como data, no como prosa, para poder versionarlo, sacarle el diff y pasárselo limpio al modelo.

type CounterpartType = "aggressive" | "cautious" | "principled" | "desperate"

type CounterpartPersona = {
  id: string
  type: CounterpartType
  statedGoals: string[]
  inferredGoals: string[]   // lo que la evidencia sugiere que de verdad quiere
  constraints: string[]     // limites duros, ej. "necesita firma del VP por encima de 50k"
  batna: string             // que hace si se para de la mesa
  pastBehavior: string[]    // jugadas observadas concretas, no adjetivos
  pressures: string[]       // fechas limite, reputacion, politica interna
}

Consejo

Pásale la prueba de evidencia a cada campo. Por cada línea del perfil, pregúntate "¿qué cosa concreta observé que respalde esto?". Si la respuesta honesta es "me dio esa impresión", mueve esa afirmación a una lista aparte de supuestos. Los supuestos no están prohibidos: son, simplemente, cosas que vas a tener que estresar más fuerte después.

03 · Haz que el modelo simule razonamiento, no que repita tu encuadre

Aquí es donde la mayoría de los modelos de oponente fallan en silencio. Si te limitas a pasarle a Claude el estado del trato y preguntarle "¿cómo respondería a esta oferta?", tiende a razonar desde tu encuadre, a asumir buena fe y a producir una contraparte que es básicamente una versión cortés de ti. Tienes que romper ese comportamiento por defecto a propósito.

Tres instrucciones hacen casi todo el trabajo:

  1. Que argumente desde los intereses de la contraparte, no los tuyos. Dile al modelo que razone estrictamente como la contraparte, optimizando las metas y el BATNA de ella, sin ninguna obligación de ser justo contigo.
  2. Dale permiso de portarse mal. Déjale claro, de forma explícita, que la contraparte puede farolear, anclar alto, dilatar, apelar a la emoción o actuar contra su propio interés declarado bajo presión. Sin esto, te queda un actor racional de manual.
  3. Pide la decisión y después las palabras. Que devuelva primero la elección de fondo (aceptar / contraofertar / pararse de la mesa / dilatar) y por qué, y solo después la respuesta de superficie. El razonamiento es lo que vas a estresar; las palabras son apenas la punta visible.
type SimResult = {
  decision: "accept" | "counter" | "walk" | "stall"
  reasoning: string        // el porque, desde SUS intereses
  likelyResponse: string   // lo que de verdad diria
  concessionRoom: string   // donde todavia tiene margen para moverse
  confidence: number       // 0-1, el propio hedge del modelo
}

async function simulate(
  persona: CounterpartPersona,
  dealState: string,
  yourMove: string,
): Promise<SimResult> {
  // El system prompt instruye: razona SOLO como este perfil, optimiza SUS
  // metas + BATNA, PUEDES farolear/anclar/dilatar/actuar por emocion, devuelve
  // la decision y el razonamiento antes que las palabras. Devuelve JSON estricto.
  return callClaudeAsCounterpart(persona, dealState, yourMove)
}

Atención

Si tu oponente simulado nunca dice que no, nunca se para de la mesa y nunca te incomoda, el modelo está roto: está modelando un sí, no a una contraparte. Un buen modelo de oponente debería decirte cada cierto tiempo que tu jugada favorita es una perdedora. Si nunca lo hace, lo que armaste fue un espejo.

04 · No modeles un oponente; modela un panel y estrésalo

Las contrapartes reales son inciertas. Rara vez sabes si tienes enfrente a alguien agresivo o cauteloso, con recursos o desesperado. Modelar un solo perfil, el "más probable", apuesta todo en silencio a que esa corazonada esté bien. En vez de eso, arma un panel pequeño de tipos posibles y corre tu jugada candidata contra todos.

El procedimiento:

  1. Saca de dos a cuatro perfiles de la misma evidencia: la lectura agresiva, la cautelosa, la desesperada, la de principios. Comparten los mismos hechos, pero difieren en tipo y metas inferidas.
  2. Simula tu jugada candidata contra cada uno.
  3. Busca jugadas que aguanten en todo el panel. Una jugada que gana en grande contra el perfil amable pero con la que el agresivo te saca por la puerta es frágil, y por lo general no eres tú quien elige cuál se aparece.
async function stressTest(
  panel: CounterpartPersona[],
  dealState: string,
  yourMove: string,
) {
  const results = await Promise.all(
    panel.map((p) => simulate(p, dealState, yourMove)),
  )
  const walks = results.filter((r) => r.decision === "walk")
  // Una jugada que dispara un walk contra CUALQUIER perfil posible es de alto riesgo.
  return { results, robust: walks.length === 0 }
}

La salida que quieres no es "te van a decir que sí". Es "esta jugada sobrevive a la lectura agresiva y a la cautelosa, pero el perfil desesperado se para de la mesa porque lee la fecha límite como una amenaza, así que suaviza el lenguaje de la fecha". Esa frase es el verdadero producto del modelado de oponentes: una jugada elegida porque aguanta en todo el panel, más una debilidad conocida que decidiste aceptar.

05 · Mantenlo honesto: registra las predicciones y compáralas con la realidad

Un modelo de oponente que nunca se verifica termina derivando en una ficción con cara de confianza. El arreglo es tratar cada predicción como falsable y cerrar el ciclo. Cuando la contraparte real por fin responde, compara lo que de verdad hizo con lo que predijo cada perfil, y actualiza.

  • Anota la predicción antes de ver el resultado (decisión, razonamiento y confianza) para que no la puedas racionalizar después.
  • Puntúa qué perfil quedó más cerca. En un puñado de interacciones vas a ver cuál lectura de la contraparte es la real, y puedes ir cerrando el panel hacia ella.
  • Cuando una predicción falla feo, el arreglo casi siempre está en el perfil, no en el prompt. Una predicción fallida suele querer decir que había una restricción o un BATNA que no conocías. Agrégalo como evidencia y vuelve a correr.

Es la misma disciplina que evaluar cualquier agente: una predicción que nunca calificas es una corazonada, y las corazonadas se van acumulando. El modelo solo mejora porque llevas la cuenta.

Nota

La confianza es un número para actuar, no para creérselo a ciegas. Cuando el modelo devuelve confianza baja, eso no es un defecto que haya que esconder: es lo más útil que te puede decir. Confianza baja significa "consigue más evidencia antes de comprometerte", y esa es una salida perfectamente válida de una herramienta de apoyo a decisiones.

El modelado de oponentes bien hecho no es vistoso: casi todo el valor está en escribir el perfil con honestidad y en negarte a confiar de más en una predicción que se ve limpia. El trabajo del modelo no es decirte lo que quieres oír, sino mostrarte la jugada que sobrevive a una contraparte que no está de tu lado. Arma el perfil con evidencia, obliga al modelo a razonar desde los intereses de ellos, estrésalo contra un panel y lleva la cuenta contra la realidad, y vas a tener un apoyo a decisiones que aguanta justo donde la versión fácil se cae.

Puntos clave

  • Un modelo de oponente es una simulación de cómo razona el otro lado; su valor viene por completo de evidencia honesta y de estresarlo fuerte, no de qué tan seguro suena.
  • Escribe el perfil como data y separa metas, restricciones y BATNA; el punto de retiro es el campo más predictivo y el que la gente se salta.
  • Obliga al modelo a razonar desde los intereses de ellos y permítele de forma explícita farolear, anclar y actuar por emoción; si no, te queda un espejo cortés de ti mismo.
  • Modela un panel de dos a cuatro tipos divergentes y solo lleva al terreno jugadas que sobreviven a todos, aceptando sus debilidades conocidas a propósito.
  • Anota las predicciones antes que los resultados y califícalas; un modelo que nunca verificas deriva en ficción con cara de confianza, y una predicción fallida suele ser una restricción que faltaba, no un mal prompt.

Preguntas frecuentes

¿En qué se diferencia esto de simplemente pedirle a Claude que 'se ponga en el papel del otro lado'?

El roleplay te da una respuesta que suena verosímil pero anclada en tu propio encuadre. El modelado de oponentes es una disciplina que se construye alrededor de esa llamada: un perfil respaldado por evidencia con metas, restricciones y BATNA explícitos; la instrucción de razonar desde los intereses de la contraparte y de portarse mal; un panel de tipos en vez de uno solo; y una predicción registrada y falsable que verificas después. La llamada al modelo es lo fácil; la estructura que lo rodea es lo que hace confiable la salida.

¿Y si apenas tengo evidencia sobre la contraparte?

Entonces dilo, dentro del perfil, separando lo que observaste de lo que estás asumiendo. Poca evidencia no significa que te saltes el modelado: significa que ensanchas el panel (más tipos divergentes) y bajas cuánto confías en cualquier predicción individual. La salida honesta de un modelo con poca evidencia muchas veces es 'consigue más evidencia antes de hacer esta jugada', que ya de por sí es una respuesta útil. El peligro no es un modelo flojo; es un modelo flojo con cara de seguro.

¿Decirle al modelo que farolee y actúe de forma irracional no lo va a volver ruidoso e inútil?

No, siempre que ates el mal comportamiento a intereses y presiones. No estás pidiendo caos aleatorio; estás permitiendo jugadas que una persona real hace bajo incentivos reales: anclar alto porque espera que la regateen, dilatar porque su BATNA está mejorando, ponerse emocional porque una fecha límite se le lee como amenaza. El campo de razonamiento obliga al modelo a justificar esa mala conducta. Si no puede, es señal de que la jugada que predijo es inverosímil.

¿Cuántos perfiles debería tener el panel?

De dos a cuatro. Uno apuesta todo a una corazonada; con más de cuatro, las corridas se vuelven lentas y caras mientras los perfiles de más casi se solapan entre sí. Elige tipos que de verdad tiren en direcciones distintas (agresivo contra cauteloso, con recursos contra desesperado) para que la prueba de estrés saque a la luz fragilidad real, en lugar de cuatro casi-copias asintiendo a todo. A medida que vas juntando resultados y aprendes cuál lectura es la real, puedes ir cerrando el panel hacia ella.

¿El modelado de oponentes es manipulador? ¿Debería incomodarme usarlo?

Es lo mismo que hace un buen negociador en su cabeza, anticiparse al otro lado para que no te agarren desprevenido, solo que hecho explícito y verificable. Y corta para ambos lados: un modelo fiel de los intereses de la contraparte muchas veces te muestra un trato que les sirve a los dos, porque saca a la luz lo que de verdad necesita. Donde se pone éticamente turbio es el mismo punto que con cualquier persuasión: usarlo para aprovecharte de alguien que no puede decir que no. Eso no lo decide la herramienta; lo decides tú.

¿Cómo sé si mi modelo de oponente de verdad está mejorando con el tiempo?

La puntúas. Anota cada predicción (decisión, razonamiento, confianza) antes de ver el resultado, y luego marca qué perfil quedó más cerca de lo que la contraparte hizo de verdad. En un puñado de interacciones aparece un patrón: una lectura en particular sigue ganando, o una restricción que nunca anotaste te sigue golpeando. 'Mejor' no es una sensación; es una brecha medible cada vez más estrecha entre la conducta predicha y la observada. Un modelo que nunca calificas no está mejorando, solo está acumulando confianza.

¿Prefieres que lo hagamos por ti?

Esto mismo lo construimos para negocios como el tuyo. La primera conversación es gratis y sin compromiso.

Escríbenos por WhatsApp

Escríbenos por WhatsApp

Escanéalo con tu teléfono para escribirnos por WhatsApp.

Escanéalo con tu teléfono para escribirnos por WhatsApp.

¿Estás desde el teléfono y no puedes escanear? Escríbenos a info@ilustrari.com

Primera conversación gratis. Te responde el fundador.

Recursos relacionados