Seamos honestos: confiar en un solo LLM para resolver un problema complejo es básicamente lanzar una moneda al aire en este momento.

Me cansé del flujo diario: preguntarle a ChatGPT, recibir una respuesta confiada, pegar la misma pregunta en Claude para verificar, recibir una respuesta contradictoria, preguntarle a Perplexity para desempatar. Estaba actuando como el router manual de APIs, y era agotador.

Quería un sistema de "peer review" donde las IAs se chequearan entre sí. Pero me topé rápido con dos obstáculos enormes:

  • Costo: correr un loop de validación cruzada con 6 modelos vía APIs oficiales (GPT-4o, Claude 3.5, deepseek, etc.) en cada consulta se vuelve caro rápido.
  • Latencia (la cascada): encadenar estos modelos secuencialmente significa esperar minutos por una respuesta.

Decidí entonces construir AI Council, una app de escritorio local que se salta las APIs por completo y corre 6 IAs en paralelo usando sus interfaces web gratuitas. Acá explico cómo construí la lógica de orquestación sin que terminara siendo un desastre.

¿Cómo está construida la arquitectura?

En lugar de llamadas REST API estándar, la app es un wrapper Electron. Levanta 6 instancias de BrowserView ocultas (o visibles, si querés la onda Matrix) que cargan las interfaces web reales de ChatGPT, Claude, Gemini, Perplexity, DeepSeek y Grok.

La "API" entera es solo inyección DOM: parsear el HTML, encontrar el textarea, simular pulsaciones de tecla y hacer click en el botón "Send".

¿Cómo se evita la cascada secuencial?

Si el Modelo A espera al B, y el B espera al C, la UX queda muerta. Para resolverlo, usé un enfoque de orquestación Fan-out / Fan-in.

Diagrama de arquitectura Fan-out/Fan-in con 6 modelos
Diagrama de arquitectura Fan-out/Fan-in con 6 modelos

1. Borrador primario: el usuario hace una pregunta. La IA primaria (por ejemplo, ChatGPT) genera un primer borrador. 2. Fan-out (revisión paralela): la app toma ese borrador y lo difunde a los otros 5 paneles de IA al mismo tiempo. Hace click en "submit" en los 5 BrowserViews simultáneamente. 3. Fan-in (compilación): la app monitorea el DOM de las 5 ventanas. Una vez que todas dejan de generar, extrae el texto, compila el feedback y se lo entrega de vuelta a la IA primaria. 4. Salida final: la IA primaria reescribe la respuesta basándose en el peer review.

Básicamente, la orquestación es un gran y glorioso Promise.allSettled.

JavaScript
// Lógica conceptual del Fan-out
async function runParallelReview(draft) {
  const reviewers = [claudeView, geminiView, deepseekView, grokView, perplexityView];

  // Disparar todas a la vez
  const reviewPromises = reviewers.map(view =>
    injectPromptAndWaitForCompletion(view, `Review this draft: ${draft}`)
  );

  // Esperar a que todas terminen de "tipear" físicamente
  const reviews = await Promise.allSettled(reviewPromises);
  return compileReviews(reviews);
}

El verdadero dolor de cabeza: gestionar estados de las UIs web

La parte más difícil no fue la orquestación, sino lidiar con el hecho de que las UIs web cambian, y los modelos transmiten texto a velocidades distintas.

¿Cómo se sabe que una IA terminó de "tipear" cuando no hay una respuesta API limpia? Hay que monitorear el estado del DOM. Por ejemplo, observando que el botón "Stop generating" desaparezca, o usando un MutationObserver para vigilar el contenedor del chat. Si "la UI de Grok está rara hoy", toda la cadena de promesas puede colgarse. Tuve que construir mecanismos robustos de timeout y fallback para cada wrapper específico, de modo que una UI fallando no haga caer al consejo entero.

El resultado

Lo que terminé teniendo es una app totalmente local y open source que me entrega respuestas peer-reviewed bajo estrés. Incluso la conecté a un script de Telegram con long-polling local, así puedo enviarle mensajes al consejo desde mi teléfono, mi PC corre los BrowserViews, y me devuelve por mensaje el consenso final. Cero servidores en la nube.

Captura de la app AI Council corriendo
Captura de la app AI Council corriendo
Captura adicional del consejo de modelos respondiendo
Captura adicional del consejo de modelos respondiendo

Si tenés curiosidad por los scripts de inyección DOM o por la arquitectura multi-view de Electron, el proyecto entero es open source. El repositorio está acá: https://github.com/MinkyuTheBuilder/ai-council.

¿Cuánto se ahorra realmente?

A precios estándar de abril de 2026, validar una pregunta con los seis modelos vía API costaría aproximadamente: GPT-4o (USD 0,005 por mil tokens output), Claude 3.5 Sonnet (USD 0,015), Gemini 1.5 Pro (USD 0,005), Perplexity Sonar Pro (USD 0,015), DeepSeek-V3 (USD 0,001) y Grok-3 (USD 0,015). Para una respuesta promedio de 1.500 tokens output, el ciclo completo cuesta cerca de USD 0,08 por consulta. A 100 consultas diarias, son USD 8 por día o cerca de USD 240 al mes solo para validación cruzada. La versión vía interfaces web gratuitas baja ese costo a cero, a cambio de los términos de uso de cada plataforma y los riesgos de breakage cuando las UIs cambian.

¿Vale la pena vs. frameworks tipo LangGraph o CrewAI?

CriterioAI Council (DOM)LangGraph / CrewAI (API)
Costo de tokensCeroVariable, USD 0,05-0,15 por ciclo
Robustez ante cambios de UIFrágilEstable mientras la API exista
Soporte oficialNinguno (uso libre)Documentado y soportado
Despliegue producciónNo recomendadoSí, con observabilidad
Latencia local30-90 segundos10-30 segundos
PrivacidadCuentas web propiasLogs en el proveedor

Disponibilidad y consideraciones legales

El proyecto está liberado en GitHub bajo licencia open source. Los términos de servicio de OpenAI, Anthropic, Google y xAI prohíben automatización vía DOM scraping para uso comercial; el proyecto se posiciona como herramienta personal de productividad, no de producción. Para integradores en Chile y LATAM que evalúen replicar el patrón, conviene revisar los TOS de cada proveedor y considerar que las cuentas pueden ser baneadas por uso anómalo detectado por sus sistemas anti-abuso.