Kirat - Multi Model AI Council

oficial

Una IA te da una sola línea de razonamiento. Kirat es una extensión de Claude Desktop y un plugin de Claude Code que añade ChatGPT y Gemini como un consejo: posiciones independientes, un voto con la disidencia conservada, y revisión de código donde cada hallazgo es verificado por una segunda familia de modelos. Trae tus propias claves API. De pago, único pago.

¿Qué puedes hacer con Kirat Multi Model AI Council MCP?

  • Obtén un voto multi-modelo sobre una decisión — Pide a kirat_vote que el consejo evalúe una pregunta empresarial o técnica con opciones y contexto.
  • Revisa el código en busca de seguridad y corrección — Usa kirat_review para obtener hallazgos verificados de forma cruzada con niveles de gravedad y correcciones sugeridas antes de publicar.
  • Consulta el disenso y el razonamiento detrás de una decisión — Obtén las posturas completas de cada modelo, incluido el voto minoritario, con puntuaciones de confianza y justificación.

Documentación

01 — Replay

Observa cómo trabaja el consejo.

Grabaciones reales de las herramientas de Kirat, realizadas el 13 de octubre de 2026 con la versión que compras. Elige una herramienta y observa cómo trabaja el consejo: posiciones independientes, verificaciones cruzadas, clasificaciones anónimas y el disenso. Esto es una reproducción: nada de lo que hagas clic aquí llama a un modelo, y nada sale de esta página. El chat está escrito con fines ilustrativos y solo reafirma el resultado grabado; lo que Claude envió a Kirat y lo que regresó se muestra sin cambios en "Detrás de escena".

Cinco preguntas de diferentes campos. Elige una.

Deja que Kirat vote sobre esto: Dirijo un pequeño SaaS B2B solo. ¿Debería agregar un plan gratuito?

kirat_vote preguntó al consejo

El consejo ha decidido (mayoría 2:1): Mantener solo de pago, no cambiar nada.

Mi propio voto fue el disenso: "Mantener solo de pago, extender la prueba a 30 días". Queda registrado con su razonamiento, para que puedas evaluarlo tú mismo.

Detrás de escena

kirat_vote Lo que Claude envía a Kirat

Pregunta: Dirijo un pequeño SaaS B2B solo. ¿Debería agregar un plan gratuito?

GRABADO 2026-10-13 · KIRAT_VOTE · ESFUERZO: ESTÁNDAR · 1 RONDA

Contexto enviado: Desarrollador en solitario. Herramienta de facturación para freelancers, USD 19 por mes, prueba gratuita de 14 días, 30 clientes de pago después de 5 meses. Los registros provienen principalmente de dos publicaciones de blog que rankean en Google. Alrededor del 12% de las pruebas se convierten. El soporte ya toma unas 5 horas a la semana. El desarrollador tiene un trabajo de tiempo completo y unas 10 horas a la semana para el producto.

Opciones: Agregar un plan gratuito · Mantener solo de pago, extender la prueba a 30 días · Mantener solo de pago, no cambiar nada

Resultado del consejo

gpt-5.6 confianza 88

Mantener solo de pago, no cambiar nadaUn plan gratuito probablemente aumentaría los usuarios no pagadores y la carga de soporte, que ya consume la mitad de las 10 horas disponibles por semana. Una conversión de prueba del 12% es respetable, por lo que no hay evidencia clara de que la duración de la prueba sea el cuello de botella. Mantén el modelo actual y gasta el tiempo escaso en reducir las necesidades de soporte y expandir la adquisición más allá de dos publicaciones de blog.

gemini-3.6-flash confianza 90

Mantener solo de pago, no cambiar nadaCon solo 10 horas a la semana disponibles, el soporte ya toma el 50% de la capacidad. Un plan gratuito aumentaría el volumen de soporte de usuarios no pagadores sin ningún control. Una tasa de conversión de prueba del 12% ya es sólida; el cuello de botella es el tráfico, no el modelo de precios.

claude (tercer votante) confianza 58

Mantener solo de pago, extender la prueba a 30 díasUn plan gratuito principalmente agrega carga de soporte, que ya es la mitad del tiempo disponible. La facturación es mensual, por lo que una prueba de 14 días puede terminar antes de que un freelancer envíe una segunda factura y vea el valor. Una prueba de 30 días cubre un ciclo de facturación completo sin agregar usuarios gratuitos permanentes.Disenso, registrado

Decisión Mantener solo de pago, no cambiar nada Camino mayoría 2:1 Costo $0.015

Deja que Kirat vote sobre esto: La tienda en línea de nuestro cliente necesita una reconstrucción. ¿Reconstruirla en WooCommerce o migrar a Shopify?

kirat_vote preguntó al consejo

El consejo ha decidido (unánime 3:0): Migrar a Shopify.

Las tres posiciones, incluida la mía, apuntan en la misma dirección. Cada una viene con su razonamiento.

Detrás de escena

kirat_vote Lo que Claude envía a Kirat

Pregunta: La tienda en línea de nuestro cliente necesita una reconstrucción. ¿Reconstruirla en WooCommerce o migrar a Shopify?

GRABADO 2026-10-13 · KIRAT_VOTE · ESFUERZO: ESTÁNDAR · 1 RONDA

Contexto enviado: Somos una pequeña agencia digital. El cliente vende alrededor de 1,800 productos de muebles en Alemania, Austria y Suiza, tiene 3 empleados y ningún desarrollador interno. La tienda actual es una instalación de WooCommerce autohospedada, de 6 años, con 31 complementos, páginas lentas y dos incidentes de seguridad en el último año. Los ingresos son de aproximadamente EUR 1.2 millones al año. El cliente quiere menor mantenimiento y menos emergencias; usan un ERP local que exporta datos de productos como CSV. Presupuesto para la reconstrucción: EUR 25,000.

Opciones: Reconstruir en WooCommerce · Migrar a Shopify

Resultado del consejo

gpt-5.6 confianza 89

Migrar a ShopifyShopify se adapta mejor a los objetivos principales del cliente: menor mantenimiento, menos emergencias de seguridad y sin necesidad de un desarrollador interno. Un catálogo de 1,800 productos y un flujo de trabajo ERP basado en CSV son manejables, y el presupuesto de EUR 25,000 debería cubrir una migración disciplinada más la configuración fiscal, de pagos y legal específica de DACH. Las compensaciones son los costos recurrentes de aplicaciones/plataforma, menos flexibilidad de backend y la necesidad de validar el flujo de importación del ERP y cualquier variante específica de muebles antes de comprometerse. Reconstruir WooCommerce podría preservar la flexibilidad, pero retendría la responsabilidad de alojamiento, actualizaciones, compatibilidad de complementos y seguridad—exactamente la carga operativa que el cliente quiere reducir.

gemini-3.6-flash confianza 90

Migrar a ShopifySin desarrollador interno, 3 empleados y un historial de incidentes de seguridad, Shopify reduce drásticamente los costos de mantenimiento y los riesgos de seguridad. Un presupuesto de €25,000 es suficiente para una migración a Shopify incluyendo la integración ERP por CSV, mientras que reconstruir en WooCommerce perpetuaría altos costos de mantenimiento y riesgos de emergencia continuos.

claude (tercer votante) confianza 72

Migrar a ShopifySin desarrollador interno, 31 complementos y dos incidentes de seguridad, el problema real del cliente es el mantenimiento, no las funciones. Shopify elimina el alojamiento, las actualizaciones y la mayor parte del trabajo de seguridad; la importación de productos por CSV desde el ERP es estándar. La compensación son las tarifas de transacción y aplicaciones y menos flexibilidad, lo que importa menos que la estabilidad a este tamaño.

Decisión Migrar a Shopify Camino unánime 3:0 Costo $0.015

Deja que Kirat vote sobre esto: Una panadería local quiere más pedidos anticipados de pasteles. ¿Dónde deberían ir primero los próximos EUR 3,000?

kirat_vote preguntó al consejo

El consejo ha decidido (unánime 3:0): Una página adecuada de pedidos en línea.

Las tres posiciones, incluida la mía, apuntan en la misma dirección. Cada una viene con su razonamiento.

Detrás de escena

kirat_vote Lo que Claude envía a Kirat

Pregunta: Una panadería local quiere más pedidos anticipados de pasteles. ¿Dónde deberían ir primero los próximos EUR 3,000?

GRABADO 2026-10-13 · KIRAT_VOTE · ESFUERZO: ESTÁNDAR · 1 RONDA

Contexto enviado: Panadería con 6 empleados en una ciudad alemana de 40,000 personas. Los pasteles personalizados y los pedidos anticipados tienen el mejor margen. Hoy, los pedidos llegan solo por teléfono y correo electrónico; el sitio web tiene horarios de apertura y un formulario de contacto, nada para pedir. El perfil de Google Business tiene 4.7 estrellas de 120 reseñas. Sin publicidad pagada hasta ahora. Presupuesto: EUR 3,000 para el próximo trimestre, el dueño tiene poco tiempo.

Opciones: Google Ads · Una página adecuada de pedidos en línea · Dividir equitativamente entre ambos

Resultado del consejo

gpt-5.6 confianza 94

Una página adecuada de pedidos en líneaArregla el cuello de botella primero: ahora mismo, los clientes interesados no pueden hacer pedidos anticipados de manera conveniente o estructurada. Una página de pedidos simple y compatible con móviles con selección de pasteles, fecha de recogida, opciones de personalización, precio o depósito, y una confirmación, aprovecha la fuerte visibilidad local que la panadería ya tiene y reduce el trabajo por teléfono y correo. Google Ads sin un proceso de pedido confiable enviaría tráfico pagado a un camino de conversión débil. Después de unas semanas de pedidos medibles, un presupuesto de anuncios posterior se puede gastar de manera más dirigida.

gemini-3.6-flash confianza 90

Una página adecuada de pedidos en líneaSin un camino de pedido digital, los anuncios solo crean más trabajo manual que consume tiempo por teléfono y correo, que el dueño apenas puede manejar. Además, el fuerte perfil de Google (4.7 estrellas) convertirá el tráfico orgánico que ya trae mucho mejor con una página de pedidos real, de inmediato, antes de que cualquier dinero deba ir a anuncios.

claude (tercer votante) confianza 74

Una página adecuada de pedidos en líneaLos anuncios solo dan resultados si el clic puede convertirse en un pedido. Ahora mismo, cada visitante tiene que llamar o enviar un correo, por lo que el tráfico pagado se filtraría. Una página de pedidos con opciones de producto, fechas de recogida y pago anticipado convierte la demanda que el perfil de 4.7 estrellas ya trae, y hace que los anuncios posteriores sean medibles.

Decisión Una página adecuada de pedidos en línea Camino unánime 3:0 Costo $0.012

Deja que Kirat vote sobre esto: ¿Extraer nuestro módulo de facturación a un servicio separado ahora, o endurecer sus límites dentro del monolito primero?

kirat_vote preguntó al consejo

El consejo ha decidido (unánime 3:0): Endurecer los límites dentro del monolito primero.

Las tres posiciones, incluida la mía, apuntan en la misma dirección. Cada una viene con su razonamiento.

Detrás de escena

kirat_vote Lo que Claude envía a Kirat

Pregunta: ¿Extraer nuestro módulo de facturación a un servicio separado ahora, o endurecer sus límites dentro del monolito primero?

GRABADO 2026-10-13 · KIRAT_VOTE · ESFUERZO: ESTÁNDAR · 1 RONDA

Contexto enviado: Equipo de 8 ingenieros. Un monolito TypeScript, alrededor de 60,000 líneas, una base de datos Postgres, desplegado varias veces al día. El módulo de facturación cambia cada semana y causó 5 de los últimos 8 incidentes de producción, principalmente porque otros módulos leen y escriben tablas de facturación directamente. Nadie en el equipo ha ejecutado un sistema distribuido en producción. El liderazgo quiere menos incidentes dentro de dos trimestres.

Opciones: Extraer facturación a un servicio ahora · Endurecer los límites dentro del monolito primero

Resultado del consejo

gpt-5.6 confianza 94

Endurecer los límites dentro del monolito primeroLos incidentes son causados principalmente por acceso no controlado a la base de datos, no por la falta de un límite de red. Haz cumplir la propiedad de facturación dentro del monolito: elimina el acceso directo a tablas, expón una API interna estrecha, agrega permisos de base de datos o controles a nivel de esquema, y agrega pruebas de contrato e integración. Esto aborda el modo de falla rápidamente dentro de la ventana de dos trimestres. Extraer ahora agregaría complejidad de despliegue, observabilidad, reintentos, consistencia de datos y operaciones a un equipo sin experiencia en sistemas distribuidos. Una vez que los caminos de acceso y la propiedad de datos sean explícitos, la extracción se vuelve más segura y puede reconsiderarse si el escalado o despliegue independiente sigue siendo valioso.

gemini-3.6-flash confianza 90

Endurecer los límites dentro del monolito primeroLa causa principal de las interrupciones es que otros módulos acceden a las tablas de facturación directamente en la base de datos. Endurecer los límites del módulo resuelve este problema directamente dentro del monolito existente. Dado que el equipo de 8 personas no tiene experiencia con sistemas distribuidos, extraer el módulo ahora crearía nuevos riesgos y pondría en peligro el objetivo de reducir incidentes dentro de dos trimestres.

claude (tercer votante) confianza 76

Endurecer los límites dentro del monolito primeroLos incidentes provienen de otros módulos que tocan tablas de facturación directamente. Una división de servicios forzaría ese límite también, pero agrega fallas de red, transacciones distribuidas y nuevo trabajo operativo para un equipo sin esa experiencia. Hacer cumplir una API de módulo y propiedad de tablas dentro del monolito arregla la causa más rápido y mantiene la opción de extracción abierta para más adelante.

Decisión Endurecer los límites dentro del monolito primero Camino unánime 3:0 Costo $0.014

Deja que Kirat vote sobre esto: En nuestra revisión sistemática, ¿puede una sola pasada de cribado con LLM reemplazar al segundo revisor humano?

kirat_vote preguntó al consejo

El consejo ha decidido (unánime 3:0): Usar el LLM como revisor adicional; los humanos resuelven conflictos.

Las tres posiciones, incluida la mía, apuntan en la misma dirección. Cada una viene con su razonamiento.

Detrás de escena

kirat_vote Lo que Claude envía a Kirat

Pregunta: En nuestra revisión sistemática, ¿puede una sola pasada de cribado con LLM reemplazar al segundo revisor humano?

GRABADO 2026-10-13 · KIRAT_VOTE · ESFUERZO: ESTÁNDAR · 1 RONDA

Contexto enviado: Cribado de título y resumen de alrededor de 3,000 registros para una revisión sistemática en investigación de servicios de salud, planificada para publicación. Protocolo actual: dos revisores humanos independientes, conflictos resueltos por discusión. El tiempo del personal es escaso. La revisión sigue PRISMA, y los revisores de la revista preguntarán cómo se hizo el cribado. Perder un estudio relevante (exclusión falsa) es peor que incluir uno irrelevante. Opciones: Sí, reemplazar al segundo revisor humano · Usar el LLM como revisor adicional; los humanos resuelven los conflictos · No, mantener dos revisores humanos y sin LLM

Resultado del consejo

gpt-5.6 confianza 94

Usar el LLM como revisor adicional; los humanos resuelven los conflictosUna sola pasada del LLM no debería reemplazar la revisión humana independiente cuando las exclusiones falsas son el riesgo principal: el rendimiento puede variar según el tema, el prompt y la versión del modelo, y los errores pueden ser sistemáticos. Úsalo para priorizar registros o señalar desacuerdos, pero exige resolución humana de conflictos y confirmación humana de exclusiones. Documenta el modelo, la versión, el prompt, la muestra de validación y el flujo de decisión para el informe PRISMA y la reproducibilidad.

gemini-3.6-flash confianza 88

Usar el LLM como revisor adicional; los humanos resuelven los conflictosUn enfoque híbrido reduce sustancialmente la carga de trabajo humana para 3,000 títulos y resúmenes, manteniendo al mismo tiempo el rigor metodológico que exigen PRISMA y los revisores pares. Dado que deben evitarse las exclusiones falsas, hacer que los humanos resuelvan cada discrepancia (o usar un enfoque de prompting altamente sensible) garantiza que no se pierdan estudios relevantes.

claude (tercer votante) confianza 70

Usar el LLM como revisor adicional; los humanos resuelven los conflictosLas exclusiones falsas son el error costoso, y la recuperación del LLM en la revisión varía según el tema y el prompt. Reemplazar al segundo humano elimina el control que detecta esos errores y es difícil de defender ante los revisores de revistas. Añadir el LLM como tercer revisor y resolver los conflictos por humanos mantiene el protocolo defendible y sigue señalando posibles omisiones.

Decisión Usar el LLM como revisor adicional; los humanos resuelven los conflictos Vía unánime 3:0 Costo $0.019

Registrado el 13 de octubre de 2026 con kirat_vote en el nivel de esfuerzo estándar; cada sesión tomó menos de 20 segundos y costó menos de dos centavos. Las preguntas, opciones y contexto se muestran exactamente como se enviaron, y el razonamiento completo. Gemini respondió cuatro veces en alemán y ChatGPT una vez; esas respuestas están traducidas aquí. En la pregunta del nivel gratuito, Claude perdió la votación 2:1, y su objeción quedó en el registro. Los valores de confianza son el autoinforme de cada modelo.

Cinco extractos de código de diferentes campos, cada uno enviado exactamente como se muestra. ChatGPT y Gemini revisan en paralelo, Claude añade dos hallazgos propios, y cada hallazgo es verificado por la otra familia de modelos. Solo cuentan los hallazgos confirmados. Elige uno.

Pide a Kirat que revise nuestro webhook de pago de Stripe para verificar seguridad y corrección antes de publicarlo.

kirat_review preguntó al consejo

Kirat encontró 14 problemas confirmados (4 × críticos, 4 × altos, 6 × medios). Cada hallazgo fue verificado de forma cruzada por la otra familia de modelos.

Empieza por los que están al principio de la lista; cada uno incluye una corrección sugerida.

Detrás de escena

kirat_review Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_REVIEW · ESFUERZO: ESTÁNDAR · 14 CONFIRMADOS, 0 RECHAZADOS · $0.14

Enfoque: seguridad y corrección de un webhook de pago

Código enviado:

// routes/webhooks.js — payment webhook of a solo invoicing SaaS (Node 20, Express 4, Stripe, pg)
const express = require('express');
const { db } = require('../db');
const router = express.Router();

router.post('/webhooks/stripe', express.json(), async (req, res) => {
  const event = req.body;

  if (event.type === 'invoice.paid') {
    const invoice = event.data.object;
    const userId = invoice.metadata.userId;
    await db.query('UPDATE users SET plan = $1, paid_until = $2 WHERE id = $3',
      ['pro', new Date(invoice.period_end * 1000), userId]);
    await db.query('INSERT INTO payments (user_id, amount) VALUES ($1, $2)',
      [userId, invoice.amount_paid / 100]);
  }

  if (event.type === 'customer.subscription.deleted') {
    await db.query("UPDATE users SET plan = 'free' WHERE stripe_customer = '" + event.data.object.customer + "'");
  }

  res.sendStatus(200);
});

module.exports = router;

Resultado del consejo

  1. crítico El webhook procesa el cuerpo de la solicitud sin verificar la firma de Stripe. Por lo tanto, cualquier llamador externo puede enviar eventos invoice.paid\ o customer.subscription.deleted\ falsificados y desbloquear o degradar cuentas de usuario. El analizador JSON también descarta el cuerpo bruto sin modificar que requiere la verificación de la firma de Stripe. Corrección: Usa express.raw({ type: 'application/json' })\ para esta ruta y llama a stripe.webhooks.constructEvent(req.body, req.headers\['stripe-signature'\], webhookSecret)\ antes de cualquier procesamiento. Asegúrate de que no se aplique ningún analizador JSON global a esta ruta de antemano; rechaza las firmas inválidas con 400. línea 6 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  2. crítico Falta validación de la firma del webhook de Stripe. Un atacante puede enviar eventos de webhook falsificados arbitrarios a este endpoint para establecer cuentas como Pro sin autorización o manipular entradas de la base de datos. Corrección: Usa stripe.webhooks.constructEvent() con el secreto del webhook de Stripe para verificar la autenticidad e integridad de cada evento. línea 6 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  3. crítico Vulnerabilidad de inyección SQL debido a la concatenación directa de entrada del usuario (event.data.object.customer) en la cadena de consulta SQL. Corrección: Usa consultas parametrizadas como en las declaraciones anteriores: db.query('UPDATE users SET plan = $1 WHERE stripe_customer = $2', ['free', event.data.object.customer]). línea 18 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  4. crítico El webhook nunca verifica la firma de Stripe, y express.json() descarta el cuerpo bruto necesario para hacerlo. Cualquiera puede publicar un evento invoice.paid falso y actualizar cualquier cuenta a pro gratis. Corrección: Usa express.raw({ type: 'application/json' }) en esta ruta y construye el evento con stripe.webhooks.constructEvent(req.body, req.headers['stripe-signature'], endpointSecret); rechaza la solicitud en caso de fallo. línea 6 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  5. alto El ID del cliente se inserta directamente en una declaración SQL. Un valor como ' OR 1=1 --\ puede manipular la cláusula WHERE y establecer a todos los usuarios en el plan gratuito; dependiendo de la configuración de la base de datos, son posibles más inyecciones SQL. Corrección: Parametriza completamente la consulta: UPDATE users SET plan = 'free' WHERE stripe\_customer = $1\ con \[event.data.object.customer\]\. Además, autentica el evento mediante la firma de Stripe. línea 19 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  6. alto No hay verificación de idempotencia. Stripe entrega webhooks al menos una vez y los reintenta en caso de tiempos de espera o errores. El mismo evento invoice.paid\ puede, por lo tanto, crear entradas de pago idénticas varias veces. Corrección: Almacena el ID del evento de Stripe o el ID de la factura en el registro de pago, asegúralo con una restricción UNIQUE y ejecuta el procesamiento del evento junto con el pago de forma atómica como un insert/upsert. Reconoce los eventos ya procesados con 200 sin repetir la operación de negocio. línea 14 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  7. alto El manejador async\ no tiene reenvío de errores. Express 4 no captura automáticamente las promesas rechazadas de los manejadores de rutas asíncronos. Un error de base de datos o un objeto invoice.paid\ incompleto conduce, por lo tanto, a un rechazo de promesa no manejado y, bajo Node 20, puede terminar el proceso en lugar de devolver una respuesta de error de forma controlada. Corrección: Envuelve el manejador en try/catch\ y pasa los errores a next(err)\, o usa un envoltorio asíncrono. Valida la estructura de entrada antes de acceder a ella y, en errores de procesamiento temporales, devuelve un estado 5xx de forma controlada para que Stripe vuelva a entregar. línea 6 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  8. alto Usar express.json() para el endpoint del webhook analiza el cuerpo como JSON de antemano. La verificación de la firma de Stripe, sin embargo, requiere el cuerpo bruto sin modificar. Corrección: Usa express.raw({ type: 'application/json' }) en lugar de express.json() para el manejador de la ruta del webhook de Stripe. línea 6 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  9. medio La actualización del usuario y la entrada de pago son dos operaciones de base de datos confirmadas de forma independiente. Si el INSERT falla después de una actualización exitosa, el usuario obtiene el plan Pro aunque no exista ningún registro de pago correspondiente. Corrección: Ejecuta ambas operaciones junto con el marcador de idempotencia en una sola transacción de base de datos en el mismo cliente, y revierte completamente ante cualquier error. línea 12 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  10. medio El procesamiento no tiene en cuenta que Stripe puede entregar eventos fuera de su orden de creación. Un invoice.paid\ más antiguo retrasado puede restablecer paid\_until\; un customer.subscription.deleted\ retrasado puede establecer a un usuario que ha sido reactivado desde entonces de vuelta a free\. Corrección: Concilia el estado actual de la suscripción usando IDs estables de Stripe, por ejemplo obteniéndolo de Stripe, y persiste las transiciones de estado o la marca de tiempo del último evento procesado. Como mínimo, solo actualiza paid\_until\ hacia adelante, y no apliques ciegamente eventos de eliminación al estado actual del usuario. línea 12 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  11. medio amount\_paid / 100\ asume sin verificar que la moneda tiene exactamente dos decimales. Eso es incorrecto para JPY, por ejemplo. Además, la moneda no se almacena junto con el monto, por lo que el monto en el registro de pago no tiene una unidad inequívoca. Corrección: Preferiblemente almacena los montos sin cambios en la unidad monetaria más pequeña junto con invoice.currency\. Si se necesitan unidades monetarias principales, realiza la conversión según los exponentes de la moneda respectiva. línea 15 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  12. medio Falta manejo de excepciones en una ruta asíncrona de Express 4. Ante un error de base de datos o campos faltantes, esto conduce a un rechazo de promesa no manejado que puede bloquear la aplicación. Corrección: Añade un bloque try-catch y pasa los errores a next(err), o usa una utilidad como express-async-handler. línea 6 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  13. medio No hay validación de que invoice.metadata.userId esté presente. Si el campo metadata o userId falta o es indefinido, las consultas SQL fallan u operan sobre valores inválidos. Corrección: Antes de ejecutar las consultas de base de datos, verifica explícitamente si invoice.metadata e invoice.metadata.userId están presentes y son válidos. línea 10 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  14. medio Stripe reintenta los webhooks y puede entregar el mismo evento más de una vez. Cada entrega inserta otra fila de pago, por lo que los informes de ingresos cuentan doble. Corrección: Almacena event.id (o el ID de la factura) con una restricción única y omite los eventos que ya fueron procesados. línea 14 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash

Pide a Kirat que revise este plugin de importación de WooCommerce para verificar seguridad y corrección.

kirat_review preguntó al consejo

Kirat encontró 21 problemas confirmados (5 × críticos, 5 × altos, 10 × medios, 1 × bajo). Cada hallazgo fue verificado de forma cruzada por la otra familia de modelos.

Empieza por los que están al principio de la lista; cada uno incluye una corrección sugerida.

Detrás de escena

kirat_review Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_REVIEW · ESFUERZO: ESTÁNDAR · 21 CONFIRMADOS, 0 RECHAZADOS · $0.17

Enfoque: seguridad y corrección de un plugin de importación de WooCommerce

Código enviado:

<?php
// erp-import.php — custom plugin: imports the ERP's CSV export into WooCommerce (WordPress 6, WooCommerce 9)
add_action('wp_ajax_erp_import', 'erp_import');
add_action('wp_ajax_nopriv_erp_import', 'erp_import');

function erp_import() {
    global $wpdb;
    $path = $_POST['file'];
    $rows = array_map('str_getcsv', file($path));

    foreach ($rows as $row) {
        [$sku, $name, $price, $stock] = $row;
        $id = $wpdb->get_var("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_sku' AND meta_value = '$sku'");
        if (!$id) continue;
        update_post_meta($id, '_price', $price);
        update_post_meta($id, '_regular_price', $price);
        update_post_meta($id, '_stock', $stock);
        wp_update_post(['ID' => $id, 'post_title' => $name]);
    }
    echo 'Imported ' . count($rows) . ' rows';
    wp_die();
}

Resultado del consejo

  1. crítico La importación es accesible públicamente a través de wp\_ajax\_nopriv\_erp\_import\; el hook autenticado también carece de comprobaciones de capacidad y nonce. Como resultado, usuarios anónimos o ataques CSRF pueden cambiar nombres de productos, precios y niveles de stock. Solución: Elimina el hook nopriv\, verifica una capacidad adecuada como manage\_woocommerce\ antes de cualquier procesamiento y protege la solicitud con check\_ajax\_referer()\. línea 3 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  2. crítico El hook wp_ajax_nopriv_erp_import concede a visitantes no autenticados acceso a la función de importación. Solución: Elimina el hook nopriv y verifica el permiso usando current_user_can('manage_options'). línea 4 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  3. crítico La ruta de archivo de $_POST['file'] se pasa a file() sin verificación, lo que permite path traversal y lectura arbitraria de archivos (LFI). Solución: Gestiona las subidas de archivos mediante $_FILES, o valida estrictamente la ruta de entrada contra directorios permitidos (p. ej., wp_upload_dir()). línea 7 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  4. crítico Vulnerabilidad de inyección SQL, ya que $sku se inserta directamente en la consulta SQL sin saneamiento. Solución: Usa sentencias preparadas con $wpdb->prepare(). línea 11 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  5. crítico La importación está registrada para wp_ajax_nopriv, y no hay comprobación de capacidad ni nonce. Cualquier visitante puede activarla y sobrescribir precios, stock y nombres de productos. Solución: Elimina el hook nopriv, verifica current_user_can('manage_woocommerce') y valida un nonce con check_ajax_referer() antes de hacer nada. línea 4 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  6. alto La ruta proporcionada por el cliente se pasa a file()\ sin verificación. Esto permite que cualquier archivo local legible y —dependiendo de allow\_url\_fopen\— URLs externas o internas sean procesadas, lo que habilita acceso no deseado a archivos y SSRF ciego. Solución: No aceptes rutas elegidas libremente. Usa solo IDs de subida conocidos en el lado del servidor, verifica la ruta canónica contra un directorio de importación fijo y permite solo archivos CSV locales regulares. línea 8 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  7. alto $sku\ proviene del CSV y se interpola directamente en SQL. Un valor de SKU que contenga metacaracteres SQL puede manipular la consulta y, entre otras cosas, seleccionar cualquier ID de post como objetivo de actualización. Solución: Parametriza la consulta con $wpdb-\>prepare()\, por ejemplo con meta\_value = %s\, o usa la función de WooCommerce para buscar un producto por SKU. línea 13 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  8. alto file()\ carga toda la entrada en memoria, y array\_map()\ además crea el array parseado completo. Sin un límite de tamaño, un recurso remoto grande o interminable puede agotar memoria, tiempo de ejecución y workers de PHP; la accesibilidad pública empeora esto. Solución: Limita el tamaño del archivo y el número de líneas, abre el archivo localmente con fopen()\ y procesa los registros de forma continua mediante fgetcsv()\. Además, usa límites de tasa o un trabajo en segundo plano controlado. línea 9 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  9. alto Falta protección CSRF (validación de nonce). Solución: Llama a check_ajax_referer() al inicio de la función. línea 6 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  10. alto La ruta del archivo proviene directamente de la solicitud y se pasa a file(). Un atacante puede leer cualquier archivo que el servidor web pueda leer, o una URL remota si allow_url_fopen está activado. Solución: Acepta un archivo subido mediante wp_handle_upload() o lee solo desde un directorio de importación fijo; nunca tomes una ruta de la solicitud. línea 8 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  11. medio Se asume que cada línea tiene exactamente cuatro columnas utilizables. Las líneas vacías o corruptas producen valores faltantes, lo que genera advertencias y puede establecer nombre, precio o stock en valores vacíos sin intención. Solución: Antes de desestructurar, verifica el número de columnas y los campos requeridos, omite líneas vacías y rechaza registros defectuosos con un mensaje de error claro. línea 12 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  12. medio La combinación de file()\ y str\_getcsv()\ analiza cada línea física por separado. Los campos CSV válidos con saltos de línea incrustados se dividen por tanto en varios registros defectuosos. Solución: Lee el CSV como un flujo con fgetcsv()\; esta función maneja campos multilínea correctamente citados a través de los límites de registro. línea 9 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  13. medio El precio y el stock se almacenan sin verificación como cadenas arbitrarias. Valores no numéricos, formatos decimales incorrectos o niveles de stock no permitidos pueden corromper los datos del producto y llevar a cálculos inconsistentes. Solución: Valida precio y stock antes de escribir y normalízalos con ayudantes de WooCommerce como wc\_format\_decimal()\ y wc\_stock\_amount()\; rechaza valores inválidos o no permitidos desde el punto de vista empresarial. línea 15 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  14. medio Los datos de WooCommerce se cambian directamente como metadatos de post. Como resultado, estados relacionados como \_stock\_status\, tablas de búsqueda de productos y posiblemente cachés no se sincronizan de forma fiable con los nuevos precios y niveles de stock. Solución: Carga el producto mediante wc\_get\_product()\, usa los métodos CRUD como set\_regular\_price()\, set\_price()\ y set\_stock\_quantity()\, establece el estado de stock o manage\_stock\ según las reglas de negocio y luego llama a save()\. línea 15 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  15. medio La búsqueda de SKU considera todos los metadatos de post y no verifica ni el tipo de post ni si el ID encontrado es realmente un producto o variación de WooCommerce. Con metadatos \_sku\ duplicados o no relacionados, también se actualiza una coincidencia no determinista. Solución: Usa wc\_get\_product\_id\_by\_sku()\ y luego valida el resultado con wc\_get\_product()\ y el tipo de producto esperado; trata los SKU duplicados como errores de importación. línea 13 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  16. medio Los valores de retorno de update\_post\_meta()\ y wp\_update\_post()\ se ignoran. La importación puede fallar parcialmente o abortarse, pero aun así informa el número total de líneas leídas como importadas con éxito. Solución: Registra éxito y fallo por producto, usa wp\_update\_post(..., true)\, cuenta solo los registros que se actualizaron realmente y devuelve una respuesta de error estructurada. Proporciona un trabajo en segundo plano reanudable para importaciones grandes. línea 15 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  17. medio Para cada línea CSV, se ejecutan sincrónicamente al menos una consulta de búsqueda y varias operaciones de escritura individuales. Las importaciones grandes causan por tanto muchos viajes de ida y vuelta a la base de datos, pueden agotar el tiempo de solicitud y dejar un catálogo solo parcialmente actualizado. Solución: Ejecuta la importación en lotes limitados como proceso en segundo plano, resuelve los SKU de forma colectiva y almacena progreso y estado de reanudación. línea 11 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  18. medio file() lee todo el archivo en memoria de una vez, lo que lleva a errores de agotamiento de memoria con archivos CSV grandes. Solución: Transmite el archivo línea por línea mediante fopen() y fgetcsv(). línea 8 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  19. medio La desestructuración de arrays asume que cada línea contiene al menos 4 elementos; de lo contrario, ocurren advertencias de PHP o errores de índice no inicializado. Solución: Antes de desempaquetar, verifica con count($row) si hay suficientes columnas presentes. línea 10 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  20. medio Las consultas de base de datos y las actualizaciones de post se realizan individualmente en un bucle (problema N+1), lo que ralentiza considerablemente el tiempo de ejecución. Solución: Divide la importación en lotes y agrupa consultas/actualizaciones. línea 11 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  21. bajo Los errores de file()\ no se verifican. Para una ruta faltante, ilegible o no soportada, file()\ devuelve false\, por lo que array\_map()\ puede lanzar un TypeError\ en versiones actuales de PHP. Solución: Verifica explícitamente la apertura y lectura, no uses advertencias de PHP como flujo de control y, en caso de error, devuelve una respuesta HTTP apropiada o wp\_send\_json\_error()\. línea 9 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash

Pide a Kirat que revise el flujo de pedido y pago de la página de pedidos de la panadería en cuanto a seguridad y corrección.

kirat_review preguntó al consejo

Kirat encontró 14 problemas confirmados (4 × crítico, 4 × alto, 5 × medio, 1 × bajo). Cada hallazgo fue verificado de forma cruzada por la otra familia de modelos.

Comienza con los que están al principio de la lista; cada uno viene con una solución sugerida.

Entre bastidores

kirat_review Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_REVIEW · ESFUERZO: ESTÁNDAR · 14 CONFIRMADOS, 0 RECHAZADOS · $0.11

Enfoque: seguridad y corrección de un flujo de pedido y pago

Código enviado:

// routes/order.js — order endpoint of the bakery's ordering page (Node 20, Express 4, pg)
const express = require('express');
const { pool } = require('../db');
const { sendConfirmation } = require('../mail');
const router = express.Router();

router.post('/order', async (req, res) => {
  const { cakeId, pickupDate, name, email, price, note } = req.body;

  const cake = await pool.query(\`SELECT * FROM cakes WHERE id = ${cakeId}\`);
  if (!cake.rows.length) return res.status(404).send('Unknown cake');

  const order = await pool.query(
    'INSERT INTO orders (cake_id, pickup_date, name, email, amount, note) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id',
    [cakeId, pickupDate, name, email, price, note]
  );

  sendConfirmation(email, order.rows[0].id);
  res.redirect(\`/pay?order=${order.rows[0].id}&amount=${price}\`);
});

module.exports = router;

Resultado del consejo

  1. crítico cakeId se interpola directamente en la cadena SQL. Un atacante puede inyectar expresiones SQL o declaraciones adicionales y así leer o modificar datos, o poner carga en la base de datos. Solución: Parametriza esta consulta también, por ejemplo SELECT... FROM cakes WHERE id = $1\ con \[cakeId\]\, y además verifica que cakeId tenga el tipo esperado. línea 10 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  2. crítico Vulnerabilidad de inyección SQL debido a la interpolación directa de template-string de cakeId en la consulta SQL. Solución: Usa una consulta SQL parametrizada: pool.query('SELECT * FROM cakes WHERE id = $1', [cakeId]). línea 9 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  3. crítico La manipulación del precio en el lado del cliente es posible. El precio se toma de req.body y se almacena y procesa directamente. Solución: Lee el precio en el servidor desde la base de datos (cake.rows[0].price) y no confíes en el valor enviado por el cliente. línea 8 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  4. crítico cakeId del cuerpo de la solicitud se interpola en la cadena SQL: inyección SQL. Solución: Usa una consulta parametrizada: SELECT * FROM cakes WHERE id = $1. línea 10 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  5. alto El monto que se almacena y se pasa al flujo de pago proviene completamente de req.body.price\. Un cliente puede ingresar un monto manipulado, negativo o muy pequeño para cualquier pastel. Solución: Determina el precio exclusivamente en el servidor a partir del pastel seleccionado o de una versión de precio inmutable. Crea una sesión de pago en el servidor con este monto en el proveedor de pagos y verifica nuevamente el monto esperado en el servidor al confirmar el pago. línea 16 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  6. alto El pedido se crea y se envía una confirmación antes de que se haya verificado cualquier pago exitoso. Las transacciones abortadas o deliberadamente no pagadas aparecen como pedidos confirmados y pueden generarse a voluntad. Solución: Crea pedidos inicialmente con un estado como pending\_payment\. Solo cambia a paid\ después de una notificación autenticada del proveedor de pagos procesada de forma idempotente, y luego envía la confirmación o activa la producción o reserva. línea 19 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  7. alto Falta manejo de errores en una ruta asíncrona de Express 4. Los errores de base de datos o de tiempo de ejecución conducen a rechazos de promesas no manejados. Solución: Usa un bloque try/catch y reenvía los errores con next(err), o usa un paquete como express-async-errors. línea 8 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  8. alto El monto se toma del cliente (precio en el cuerpo de la solicitud), por lo que un cliente puede establecer su propio precio. Solución: Lee el precio de la fila de cakes en el servidor e ignora cualquier valor del cliente. línea 15 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  9. medio El manejador asíncrono no tiene reenvío de errores. Express 4 no maneja automáticamente las promesas rechazadas de los manejadores async\; los errores de base de datos o de correo síncrono pueden llevar a solicitudes sin respuesta y rechazos no manejados. Solución: Envuelve el manejador en try/catch\ y pasa los errores a next(err)\, o usa un envoltorio asíncrono establecido. Además, configura el manejo central de errores. línea 7 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  10. medio El resultado de sendConfirmation\ no se espera ni se maneja de otra manera para errores. Un rechazo de promesa puede quedar sin manejar; al mismo tiempo, el cliente ya recibe una respuesta de éxito aunque el envío del correo pueda haber fallado. Solución: Realiza el envío después del pago confirmado mediante una bandeja de salida persistente o una cola de trabajos con reintentos. Como mínimo, espera la promesa y registra o maneja los errores de manera controlada. línea 19 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  11. medio No hay protección de idempotencia. Los reintentos del navegador, dobles clics o reintentos de red crean cada vez un nuevo pedido y posiblemente múltiples confirmaciones o intentos de pago. Solución: Acepta una clave de idempotencia o ID de sesión de pago, asegúralo con una restricción única y devuelve el pedido ya existente en los reintentos. línea 13 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  12. medio pickupDate, name, email, price y note se procesan sin validación comercial o sintáctica. Esto significa, por ejemplo, que se pueden almacenar fechas de recogida pasadas o inválidas, datos de cliente faltantes y valores de campo inadecuados; los errores de base de datos también ocurren solo tarde y de manera no controlada. Solución: Usa un esquema de solicitud con tipos, campos obligatorios, límites de longitud y formatos normalizados. Verifica las fechas de recogida contra la zona horaria, el tiempo de entrega y las reglas de horario de apertura o capacidad; no aceptes el precio como entrada del cliente. línea 8 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  13. medio La llamada asíncrona a sendConfirmation no se espera ni se captura para errores. Solución: Pon await antes de sendConfirmation y maneja los posibles errores al enviar el correo. línea 17 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  14. bajo Validación de entrada incompleta para campos como email, pickupDate, name y note. Solución: Implementa validación de esquema (por ejemplo, con Zod o express-validator) antes de procesar los datos de la solicitud. línea 8 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6

Pídele a Kirat que revise esta función de facturación para verificar su corrección e integridad de datos.

kirat_review preguntó al consejo

Kirat encontró 16 problemas confirmados (1 × crítico, 11 × alto, 3 × medio, 1 × bajo). Cada hallazgo fue verificado de forma cruzada por la otra familia de modelos.

Comienza con los que están al principio de la lista; cada uno viene con una solución sugerida.

Detrás de escena

kirat_review Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_REVIEW · ESFUERZO: ESTÁNDAR · 16 CONFIRMADOS, 0 RECHAZADOS · $0.14

Enfoque: corrección e integridad de datos de una función de facturación

Código enviado:

// billing/applyCredit.ts — billing module in the monolith (TypeScript, node-postgres)
import { pool } from '../db';

export async function applyCredit(customerId: string, invoiceId: string, creditCents: number) {
  const inv = await pool.query('SELECT total_cents, status FROM invoices WHERE id = $1', [invoiceId]);
  const balance = await pool.query('SELECT credit_cents FROM customers WHERE id = $1', [customerId]);

  const available = balance.rows[0].credit_cents;
  if (creditCents > available) throw new Error('Not enough credit');

  const newTotal = inv.rows[0].total_cents - creditCents;
  await pool.query('UPDATE invoices SET total_cents = $1 WHERE id = $2', [newTotal, invoiceId]);
  await pool.query('UPDATE customers SET credit_cents = credit_cents - $1 WHERE id = $2', [creditCents, customerId]);

  if (newTotal <= 0) {
    await pool.query("UPDATE invoices SET status = 'paid' WHERE id = $1", [invoiceId]);
  }
  return newTotal * 1.19 / 100;
}

Resultado del consejo

  1. crítico Falta transacción de base de datos y bloqueo de filas. Con solicitudes paralelas, pueden ocurrir condiciones de carrera (por ejemplo, doble gasto de crédito) y actualizaciones incompletas en caso de error. Corrección: Use un cliente del pool con BEGIN/COMMIT, y use SELECT FOR UPDATE para bloquear y actualizar filas atómicamente. línea 5 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  2. alto Las tres actualizaciones relacionadas no se ejecutan en una transacción de base de datos. Si falla el débito del crédito del cliente o el cambio de estado, la factura puede haberse reducido sin que el crédito se haya cargado correctamente o sin que se haya establecido el estado. Corrección: Obtenga un cliente dedicado del pool y ejecute todas las comprobaciones y actualizaciones entre BEGIN y COMMIT; use ROLLBACK ante cualquier error. línea 11 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  3. alto La factura se lee primero y luego se sobrescribe con un valor calculado absoluto. Dos llamadas paralelas pueden leer el mismo valor inicial y luego sobrescribirse entre sí; ambos débitos de crédito se realizan, mientras que solo un crédito permanece completamente visible en la factura. Corrección: Bloquee la factura afectada dentro de la misma transacción con SELECT... FOR UPDATE, o cambie el monto atómicamente mediante UPDATE... SET total_cents = total_cents - $1 con condiciones adecuadas. línea 4 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  4. alto La comprobación y el débito del crédito del cliente no son atómicos. Las llamadas paralelas pueden ver ambas la misma cobertura disponible y luego reducir el crédito por debajo de cero. Corrección: Bloquee el registro del cliente transaccionalmente o use una UPDATE condicional, como UPDATE customers SET credit_cents = credit_cents - $1 WHERE id = $2 AND credit_cents >= $1 RETURNING credit_cents, y exija exactamente una fila devuelta. línea 8 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  5. alto No se comprueba si la factura pertenece al cliente especificado. Como resultado, el crédito de un cliente puede aplicarse a cualquier factura identificada mediante invoiceId. Corrección: Consulte y actualice la factura y el cliente mediante la relación de propiedad, por ejemplo con WHERE invoices.id = $1 AND invoices.customer_id = $2; cancele si no hay coincidencia. línea 4 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  6. alto El crédito a aplicar no está limitado al monto abierto de la factura. Si creditCents es mayor que total_cents, se almacena un monto de factura negativo y se consume crédito excedente del cliente. Corrección: Solo permita montos hasta el valor abierto de la factura, o determine el monto realmente utilizado como min(creditCents, total_cents) y debite solo este monto del crédito del cliente. línea 10 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  7. alto No se rechazan valores negativos, no enteros o no representables de forma segura. En particular, un valor creditCents negativo aumenta el monto de la factura y, al mismo tiempo, mediante la resta de un valor negativo, el crédito del cliente. Corrección: Exija Number.isSafeInteger(creditCents) && creditCents > 0 antes de cualquier acceso a la base de datos; trate los montos monetarios de manera consistente como valores enteros en centavos. línea 8 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  8. alto El estado de la factura que se lee se ignora por completo. Por lo tanto, el crédito también puede aplicarse a facturas que ya están pagadas, canceladas o que ya no son modificables; una factura ya pagada puede volverse negativa como resultado. Corrección: Defina explícitamente los estados iniciales permitidos y verifíquelos atómicamente en la condición de UPDATE, por ejemplo AND status = 'open'. Si no hay coincidencia, cancele la operación. línea 4 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  9. alto Acceso a balance.rows[0] e inv.rows[0] sin una comprobación previa. Si no se encuentra un cliente o una factura, la aplicación falla con un TypeError no controlado. Corrección: Verifique inv.rows.length y balance.rows.length antes del acceso y lance un mensaje de error explícito. línea 8 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  10. alto Falta validación de creditCents para valores negativos. Un valor negativo evita la comprobación (creditCents > available) y conduce a ajustes incorrectos de crédito o factura. Corrección: Asegúrese de que creditCents sea un entero positivo mayor que 0. línea 9 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  11. alto Las lecturas y las tres actualizaciones se ejecutan fuera de una transacción y sin bloqueos de filas. Dos llamadas concurrentes pueden pasar ambas la verificación de crédito y gastar el mismo crédito dos veces, y un fallo entre las actualizaciones deja la factura y el saldo de crédito inconsistentes. Corrección: Ejecute todo en una transacción en un solo cliente, bloquee las filas con SELECT... FOR UPDATE y confirme solo después de que todas las actualizaciones tengan éxito. línea 5 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  12. alto La función nunca verifica que la factura pertenezca al cliente o que aún esté abierta. El crédito de un cliente puede aplicarse a la factura de otro cliente, o a una factura que ya está pagada. Corrección: Seleccione la factura con WHERE id = $1 AND customer_id = $2 AND status = 'open' y falle si no se devuelve ninguna fila. línea 11 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  13. medio No se verifica la existencia de la factura y del cliente. Para ID desconocidos, acceder a rows[0] conduce a errores de tiempo de ejecución en lugar de un error de negocio controlado; además, ambas consultas se ejecutan innecesariamente antes de que esto sea evidente. Corrección: Verifique rowCount o rows.length para ambas consultas y genere un error de no encontrado definido; integre la verificación en la transacción y, si es posible, en una consulta relacional. línea 4 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  14. medio El valor de retorno no corresponde ni al monto almacenado en centavos ni a una conversión simple a la moneda principal: agrega un 19 por ciento fijo y usa aritmética de punto flotante. Como resultado, el llamador puede recibir un valor que difiere, en términos fiscales y de redondeo, del saldo restante de la factura realmente almacenado. Corrección: Devuelva el monto restante en centavos sin cambios, o defina un valor de retorno claramente tipado. Si se requiere un cálculo de impuestos por razones comerciales, tome la tasa de impuestos y la regla de redondeo de los datos de la factura y calcule con aritmética entera o decimal. línea 17 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  15. medio Uso de aritmética de punto flotante IEEE 754 (newTotal * 1.19 / 100) para cálculos financieros. Esto conduce a errores de precisión y redondeo. Corrección: Calcule de manera consistente en centavos con enteros (BigInt/Math.round), o use una biblioteca para aritmética decimal exacta. línea 18 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  16. bajo Un comando UPDATE separado para el estado de la factura causa viajes de ida y vuelta innecesarios a la base de datos. Corrección: Combine la actualización de total_cents y status en una sola consulta UPDATE. línea 12 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6

Pida a Kirat que verifique el script de análisis de cribado para nuestra revisión sistemática por su corrección.

kirat_review preguntó al consejo

Kirat encontró 11 problemas confirmados (6 × alto, 4 × medio, 1 × bajo). Cada hallazgo fue verificado de forma cruzada por la otra familia de modelos.

Comience con los que están al principio de la lista; cada uno viene con una corrección sugerida.

Detrás de escena

kirat_review Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_REVIEW · ESFUERZO: ESTÁNDAR · 11 CONFIRMADOS, 0 RECHAZADOS · $0.09

Enfoque: corrección de un análisis de cribado para una revisión sistemática

Código enviado:

# screening/agreement.py — compares two screeners' include/exclude decisions (Python 3.12, pandas)
import pandas as pd

a = pd.read_csv('screener_a.csv')   # columns: record_id, decision ('include'/'exclude')
b = pd.read_csv('screener_b.csv')

merged = a.merge(b, on='record_id', suffixes=('_a', '_b'))

agree = (merged.decision_a == merged.decision_b).mean()
p_inc_a = (merged.decision_a == 'include').mean()
p_inc_b = (merged.decision_b == 'include').mean()
expected = p_inc_a * p_inc_b + (1 - p_inc_a) * (1 - p_inc_b)
kappa = (agree - expected) / (1 - expected)

conflicts = merged[merged.decision_a != merged.decision_b]
excluded = merged[merged.decision_a == 'exclude']

print(f'Records screened: {len(a)}')
print(f"Cohen's kappa: {kappa:.2f}")
excluded.record_id.to_csv('excluded.csv', index=False)
conflicts.to_csv('conflicts.csv', index=False)

Resultado del consejo

  1. alta La unión interna predeterminada elimina todos los valores de record_id que aparecen en solo uno de los dos archivos. Por lo tanto, kappa y los conflictos se calculan solo para la intersección, sin hacer visibles las evaluaciones faltantes. Al mismo tiempo, "Records screened" en la línea 18 informa la longitud de a en lugar de la intersección realmente analizada. Corrección: Use una unión externa con un indicador de fusión, compare los conjuntos de ID explícitamente e informe las decisiones faltantes por separado o trátelas como errores de datos. Para cada métrica, genere el denominador realmente utilizado. línea 7 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  2. alta No se verifica la unicidad de record_id. Los ID duplicados conducen a un producto cartesiano de muchos a muchos durante la fusión y ponderan estudios individuales múltiples veces, lo que distorsiona el acuerdo, las prevalencias, kappa y los archivos de salida. Corrección: Antes de la fusión, verifique que record_id en ambos archivos no sea nulo y sea único, y detenga el proceso ante duplicados. Además, use merge(..., validate='one_to_one'). línea 7 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  3. alta Los valores de decisión no se validan. Los valores faltantes, errores tipográficos, mayúsculas/minúsculas o categorías adicionales se tratan implícitamente como "excluir" al calcular la prevalencia de inclusión, mientras que el acuerdo observado compara valores exactos. Por lo tanto, el cálculo ya no corresponde a un kappa de Cohen binario y puede producir resultados contradictorios. Corrección: Normalice decision de manera controlada antes del análisis y asegúrese de que cada valor sea exactamente 'include' o 'exclude'. Maneje los valores faltantes o desconocidos por separado como errores de datos o evaluación incompleta. línea 9 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  4. alta excluded contiene todos los registros excluidos por el evaluador A, incluidos los conflictos en los que el evaluador B decidió "include". Por lo tanto, dichos registros se escriben tanto en excluded.csv como en conflicts.csv. Si se pretende que excluded.csv represente los resultados finalmente excluidos, los conflictos no resueltos pueden eliminarse incorrectamente de la revisión. Corrección: Sin una regla de precedencia documentada, seleccione solo exclusiones coincidentes, es decir, (decision_a == 'exclude') & (decision_b == 'exclude'). Mantenga los conflictos exclusivamente en conflicts.csv hasta que se tome una decisión de consenso. línea 16 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  5. alta Filtrado incorrecto de los estudios excluidos: 'excluded' tiene en cuenta solo la decisión del evaluador A ('merged.decision_a == "exclude"'). Si hay un conflicto (el evaluador A excluye, el evaluador B incluye), el estudio se cuenta incorrectamente como excluido. Corrección: Solo exporte exclusiones si ambos evaluadores han elegido consistentemente 'exclude' (por ejemplo, '(merged.decision_a == "exclude") & (merged.decision_b == "exclude")'), o espere a que se resuelva el conflicto. línea 16 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  6. alta excluded.csv contiene cada registro que el evaluador A excluyó, incluidos los conflictos donde el evaluador B lo incluyó. Esos registros se eliminan antes de la discusión del conflicto, que es exactamente la exclusión falsa que el protocolo debe evitar. Corrección: Excluya solo los registros que ambos evaluadores excluyeron: merged[(merged.decision_a == 'exclude') & (merged.decision_b == 'exclude')]; envíe cada conflicto a resolución primero. línea 16 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  7. media Si ambos evaluadores usan solo la misma categoría, expected es igual a 1 y el denominador de kappa es igual a 0. El resultado se convierte en NaN o puede producir una advertencia de división por cero; la salida formateada "nan" no explica que kappa es matemáticamente indefinido. Una intersección analizada vacía también conduce a métricas NaN sin significado. Corrección: Antes de la división, verifique si hay decisiones válidas emparejadas y si 1 - expected es mayor que 0. En casos degenerados, informe explícitamente kappa como "no definido" e informe las frecuencias subyacentes. línea 13 · encontrado por gpt-5.6 · confirmado por gemini-3.6-flash
  8. media Posible división por cero en el kappa de Cohen si el valor esperado por azar 'expected' es igual a 1 (por ejemplo, si ambos evaluadores eligen la misma categoría para el 100% de los registros). Corrección: Antes del cálculo, detecte si '1 - expected == 0' y en ese caso asigne un valor definido (por ejemplo, 1.0 o NaN). línea 12 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  9. media Descartes silenciosos de registros por la unión interna predeterminada. Si el evaluador A y el evaluador B han calificado diferentes conjuntos de 'record_id's, las discrepancias en los estudios procesados no se informan. Además, 'len(a)' en la salida de consola no corresponde entonces al número de estudios realmente emparejados. Corrección: Verifique si se cumple 'len(a) == len(b) == len(merged)', o realice una unión externa para mostrar explícitamente los registros calificados de manera incompleta. línea 7 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6
  10. media La fusión interna elimina silenciosamente los registros que solo un evaluador ha decidido, y el recuento impreso usa len(a). Los registros no evaluados desaparecen tanto del acuerdo como de los números de PRISMA. Corrección: Fusione con how='outer', indicator=True, y falle o informe cuando cualquier registro carezca de una decisión de cualquiera de los evaluadores. línea 7 · encontrado por claude · confirmado por gpt-5.6, gemini-3.6-flash
  11. baja Falta saneamiento de entrada y manejo de valores faltantes en la columna 'decision'. Mayúsculas/minúsculas, espacios en blanco o valores NaN conducen a comparaciones incorrectas. Corrección: Limpie los valores de la columna antes de la comparación (por ejemplo, con '.str.strip().str.lower()') y asegure la seguridad del tipo de datos. línea 9 · encontrado por gemini-3.6-flash · confirmado por gpt-5.6

Mostrado: cada hallazgo confirmado con su corrección, tal como lo escribieron los miembros; el razonamiento de los verificadores se resume en su veredicto. Los duplicados no se fusionan, por lo que un problema puede aparecer más de una vez cuando varios miembros lo informan. El código, el enfoque y los propios hallazgos de Claude se enviaron en inglés; los hallazgos que los miembros escribieron en alemán se traducen aquí.

Cinco resúmenes de ideas de diferentes campos. ChatGPT y Gemini trabajan en tres pistas, Claude añade una idea, y ambos miembros califican cada idea de forma anónima (1–10 cada uno, hasta 20 puntos). Elija una.

Mis dos publicaciones de blog se posicionan en Google, pero pocos lectores inician una prueba. Haga una lluvia de ideas con Kirat.

kirat_brainstorm preguntó al consejo

El consejo generó 14 ideas y calificó cada una de forma anónima. Las tres principales:

  1. Reemplace el reloj de 14 días con tres envíos reales (18/20 puntos)
  2. Complete la tarea dentro del artículo (17/20 puntos)
  3. Convierta el artículo de seguimiento en una consola de recuperación (17/20 puntos)

Detrás de escena

kirat_brainstorm Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_BRAINSTORM · ESFUERZO: ESTÁNDAR · 14 IDEAS · 1 RONDA · $0.11

Tema: Ideas para un desarrollador en solitario para convertir a más lectores de dos publicaciones de blog posicionadas en Google en registros de prueba para una herramienta de facturación para autónomos

Contexto enviado: Herramienta de facturación para autónomos, USD 19 por mes, prueba gratuita de 14 días, 30 clientes de pago después de 5 meses. Los registros provienen principalmente de dos publicaciones de blog que se posicionan en Google (cómo escribir una factura de autónomo; cómo perseguir pagos atrasados). Alrededor del 12% de las pruebas se convierten. El desarrollador tiene un trabajo de día y unas 10 horas a la semana para el producto. DURO: sin publicidad pagada. DURO: como máximo 3 horas a la semana para esto.

Resultado del consejo

  1. 1 Reemplaza el reloj de 14 días por tres envíos reales gpt-5.6 · rompe reglas · 18/20 puntos (9 + 9) Prueba una prueba que termine después de tres facturas enviadas o recordatorios de pago en lugar de después de 14 días calendario. Esto rompe deliberadamente el supuesto implícito de que una prueba limitada por tiempo es apropiada: los freelancers pueden no facturar durante una ventana arbitraria de dos semanas, por lo que la prueba actual puede expirar antes de que el producto demuestre su valor. Mantén el plan mensual de $19 sin cambios y compara la conversión de activación a pago por cohorte.
  2. 2 Completa la tarea dentro del artículo gpt-5.6 · dentro del brief · 17/20 puntos (9 + 8) Incorpora un pequeño constructor de facturas en "cómo escribir una factura de freelancer": los lectores ingresan cliente, monto, fecha de vencimiento y términos de pago, y luego ven una vista previa terminada. "Enviar o guardar esta factura" crea una prueba con esos detalles ya cargados, eliminando la brecha entre aprender y hacer. Constrúyelo en segmentos semanales con un máximo de tres horas, y luego mantén el mantenimiento cerca de cero.
  3. 3 Convierte el artículo de recordatorios en una consola de recuperación gpt-5.6 · vecino · 17/20 puntos (9 + 8) Como una sustitución de un solo paso del constructor de facturas integrado, permite que los lectores ingresen un monto vencido y una fecha de vencimiento para generar una secuencia de tres mensajes de recordatorio con fechas. Iniciar una prueba guarda al deudor, programa los mensajes y abre el primer borrador listo para enviar. Esto preserva el patrón más fuerte—salida útil antes del registro—mientras coincide con la intención de la segunda publicación.
  4. 4 Pon el momento de conversión en el calendario del deudor gpt-5.6 · dentro del brief · 16/20 puntos (7 + 9) Ofrece un archivo .ics generado en el artículo de pagos atrasados con recordatorios para la fecha de vencimiento y seguimientos escalonados en los días 1, 7 y 14. Cada evento de calendario contiene un enlace profundo que abre el flujo de recordatorio relevante con las fechas prellenadas, trayendo al lector de vuelta cuando el dolor es real en lugar de mientras solo está investigando. No requiere captura de correo electrónico y puede funcionar sin supervisión.
  5. 5 Plan gratuito permanente para un cliente en lugar de un período de prueba gemini-3.6-flash · rompe reglas · 16/20 puntos (8 + 8) Esta idea rompe la restricción implícita de la prueba de 14 días y la reemplaza con un plan freemium para exactamente un cliente activo. Los freelancers usan el producto de forma gratuita de manera permanente para su primer cliente y actualizan sin problemas a la tarifa plana de 19 dólares tan pronto como se agrega un segundo cliente.
  6. 6 Dirige a los lectores por problema inmediato gpt-5.6 · dentro del brief · 14/20 puntos (8 + 6) Reemplaza los banners de prueba genéricos con tres opciones integradas como "Necesito mi primera factura", "Facturo repetidamente" y "Un cliente ya está atrasado". Cada opción abre un estado de incorporación correspondiente en lugar de la misma página de inicio, y los IDs de sección del artículo pueden preseleccionar valores predeterminados sensatos. Mide la activación de prueba completada, no solo los clics en CTA, y prueba una ruta por semana.
  7. 7 Publica tres transformaciones forenses de facturas gpt-5.6 · dentro del brief · 14/20 puntos (8 + 6) Con permiso, convierte tres facturas de clientes anonimizadas en estudios de caso estáticos de antes y después que muestren exactamente qué cambió y por qué. Inserta cada transformación junto al consejo relevante en la publicación de clasificación, con un CTA que abre la misma estructura corregida como una plantilla de prueba editable. La evidencia específica de una base de clientes pequeña puede ser más creíble que testimonios amplios.
  8. 8 Permite que los lectores lleven el progreso entre ambas publicaciones gpt-5.6 · dentro del brief · 14/20 puntos (7 + 7) Almacena la moneda elegida por el lector, la etapa de la factura y la fecha de vencimiento localmente en el navegador, y luego usa ese estado cuando se mueven entre los dos artículos. Alguien que creó un plan de factura puede ver más tarde un aviso contextual como "Tu factura tiene ahora 3 días de retraso—abre el seguimiento preparado", con la incorporación de prueba prellenada. Esto crea un viaje ligero de dos publicaciones sin requerir una cuenta o producción de contenido continua.
  9. 9 Configurador interactivo de cartas de recordatorio gemini-3.6-flash · dentro del brief · 14/20 puntos (7 + 7) Agrega un generador de cartas de recordatorio de pago escalonadas al artículo sobre el seguimiento de pagos vencidos. Después de ingresar el texto, se genera la plantilla, combinada con el CTA para configurar recordatorios de pago automáticos para facturas futuras en la cuenta de prueba.
  10. 10 Enlace mágico de envío instantáneo sin registro previo gemini-3.6-flash · vecino · 14/20 puntos (8 + 6) Mutación del generador dentro del contenido: el lector ingresa los detalles de la factura directamente en el artículo del blog y hace clic en Enviar factura ahora. En segundo plano, el sistema crea sin problemas una cuenta de prueba y envía el correo directamente; la contraseña solo se establece después.
  11. 11 Generador de facturas en vivo directamente en el artículo del blog gemini-3.6-flash · dentro del brief · 13/20 puntos (6 + 7) Incorpora una herramienta de formulario interactiva simple directamente en el artículo sobre cómo escribir facturas. Los lectores escriben sus detalles de factura y pueden descargar el PDF terminado de inmediato y de forma gratuita. Un botón prominente ofrece enviar la factura digitalmente con un clic y rastrear el estado del pago en la cuenta de prueba de 14 días.
  12. 12 Recordatorio único de pago por uso en lugar de una suscripción mensual gemini-3.6-flash · rompe reglas · 13/20 puntos (6 + 7) Esta idea rompe la restricción implícita del modelo de suscripción SaaS puro a 19 dólares por mes. Por una tarifa única de 5 dólares, los lectores del artículo de pagos atrasados pueden recibir una carta de recordatorio legalmente sólida con un enlace de seguimiento, con la tarifa totalmente acreditada si luego contratan una suscripción.
  13. 13 Plantilla que se abre en la herramienta claude · dentro del brief · 11/20 puntos (6 + 5) Ofrece la plantilla de factura de la publicación como una factura lista para usar en la herramienta: un clic abre una cuenta de prueba prellenada en lugar de una descarga de archivo.
  14. 14 Intención de salida específica del problema con una secuencia de correo automatizada gemini-3.6-flash · dentro del brief · 8/20 puntos (4 + 4) Implementa un popup de intención de salida en el artículo de pagos atrasados que ofrezca una plantilla de correo de emergencia para clientes que pagan tarde a cambio de una dirección de correo electrónico. Una secuencia automatizada de tres partes explica entonces pasivamente cómo los flujos de trabajo automatizados reducen los pagos atrasados y enlaza a la cuenta de prueba.

Brainstorm con Kirat: ¿cómo convertimos esta reconstrucción única de la tienda en un plan de cuidado que el cliente realmente quiera?

kirat_brainstorm preguntó al consejo

El consejo propuso 15 ideas y calificó cada una de forma anónima. Las tres mejores:

  1. Desglose de presupuesto: operaciones antes del brillo del lanzamiento (18/20 puntos)
  2. Guardián de productos CSV (17/20 puntos)
  3. Dividendo de confiabilidad (17/20 puntos)

Detrás de escena

kirat_brainstorm Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_BRAINSTORM · ESFUERZO: ESTÁNDAR · 15 IDEAS · 1 RONDA · $0.10

Tema: Ideas para una pequeña agencia digital para convertir una reconstrucción única de tienda en un retenedor de cuidado recurrente que el cliente realmente quiera

Contexto enviado: Agencia de 4 personas. El cliente vende alrededor de 1,800 productos de muebles en Alemania, Austria y Suiza, tiene 3 empleados y ningún desarrollador interno, ingresos de aproximadamente EUR 1.2 millones al año. La tienda WooCommerce autohospedada anterior tenía 31 complementos y dos incidentes de seguridad el año pasado; el cliente quiere menor mantenimiento y menos emergencias. Un ERP local exporta datos de productos como CSV. Presupuesto de reconstrucción: EUR 25,000. DURO: sin bloqueo; el cliente debe poder irse con todos los datos y acceso en cualquier momento. DURO: sin contrataciones adicionales en la agencia.

Resultado del consejo

  1. 1 Pausa presupuestaria: gloss previo al lanzamiento gpt-5.6 · rompe reglas · 18/20 puntos (9 + 9) Esta idea rompe deliberadamente la restricción suave del presupuesto de reconstrucción de 25,000 EUR: la oferta es, por ejemplo, 22,000 EUR para un lanzamiento deliberadamente austero más 12,000 EUR por un primer año de operación vinculante. A cambio, se eliminan del proyecto inicial las funciones agradables de tener; en su lugar, se financian el endurecimiento de importaciones, simulacros de restauración, monitoreo y mejoras mensuales. El mayor volumen total vale la pena porque el cliente no vuelve a comprar una tienda aparentemente terminada cuyos costos operativos reales solo se hacen visibles después del lanzamiento; todas las credenciales de acceso, datos y resultados de trabajo permanecen transferibles en cualquier momento.
  2. 2 CSV Product Gatekeeper gpt-5.6 · dentro del brief · 17/20 puntos (9 + 8) Antes de cada importación ERP, un pipeline automatizado verifica el CSV en busca de precios faltantes, duplicados, variantes inválidas, errores de imagen, lógica fiscal DACH y cambios sospechosos de stock. El retenedor mensual cubre el mantenimiento de reglas, el monitoreo de importaciones y un informe de errores comprensible para los tres empleados. Esto convierte el mantenimiento técnico en un beneficio comercial directo: menos productos incorrectos, preguntas de seguimiento y compras abandonadas.
  3. 3 Dividendo de confiabilidad gpt-5.6 · dentro del brief · 17/20 puntos (8 + 9) El cliente paga una tarifa base moderada por monitoreo y mantenimiento; un monto trimestral adicional solo vence si se cumplen los objetivos de confiabilidad acordados, como importaciones exitosas, restauración probada y tiempos de respuesta. Las interrupciones evitables causadas por la agencia generan créditos de servicio en lugar de horas de emergencia facturables. Este modelo alinea los incentivos económicos con la prevención y elimina el temor del cliente de que la agencia se beneficie de los problemas.
  4. 4 Carta de cuidado lista para salir gpt-5.6 · dentro del brief · 16/20 puntos (9 + 7) El retenedor se vende deliberadamente como un producto anti-bloqueo: monitoreo, actualizaciones, copias de seguridad, verificaciones de seguridad y dos cambios pequeños por mes por aproximadamente 1,200–1,500 EUR. Todas las cuentas están en manos del cliente, y el código y los scripts de importación viven en el repositorio del cliente; cada mes el cliente también recibe documentación, una exportación de datos y un paquete de transferencia que le permite cancelar en cualquier momento. Así, el cliente paga por operabilidad demostrable en lugar de dependencia.
  5. 5 Tren de lanzamientos estacional gpt-5.6 · dentro del brief · 16/20 puntos (8 + 8) En lugar de tickets de soporte arbitrarios, hay cuatro lanzamientos de comercio planificables por año, por ejemplo para muebles de jardín, fin de verano, Black Week y Navidad. Incluidos en el retenedor para cada lanzamiento están un pequeño paquete de UX o merchandising, pruebas de regresión y el mantenimiento técnico intermedio. Esto le da al cliente un desarrollo continuo visible y mantiene el esfuerzo agrupable para la agencia de cuatro personas.
  6. 6 La prueba de escape trimestral gpt-5.6 · dentro del brief · 16/20 puntos (9 + 7) Una vez al trimestre, la agencia proporciona una exportación completa de datos de productos, clientes, pedidos y contenido, y realiza un reinicio documentado en un entorno de prueba neutral. Lo que el cliente paga, precisamente, es la salida probada regularmente: la lista de accesos, el registro de restauración y el manual de transferencia pertenecen al cliente. El criterio estricto de no-bloqueo se convierte así de una objeción a un punto de venta inusual para el retenedor.
  7. 7 Carta de cuidado más intercambio de crecimiento gpt-5.6 · vecino · 16/20 puntos (8 + 8) Como una pequeña mutación de la Carta de cuidado lista para salir, las horas de cambio incluidas no se fijan de antemano, sino que se desplazan mensualmente entre operaciones, calidad de datos y mejoras de conversión; el volumen no utilizado se transfiere como máximo por un trimestre. Una junta conjunta de 30 minutos decide cómo se utilizan, basándose en riesgos y oportunidades de ingresos. El retenedor sigue listo para salir, pero se siente menos como un seguro y más como un equipo digital externo flexible.
  8. 8 Retenedor de seguridad de sincronización ERP y catálogo gemini-3.6-flash · dentro del brief · 13/20 puntos (7 + 6) La agencia asume el monitoreo y mantenimiento continuos de la interfaz entre el CSV ERP local y la tienda en línea. Las importaciones de datos defectuosas, las variantes de muebles faltantes o los precios incorrectos se detectan automáticamente antes de que se publiquen. Esto elimina por completo la carga operativa del mantenimiento de datos del equipo de 3 personas del cliente.
  9. 9 Tarifa plana de enriquecimiento de datos de productos impulsado por IA gemini-3.6-flash · vecino · 13/20 puntos (6 + 7) Mutación de la idea de la interfaz ERP: la agencia no solo mantiene la importación CSV, sino que también utiliza scripts de IA para enriquecer automáticamente los datos brutos con atributos estructurados, copy para SEO y notas de tiempos de entrega específicos de DACH. Esto ahorra al cliente el esfuerzo de mantenimiento manual y aumenta la visibilidad en el mercado de muebles sin personal adicional de la agencia.
  10. 10 Contrato de mantenimiento de regresión visual basado en CI/CD gemini-3.6-flash · dentro del brief · 12/20 puntos (6 + 6) En lugar de actualizaciones en vivo arriesgadas, la agencia configura un pipeline de staging que verifica automáticamente las actualizaciones mensuales de plugins visual y funcionalmente. El cliente recibe un informe de transparencia mensual y tiempos de respuesta garantizados para vulnerabilidades de seguridad. Esto garantiza una estabilidad absoluta sin las emergencias anteriores.
  11. 11 Pulido trimestral de conversión y UX gemini-3.6-flash · dentro del brief · 11/20 puntos (6 + 5) Además del mantenimiento básico, el retenedor incluye cuotas de horas fijas para optimizar las funciones de pago y las pantallas de variantes de muebles. La agencia analiza el comportamiento del usuario en la región DACH cada mes e implementa ajustes de alto retorno. Esto convierte el retenedor de un factor de costo puro a un impulsor de ingresos.
  12. 12 Actualización segura y garantía de reversión instantánea gemini-3.6-flash · vecino · 11/20 puntos (5 + 6) Mutación del contrato de mantenimiento CI/CD: el retenedor se centra puramente en un SLA garantizado de cero tiempo de inactividad con restauración automatizada de instantáneas dentro de los 15 minutos en caso de incidentes. Esto aborda directamente el temor del cliente después de los dos incidentes de seguridad, con un esfuerzo manual continuo mínimo.
  13. 13 Paquete de crecimiento con participación en ingresos en lugar de presupuesto fijo gemini-3.6-flash · rompe reglas · 9/20 puntos (4 + 5) Rompe la suposición suave de un presupuesto rígido de reconstrucción única de 25,000 EUR: los costos de reconstrucción se reducen a 10,000 EUR, junto con un retenedor mensual con una pequeña participación de los ingresos adicionales. Esto vale la pena porque el cliente reduce su riesgo de inversión y la agencia participa directamente en el crecimiento de la tienda de 1.2 millones de EUR.
  14. 14 Servicio de cuidado de arquitectura headless gemini-3.6-flash · rompe reglas · 7/20 puntos (3 + 4) Rompe la restricción suave de una configuración monolítica clásica (como WooCommerce estándar): el frontend se desacopla del backend, por lo que las vulnerabilidades de seguridad de los plugins ya no pueden atacar el sitio web directamente. Esto vale la pena porque las emergencias se eliminan estructuralmente y el cliente permanece portable en cualquier momento gracias a un stack de código abierto y acceso completo a Git.
  15. 15 Informe de cuidado mensual de una página claude · dentro del brief · 6/20 puntos (4 + 2) Un informe mensual de una página con tiempo de actividad, velocidad de página, actualizaciones aplicadas e incidentes prevenidos, para que el cliente vea lo que paga el retenedor.

Nuestra nueva página de pedidos se lanza el próximo mes. Haz una lluvia de ideas con Kirat sobre cómo obtener más pedidos anticipados de pasteles sin anuncios pagados.

kirat_brainstorm preguntó al consejo

El consejo propuso 15 ideas y calificó cada una de forma anónima. Las tres mejores:

  1. El autopiloto de cumpleaños anual (18/20 puntos)
  2. Espacios de pastel reales en lugar de publicaciones genéricas (17/20 puntos)
  3. El pastel viaja como su propio medio publicitario (16/20 puntos)

Detrás de escena

kirat_brainstorm Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_BRAINSTORM · ESFUERZO: ESTÁNDAR · 15 IDEAS · 1 RONDA · $0.09

Tema: Ideas para una panadería local para obtener más pedidos anticipados de pasteles personalizados a través de su nueva página de pedidos en línea, sin anuncios pagados

Contexto enviado: Panadería con 6 empleados en una ciudad alemana de 40,000 habitantes. Los pasteles personalizados y los pedidos anticipados tienen el mejor margen. Una nueva página de pedidos en línea (elección de pastel, fecha de recogida, pago anticipado) se lanza el próximo mes; hasta ahora los pedidos llegaban solo por teléfono y correo electrónico. El perfil de Google Business tiene 4.7 estrellas de 120 reseñas. El dueño tiene poco tiempo, por lo que las ideas deben funcionar con un máximo de 2 horas por semana. DURO: sin publicidad pagada este trimestre. DURO: sin personal adicional.

Resultado del consejo

  1. 1 El autopiloto anual de cumpleaños gpt-5.6 · dentro del encargo · 18/20 puntos (9 + 9) Al finalizar la compra, los clientes pueden indicar voluntariamente la ocasión y el mes para recibir un recordatorio al año siguiente. Un correo automatizado 21 días antes lleva a la página de pedido prellenada; así cada pedido genera un pedido futuro, sin adquisición continua de clientes y con consentimiento claro.
  2. 2 Espacios reales para pasteles en lugar de publicaciones genéricas gpt-5.6 · dentro del encargo · 17/20 puntos (9 + 8) La página de pedido muestra los espacios de producción restantes reales para las próximas cuatro semanas, como "Aún quedan 2 pasteles personalizados disponibles para el sábado". Una publicación semanal en Google Business enlaza directamente a esta vista; actualizarla y publicarla juntas toman como máximo 20 minutos y crean urgencia creíble sin descuentos.
  3. 3 El pastel viaja como su propio medio publicitario gpt-5.6 · dentro del encargo · 16/20 puntos (8 + 8) Cada pastel recogido lleva una pequeña tarjeta que dice "Vuelve a pedir o personaliza este pastel" y un código QR para la variante correspondiente. La tarjeta se muestra de forma visible al cortar el pastel, de modo que precisamente los invitados del cumpleaños o la boda presentes descubren el camino para pedir; un set de tarjetas creado una vez causa casi ningún esfuerzo semanal.
  4. 4 Hora de consulta de pasteles única en el lanzamiento gpt-5.6 · rompedor de reglas · 16/20 puntos (8 + 8) El primer sábado después del lanzamiento hay una hora de consulta de pasteles abierta durante cuatro horas: los invitados eligen sabor y estilo entre tarjetas de muestra y luego hacen su pedido ellos mismos mediante códigos QR dispuestos para ellos. Esto rompe deliberadamente la restricción suave de como máximo dos horas de esfuerzo esa semana; el esfuerzo extra vale la pena porque se producen pedidos reales, problemas de usabilidad observados y fotos y preguntas de clientes reutilizables al mismo tiempo, sin personal adicional ni publicidad pagada.
  5. 5 Socios de ocasiones en lugar de influencers gpt-5.6 · dentro del encargo · 15/20 puntos (8 + 7) Lugares de juego infantiles, fotógrafos, floristas, lugares de bodas y casas club reciben cada uno un pequeño soporte QR que lleva a una selección de pasteles preconfigurada para su ocasión. A cambio, la pastelería nombra a estos socios en una página local de recomendaciones; cinco solicitudes dirigidas al mes son suficientes, y se eliminan comisiones y alcance pagado.
  6. 6 Rota de pasteles para oficinas y clubes gpt-5.6 · dentro del encargo · 15/20 puntos (8 + 7) Oficinas, consultas y clubes locales obtienen una página donde se pueden recopilar varios cumpleaños o fechas recurrentes y pagarse por adelantado uno tras otro. Las rotas trimestrales, una vez configuradas, convierten ocasiones individuales en pedidos de serie planificables; el alcance puede limitarse a dos organizaciones por semana.
  7. 7 Consulta híbrida de pasteles en la tableta del mostrador gemini-3.6-flash · rompedor de reglas · 14/20 puntos (7 + 7) Rompe deliberadamente la restricción suave de "solo pedidos en línea" al ofrecer 1 hora de consulta en tienda los viernes, durante la cual los pedidos se ingresan juntos en una tableta. Vale la pena porque los clientes indecisos y mayores se introducen gradualmente al nuevo sistema en línea.
  8. 8 Las reseñas se convierten en una ayuda para decidir gpt-5.6 · vecino · 13/20 puntos (7 + 6) Como una pequeña recombinación del material existente más fuerte, doce frases significativas de las 120 reseñas de Google se emparejan con estilos de pastel correspondientes, cada una con un enlace de pedido directo. Así las 4.7 estrellas no solo se muestran como una señal de confianza, sino que ayudan con la selección del producto; después de una configuración única, la página es en gran medida libre de mantenimiento.
  9. 9 Exhibiciones de pasteles de muestra con enlaces profundos a la tienda gemini-3.6-flash · vecino · 13/20 puntos (6 + 7) Una galería de fotos física de los pasteles más bonitos en la sala de ventas incluye un código QR específico con cada foto que abre exactamente este modelo de pastel preseleccionado en la tienda en línea. Mutación de la idea 1: vincular la exhibición en tienda con un enlace profundo directo en la tienda.
  10. 10 Optimización del perfil de Google y enlaces de reseñas automatizados gemini-3.6-flash · dentro del encargo · 12/20 puntos (6 + 6) El fuerte perfil de Google (4.7 estrellas) se complementa con el botón oficial "Pedir en línea" y se actualiza semanalmente con una foto de los pasteles actuales. Al recoger, los clientes reciben una plantilla por correo con un enlace a la página de reseña y nuevo pedido. Toma menos de 30 minutos por semana.
  11. 11 Teaser de código QR en recibos y bolsas de pan gemini-3.6-flash · dentro del encargo · 11/20 puntos (6 + 5) Un código QR llamativo se imprime en cada recibo y en el empaque, llevando directamente al configurador de pasteles en línea ("Planifica tu pastel soñado para tu celebración en línea"). Esto convierte a los clientes diarios que entran en pedidos anticipados digitales sin esfuerzo extra en el mostrador.
  12. 12 Asociación B2B con lugares de eventos locales gemini-3.6-flash · dentro del encargo · 11/20 puntos (6 + 5) Soportes y volantes con un código de reserva directo para el sitio web se colocan en restaurantes locales, graneros de eventos y planificadores de bodas. Los clientes que celebran reservan su pastel directamente en línea, mientras que el lugar recibe una pequeña asignación de gastos o una referencia a cambio.
  13. 13 Calendario de cumpleaños de guarderías y escuelas gemini-3.6-flash · vecino · 10/20 puntos (4 + 6) Cooperación con jardines de infancia locales mediante volantes informativos para consejos de padres que contienen un código de descuento fijo para pasteles temáticos infantiles. Mutación de la idea 3: en lugar de socios B2B generales, la ocasión de alta frecuencia de los cumpleaños infantiles se aborda específicamente de manera automatizada.
  14. 14 Taller mensual mini para pasteles decorados gemini-3.6-flash · rompedor de reglas · 10/20 puntos (4 + 6) Rompe deliberadamente la restricción suave de "máximo 2 horas de tiempo por semana", ya que un taller de 4 horas tiene lugar una vez al mes. Vale la pena porque los participantes actúan como embajadores de la marca, crean contenido entusiasta en redes sociales y garantizan pedidos de seguimiento a través de la tienda en línea.
  15. 15 Enlace de pedido en cada caja de pastel claude · dentro del encargo · 8/20 puntos (4 + 4) Imprime un código QR a la página de pedido en las cajas de pastel y recibos, para que cada cliente que ya compra un pastel pueda volver a pedir para el próximo cumpleaños sin llamar.

Nota de Kirat para Claude: La mejor idea rompedora de reglas solo está en el puesto 4: "Hora de consulta de pasteles única en el lanzamiento" — rompe deliberadamente una restricción suave. Defiéndela una vez antes de descartarla.

Haz una lluvia de ideas con Kirat sobre cómo reducir los incidentes de facturación dentro de dos trimestres sin separar la facturación del monolito.

kirat_brainstorm preguntó al consejo

El consejo propuso 15 ideas y calificó cada una de forma anónima. Las tres mejores:

  1. Cortafuegos de base de datos alrededor de las tablas de facturación (17/20 puntos)
  2. Invariantes financieros ejecutables (17/20 puntos)
  3. Repetición de incidentes como prueba de lanzamiento (17/20 puntos)

Detrás de escena

kirat_brainstorm Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_BRAINSTORM · ESFUERZO: ESTÁNDAR · 15 IDEAS · 1 RONDA · $0.06

Tema: Ideas para reducir los incidentes de producción causados por el módulo de facturación dentro de dos trimestres, sin extraerlo a un servicio separado

Contexto enviado: Equipo de 8 ingenieros. Un monolito TypeScript, alrededor de 60,000 líneas, una base de datos Postgres, desplegado varias veces al día. El módulo de facturación cambia cada semana y causó 5 de los últimos 8 incidentes de producción, principalmente porque otros módulos leen y escriben tablas de facturación directamente. Nadie en el equipo ha ejecutado un sistema distribuido en producción. El liderazgo quiere menos incidentes dentro de dos trimestres. DURO: sin reescritura del módulo de facturación. DURO: el trabajo de funciones en facturación continúa cada semana.

Resultado del consejo

  1. 1 Firewall de base de datos alrededor de las tablas de facturación gpt-5.6 · dentro del brief · 17/20 puntos (9 + 8) Crear roles de Postgres separados para las rutas de código de facturación y no facturación del monolito, y luego revocar escrituras directas a las tablas de facturación desde el rol general de la aplicación. Enrutar todas las mutaciones a través de un pequeño conjunto de procedimientos almacenados o funciones de transacción revisados, añadiendo primero registro de auditoría temporal para descubrir y migrar a los llamadores sin detener el trabajo semanal de funciones.
  2. 2 Invariantes financieros ejecutables gpt-5.6 · dentro del brief · 17/20 puntos (9 + 8) Codificar una lista corta de invariantes—como facturas finalizadas inmutables, entradas de libro mayor equilibradas, creación de cargos idempotente y transiciones de estado válidas—como restricciones de base de datos donde sea seguro y como sondas de producción programadas donde no lo sea. Ejecutar las mismas sondas contra fixtures anonimizados con forma de producción en CI, convirtiendo el conocimiento de incidentes en alarmas permanentes en lugar de una expansión amplia de pruebas.
  3. 3 Reproducción de incidentes como prueba de lanzamiento gpt-5.6 · dentro del brief · 17/20 puntos (9 + 8) Convertir los cinco incidentes de facturación en escenarios de reproducción deterministas utilizando formas de consulta capturadas y filas saneadas, y luego exigir que cada cambio de facturación los supere. Añadir pruebas generativas que permuten reintentos, eventos duplicados, orden de transacciones y fallos parciales alrededor de esos escenarios exactos, apuntando al vecindario de fallos en lugar de intentar una cobertura exhaustiva del monolito.
  4. 4 Aplicar en la sombra el límite de facturación gpt-5.6 · vecino · 16/20 puntos (9 + 7) Como una mutación de menor riesgo del firewall de base de datos, mantener los permisos actuales inicialmente pero registrar cada consulta que toque tablas de facturación con su módulo, sitio de llamada e ID de transacción. Después de cuatro semanas, convertir escrituras inesperadas en fallos de CI, y luego en errores de producción módulo por módulo; esto sustituye la aplicación escalonada por un cambio inmediato de permisos.
  5. 5 Panel de control de radio de explosión de facturación gpt-5.6 · dentro del brief · 16/20 puntos (9 + 7) Poner comportamientos de facturación riesgosos—no todo el módulo—detrás de interruptores de apagado del lado del servidor y despliegues porcentuales, con paneles vinculados a anomalías de facturas, pagos y conciliación. Cada función semanal se lanza con una ruta de escape probada para que los respondedores puedan deshabilitar el nuevo comportamiento sin revertir despliegues no relacionados del monolito ni deshacer migraciones de esquema.
  6. 6 Encapsulación de esquema de Postgres y seguridad a nivel de fila gemini-3.6-flash · dentro del brief · 15/20 puntos (7 + 8) Aislar las tablas de facturación en un esquema de Postgres dedicado (billing.*) y revocar el acceso directo de lectura y escritura a otros roles de base de datos. Los módulos acceden a ellas solo a través de vistas SQL definidas o interfaces almacenadas. Esto elimina la causa principal de los incidentes directamente a nivel de base de datos.
  7. 7 Pruebas de contrato y pipeline en la sombra para lanzamientos de facturación gemini-3.6-flash · dentro del brief · 15/20 puntos (8 + 7) Establecer pruebas de contrato automatizadas impulsadas por consumidores para todas las interfaces de facturación en el pipeline de CI. Además, los cambios de facturación en cálculos críticos se ejecutan en modo sombra en producción, sin efectos secundarios y con verificación automática de diferencias.
  8. 8 Una segunda base de datos como instrumento de seguridad gpt-5.6 · rompedor de reglas · 14/20 puntos (7 + 7) Romper deliberadamente la suposición blanda de "una base de datos de Postgres" añadiendo una base de datos en la sombra de solo lectura alimentada mediante replicación lógica, manteniendo la facturación dentro del monolito y conservando la primaria como único escritor. Ejecutar nuevas lecturas de facturación y verificaciones de conciliación contra ambas bases de datos, comparar resultados antes de la exposición, y usar la sombra para consultas forenses para que el diagnóstico de incidentes no pueda sobrecargar o mutar accidentalmente la producción.
  9. 9 Linting estricto de límites de módulo y fachada de API pública gemini-3.6-flash · dentro del brief · 14/20 puntos (7 + 7) Introducir linting de arquitectura mediante dependency-cruiser que prohíba importaciones directas de internos de facturación en otros módulos en el paso de compilación. La comunicación solo puede ocurrir a través de una única interfaz BillingFacade con seguridad de tipos, de modo que el acoplamiento progresivo se bloquee inmediatamente.
  10. 10 Pasaportes de cambio de facturación gpt-5.6 · dentro del brief · 13/20 puntos (7 + 6) Exigir que cada solicitud de extracción relacionada con facturación lleve un pasaporte verificado por máquina: tablas afectadas, invariantes, compatibilidad de migración, ruta de reversión y una consulta de producción que demuestre salud posterior al despliegue. Una puerta de CODEOWNERS más una revisión rotativa de 15 minutos por un responsable de facturación mantiene el proceso lo suficientemente ligero para cambios semanales mientras concentra el escrutinio en efectos entre módulos.
  11. 11 Vistas de Postgres de solo lectura generadas automáticamente para módulos externos gemini-3.6-flash · vecino · 13/20 puntos (7 + 6) Una mutación de la encapsulación de esquema: en lugar de costosas refactorizaciones de API, se proporcionan automáticamente vistas de Postgres de solo lectura para consultas externas. Los módulos externos leen solo estas vistas estables, mientras que el acceso directo a tablas se bloquea mediante permisos de base de datos.
  12. 12 Bus de eventos asíncrono en proceso para modelos de lectura gemini-3.6-flash · dentro del brief · 12/20 puntos (4 + 8) En lugar de que otros módulos consulten tablas de facturación directamente, el módulo de facturación envía eventos en memoria sobre cambios de estado. Los módulos receptores construyen sus propias proyecciones locales. Esto desacopla completamente el acceso de lectura de las tablas de facturación sin introducir sistemas distribuidos.
  13. 13 Congelación de funciones de dos semanas para encapsulación de facturación gemini-3.6-flash · rompedor de reglas · 11/20 puntos (5 + 6) Rompe la restricción blanda de producción semanal continua de funciones durante exactamente dos semanas. Todo el equipo se concentra en separar los acoplamientos de base de datos. El esfuerzo único sienta las bases para reducir sosteniblemente el número de incidentes en los 5 meses restantes.
  14. 14 Rol de base de datos por módulo claude · dentro del brief · 11/20 puntos (6 + 5) Dar a facturación su propio esquema y rol de Postgres y revocar el acceso de escritura de otros módulos a las tablas de facturación, de modo que las escrituras directas fallen en staging antes de llegar a producción.
  15. 15 Partición física de base de datos en una segunda instancia de Postgres gemini-3.6-flash · rompedor de reglas · 9/20 puntos (3 + 6) Rompe la restricción blanda de la arquitectura de base de datos única pero mantiene el código monolítico. Los datos de facturación se mueven a su propia instancia de base de datos, lo que hace técnicamente imposibles las uniones SQL transversales. La complejidad operativa sigue siendo mínima porque el código sigue siendo monolítico.

Nota de Kirat para Claude: La mejor idea de rompedor de reglas solo está en el puesto 8: "Una segunda base de datos como instrumento de seguridad" — rompe deliberadamente una restricción blanda. Hazle un steelman una vez antes de descartarla.

Haz una lluvia de ideas con Kirat sobre cómo podemos reducir el tiempo de cribado de aproximadamente 3,000 registros sin debilitar la revisión.

kirat_brainstorm preguntó al consejo

El consejo propuso 14 ideas y calificó cada una de forma anónima. Las tres mejores:

  1. Puerta de exclusión de dos humanos (18/20 puntos)
  2. Sprint de calibración con un libro de casos límite (16/20 puntos)
  3. Consola binaria rápida, no extracción de datos en miniatura (15/20 puntos)

Detrás de escena

kirat_brainstorm Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_BRAINSTORM · ESFUERZO: ESTÁNDAR · 14 IDEAS · 1 RONDA · $0.18

Tema: Ideas para reducir el tiempo de personal del cribado de títulos y resúmenes de aproximadamente 3,000 registros sin debilitar el rigor de una revisión sistemática

Contexto enviado: Revisión sistemática en investigación de servicios de salud, planificada para publicación. Protocolo actual: dos cribadores humanos independientes, conflictos resueltos por discusión. El tiempo del personal es escaso. Los revisores de la revista preguntarán cómo se realizó el cribado. Perder un estudio relevante (exclusión falsa) es peor que incluir uno irrelevante. DURO: el método debe ser reportable bajo PRISMA 2020. DURO: la tasa de exclusiones falsas no debe aumentar.

Resultado del consejo

  1. 1 Puerta de exclusión con dos humanos gpt-5.6 · rompe reglas · 18/20 puntos (10 + 8) Haz que el Revisor A examine cada registro, pero envía directamente las inclusiones y decisiones inciertas de A; el Revisor B evalúa de forma independiente solo las exclusiones propuestas por A. Excluye un registro solo cuando ambos humanos lo excluyan de forma independiente, y avanza automáticamente cada desacuerdo, eliminando la mayoría de las discusiones de conflictos. Esto rompe deliberadamente el supuesto blando del protocolo actual de que dos humanos deben evaluar cada registro; vale la pena porque ahorra tiempo de cribado mientras estructuralmente permite más inclusiones falsas, pero ninguna exclusión falsa adicional, y es sencillo de describir en la sección del proceso de selección de PRISMA.
  2. 2 Maratón de calibración con un libro de casos límite gpt-5.6 · dentro del encargo · 16/20 puntos (9 + 7) Criba dual independiente de un primer lote estratificado, resuelve los conflictos y convierte las ambigüedades recurrentes en reglas operativas breves con ejemplos positivos y negativos. Bloquea las reglas antes de continuar; conserva las decisiones piloto solo si los criterios de elegibilidad no cambiaron; de lo contrario, vuelve a cribarlas. Esto preserva el cribado dual independiente mientras reduce la deliberación posterior y el tiempo de resolución de conflictos, y la calibración puede informarse bajo PRISMA.
  3. 3 Consola binaria rápida, no extracción de datos en miniatura gpt-5.6 · dentro del encargo · 15/20 puntos (8 + 7) Dale a ambos revisores una interfaz ciega, controlada por teclado, limitada a incluir, excluir o incierto, con el título y el resumen completos siempre visibles; difiere la codificación detallada y las razones de exclusión a la revisión de texto completo. PRISMA 2020 no exige razones a nivel de registro en la etapa de título y resumen. El proceso de decisión permanece sin cambios, pero disminuye el tiempo evitable de lectura, clics y documentación.
  4. 4 Válvula de liberación automática solo de inclusión gpt-5.6 · vecino · 15/20 puntos (9 + 6) Como una mutación de un solo paso de la puerta de exclusión con dos humanos, ejecuta las exclusiones propuestas por A a través de un clasificador validado que solo puede liberar registros a inclusión, nunca excluirlos; el Revisor B criba de forma independiente todo lo que el clasificador no libera. La exclusión final aún requiere decisiones concordantes de dos humanos, por lo que un error de la máquina puede añadir textos completos pero no puede crear una exclusión falsa. Informa el modelo, la versión, las entradas, los umbrales, la validación y su rol estrictamente solo de inclusión bajo PRISMA.
  5. 5 Cribado de exclusión asimétrico gemini-3.6-flash · dentro del encargo · 15/20 puntos (7 + 8) Un primer revisor clasifica los 3.000 registros por completo. El segundo revisor verifica solo aquellos registros que el primer revisor excluyó, para detectar falsos negativos (las inclusiones se aceptan directamente). Esto casi reduce a la mitad el esfuerzo del segundo revisor, mantiene el riesgo de exclusiones falsas extremadamente bajo y cumple todos los requisitos de PRISMA.
  6. 6 Omitir el cribado para estratos de alto rendimiento gpt-5.6 · rompe reglas · 13/20 puntos (8 + 5) Predeclara subconjuntos de alto rendimiento—como registros de un bloque de búsqueda altamente específico, descendientes directos de estudios elegibles conocidos o registros ya incluidos en una revisión estrechamente alineada—y envía todos directamente a la recuperación de texto completo sin decisiones de título y resumen. Esto rompe deliberadamente el protocolo blando de dos cribadores para esos registros, pero no puede aumentar las exclusiones falsas porque nada en el subconjunto se excluye; la compensación es trabajo adicional de texto completo. Informa la regla de omisión y los recuentos resultantes explícitamente en el diagrama de flujo de PRISMA y en los métodos de selección.
  7. 7 Cribado priorizado mediante aprendizaje activo gemini-3.6-flash · dentro del encargo · 13/20 puntos (5 + 8) Ambos cribadores humanos usan una herramienta de aprendizaje activo (como ASReview) que ordena los títulos/resúmenes relevantes al principio. Tan pronto como se alcanza un criterio de detención estadísticamente validado (por ejemplo, 500 resultados irrelevantes consecutivos), el cribado finaliza. El procedimiento ahorra hasta el 70% del tiempo, puede documentarse de manera compatible con PRISMA 2020 y mantiene una tasa mínima de exclusión falsa mediante la calibración del algoritmo.
  8. 8 Deduplicación solo exacta antes del cribado gpt-5.6 · dentro del encargo · 12/20 puntos (8 + 4) Elimina solo registros probados idénticos mediante DOI, número de acceso de base de datos o coincidencia bibliográfica normalizada exacta; conserva la copia con más metadatos y solo marca los casi duplicados inciertos. Ambos revisores criban entonces de forma independiente cada registro único restante, mientras PRISMA informa los duplicados eliminados antes del cribado. Esto reduce el volumen sin crear una vía para excluir un estudio único.
  9. 9 Cascada humano-IA con red de seguridad de IA gemini-3.6-flash · vecino · 12/20 puntos (5 + 7) Una mutación del cribado de exclusión asimétrico: un cribador humano procesa todos los registros solo, mientras un modelo de IA ajustado para máxima sensibilidad verifica solo las exclusiones humanas. Un segundo humano verifica solo donde hay discrepancias. Esto reduce la capacidad humana en más del 50% con cobertura completa.
  10. 10 Segundo revisor de IA totalmente automatizado gemini-3.6-flash · rompe reglas · 11/20 puntos (3 + 8) Rompe la restricción blanda de que dos seres humanos deben hacer necesariamente el cribado. Un modelo de lenguaje grande (LLM) asume el rol del segundo revisor independiente con un prompt de cero falsos negativos. Vale la pena porque el tiempo de trabajo humano se reduce a la mitad y se ha demostrado que los LLM logran altas tasas de recuperación en el cribado de resúmenes; PRISMA 2020 permite explícitamente informar herramientas de IA.
  11. 11 Cribado único adaptado al riesgo con triaje de confianza gemini-3.6-flash · rompe reglas · 11/20 puntos (5 + 6) Rompe la restricción blanda del doble cribado continuo para todo el conjunto de datos. Si el primer revisor declara una alta confianza subjetiva y existen razones claras de exclusión, se omite al segundo revisor; solo los casos inciertos pasan al doble cribado. Esto ahorra hasta el 60% del tiempo del personal, mientras el riesgo de estudios omitidos sigue siendo mínimo porque los recursos se centran en áreas grises.
  12. 12 Ronda de calibración primero claude · dentro del encargo · 11/20 puntos (6 + 5) Ambos cribadores criban los mismos 100 registros, discuten cada conflicto y afinan los criterios de elegibilidad antes de la ronda principal, de modo que los conflictos y relecturas posteriores disminuyen.
  13. 13 Cribado rápido binarizado con triaje de IA gemini-3.6-flash · vecino · 10/20 puntos (4 + 6) Mutación de la priorización por aprendizaje activo: el equipo usa una interfaz simplificada para una calificación rápida (solo clics para 'Incluir/Inseguro' vs. 'Excluir'). Un modelo de IA evalúa las incertidumbres en segundo plano y envía solo los candidatos límite a una verificación doble en profundidad. Minimiza drásticamente la carga cognitiva y el tiempo de lectura por resumen.
  14. 14 Prefiltrado determinista mediante algoritmos de coincidencia gemini-3.6-flash · dentro del encargo · 6/20 puntos (3 + 3) Filtros de búsqueda conservadores y scripts descartan de antemano resultados claramente inadecuados (por ejemplo, diseño de estudio incorrecto o población no humana). Ambos cribadores verifican estas exclusiones automatizadas solo mediante una muestra representativa (por ejemplo, 10%). Esto reduce el volumen total a cribar manualmente de manera compatible con PRISMA y sin pérdida de sensibilidad.

Todas las ideas, completas y en orden de clasificación. La propia idea de Claude participa de forma anónima y en igualdad de condiciones. El tema y el contexto se enviaron en inglés; las ideas que los miembros escribieron en alemán están traducidas aquí.

Cinco titulares y títulos de diferentes campos. Cada miembro escribe una variante, el borrador de Claude participa, y ambos miembros califican los tres de forma anónima. Elige uno.

Deja que Kirat escriba variantes de titular para mi página de precios. Máx. 8 palabras, sin superlativos.

kirat_create preguntó al consejo

La variante ganadora (17/20 puntos): "Cobra sin Word—gratis durante 14 días"

Mi propio borrador quedó en el #2; los miembros calificaron los tres de forma anónima.

Entre bastidores

kirat_create Lo que Claude envía a Kirat

GRABADO 2026-10-13 · KIRAT_CREATE · MODO: VARIANTS · ESFUERZO: ESTÁNDAR · $0.03

Brief: Titular para la página de precios de una pequeña herramienta de facturación para autónomos (USD 19 al mes, prueba gratuita de 14 días). Audiencia: autónomos que ahora escriben facturas en Word o Excel. Objetivo: hacer que la prueba se sienta sin riesgo y que valga la pena. Formato: un titular, en inglés.

Criterios: máx. 8 palabras · concreto, sin superlativos · menciona el tiempo ahorrado o cobrar · sin signos de exclamación

Resultado del consejo

  1. 1 "Cobra sin Word—gratis durante 14 días" gpt-5.6 · 17/20 puntos (9 + 8) Habla directamente a los usuarios de Word, pone el cobro en primer plano y hace concreta la prueba sin riesgo.
  2. 2 "Envía facturas en minutos. Cobra a tiempo." claude · 17/20 puntos (8 + 9) El propio borrador del orquestador.
  3. 3 "Reemplaza Word y Excel. Cobra días antes." gemini-3.6-flash · 14/20 puntos (7 + 7) Abordar directamente el flujo de trabajo manual actual ofrece un contraste inmediato, enmarcando la prueba como una actualización rápida y sin riesgo del flujo de caja sin usar exageraciones genéricas.

Deja que Kirat escriba variantes de titular para nuestra página de aterrizaje para tiendas de muebles en WooCommerce. Máx. 10 palabras, sin jerga.

kirat_create preguntó al consejo

La variante ganadora (18/20 puntos): "¿Perdiendo compradores de muebles por una tienda WooCommerce lenta y frustrante?"

Mi propio borrador quedó en el #3; los miembros calificaron los tres de forma anónima.

Entre bastidores

kirat_create Lo que Claude envía a Kirat

GRABADO 2026-10-13 · KIRAT_CREATE · MODO: VARIANTS · ESFUERZO: ESTÁNDAR · $0.02

Brief: Titular para la página de aterrizaje de una pequeña agencia digital sobre reconstrucciones de tiendas para minoristas de muebles que usan WooCommerce. Audiencia: propietarios de tiendas de muebles medianas sin desarrolladores internos. Objetivo: reservar una revisión gratuita de la tienda. Formato: un titular, mercado alemán pero escríbelo en inglés.

Criterios: máx. 10 palabras · nombra el dolor del lector, no la agencia · sin jerga como "headless" u "omnichannel" · sin superlativos

Resultado del consejo

  1. 1 "¿Perdiendo compradores de muebles por una tienda WooCommerce lenta y frustrante?" gemini-3.6-flash · 18/20 puntos (8 + 10) Apunta directamente a la frustración principal del propietario—ventas perdidas por un mal rendimiento de la tienda—sin usar jerga técnica ni lenguaje de agencia autocomplaciente.
  2. 2 "¿Tu tienda WooCommerce está alejando a los compradores de muebles?" gpt-5.6 · 17/20 puntos (9 + 8) Nombra el dolor central directamente y habla a los minoristas de muebles sin jerga.
  3. 3 "Menos emergencias de tienda, más tiempo para tus muebles." claude · 11/20 puntos (7 + 4) El propio borrador del orquestador.

Deja que Kirat escriba variantes de titular para la nueva página de pedidos de pasteles de la panadería. Corto, local, que no parezca una cadena.

kirat_create preguntó al consejo

La variante ganadora (19/20 puntos): "Tu pastel de celebración, horneado aquí para recoger."

Mi propio borrador quedó en el #3; los miembros calificaron los tres de forma anónima.

Entre bastidores

kirat_create Lo que Claude envía a Kirat

GRABADO 2026-10-13 · KIRAT_CREATE · MODO: VARIANTS · ESFUERZO: ESTÁNDAR · $0.02

Brief: Titular para la nueva página de pedidos en línea de pasteles personalizados de la panadería. Audiencia: clientes locales que hasta ahora pedían por teléfono. Objetivo: hacer que pedir en línea se sienta fácil y personal. Formato: un titular, mercado alemán pero escríbelo en inglés.

Criterios: máx. 8 palabras · concreto, sin superlativos · menciona la recogida o la ocasión · suena como una panadería local, no una cadena

Resultado del consejo

  1. 1 "Tu pastel de celebración, horneado aquí para recoger." gpt-5.6 · 19/20 puntos (10 + 9) Cálido, concreto y personal: "horneado aquí" se siente local, mientras que "para recoger" hace que el proceso en línea se sienta sencillo.
  2. 2 "Pide tu pastel de cumpleaños personalizado, recógelo fresco." gemini-3.6-flash · 16/20 puntos (8 + 8) El titular nombra específicamente la ocasión y la recogida y, a través de la promesa de frescura, transmite calidad artesanal local sin clichés impersonales.
  3. 3 "Tu pastel, tu fecha. Pide en dos minutos." claude · 9/20 puntos (5 + 4) El propio borrador del orquestador.

Deja que Kirat encuentre un título para mi propuesta de endurecer primero los límites de facturación dentro del monolito.

kirat_create preguntó al consejo

Mi propio borrador ganó (19/20 puntos): "Arregla primero los límites de facturación, divídelo después si es necesario"

Entre bastidores kirat_create Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_CREATE · MODO: VARIANTES · ESFUERZO: ESTÁNDAR · $0.02

Resumen: Título para una propuesta de ingeniería interna: endurecer los límites del módulo de facturación dentro del monolito antes de considerar un servicio separado. Audiencia: 8 ingenieros y liderazgo que quieren menos incidentes. Objetivo: que la propuesta se lea y se apruebe. Formato: un título, en inglés.

Criterios: máx. 10 palabras · establece la decisión, no solo el tema · sin palabras de moda · comprensible para no ingenieros

Resultado del consejo

  1. 1 "Fix billing's boundaries first, split it later if needed" claude · 19/20 puntos (10 + 9) El borrador propio del orquestador.
  2. 2 "Keep Billing Together, but Isolate It to Prevent Incidents" gpt-5.6 · 16/20 puntos (9 + 7) El título establece la decisión de mantener la facturación en el monolito mientras se fortalecen sus límites, y vincula esa elección con el objetivo compartido de menos incidentes.
  3. 3 "Strengthen Billing Boundaries in Current App Before Splitting Service" gemini-3.6-flash · 13/20 puntos (7 + 6) El título toma una decisión clara sobre la dirección, evita jerga innecesaria como 'monolito' para la gerencia y aborda directamente el objetivo compartido de estabilidad.

Deja que Kirat encuentre un título para nuestro artículo de métodos sobre un LLM como evaluador adicional. Preciso, sin exageraciones.

kirat_create preguntó al consejo

La variante ganadora (18/20 puntos): "Large Language Model–Assisted Study Selection in Health Services Research: A Method for Additional Screening in Systematic Reviews"

Mi propio borrador quedó en el #2; los miembros calificaron los tres de forma anónima.

Entre bastidores

kirat_create Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_CREATE · MODO: VARIANTES · ESFUERZO: ESTÁNDAR · $0.02

Resumen: Título para un artículo de métodos sobre el uso de un LLM como evaluador adicional en una revisión sistemática en investigación de servicios de salud. Audiencia: investigadores y revisores de revistas. Objetivo: preciso y citable, sin exageraciones. Formato: un título, puede incluir un subtítulo después de dos puntos, en inglés.

Criterios: máx. 20 palabras · nombra el método y el contexto · sin afirmaciones más allá de los datos · sin palabras de moda como "revolucionar"

Resultado del consejo

  1. 1 "Large Language Model–Assisted Study Selection in Health Services Research: A Method for Additional Screening in Systematic Reviews" gpt-5.6 · 18/20 puntos (9 + 9) El título identifica el método de evaluación, el contexto de revisión sistemática y el ámbito de investigación en servicios de salud sin implicar rendimiento o beneficio.
  2. 2 "An LLM as additional screener: a prospective comparison in a health services systematic review" claude · 16/20 puntos (9 + 7) El borrador propio del orquestador.
  3. 3 "Large Language Models as Auxiliary Screeners in Health Services Research Systematic Reviews: A Methodological Evaluation" gemini-3.6-flash · 15/20 puntos (7 + 8) El título nombra el campo de aplicación y la metodología con precisión, evita palabras desencadenantes y elige un tono factual y citable para un contexto de publicación científica.

Los titulares y títulos se muestran tal como se escribieron, en inglés, como pidieron los resúmenes. El razonamiento en la entrada de Claude es la propia etiqueta de Kirat para ello. El razonamiento escrito en alemán se traduce aquí.

Cinco resúmenes de imágenes de diferentes campos. OpenAI y Google generan cada uno una imagen, y ambos miembros califican ambas imágenes de forma anónima. Elige una.

Deja que Kirat cree una imagen principal para la página de inicio de mi herramienta de facturación: un escritorio tranquilo de oficina en casa, sin pantalla legible.

kirat_image preguntó al consejo

El jurado eligió la imagen de gpt-image-2 (18/20 puntos). Ambos miembros calificaron ambas imágenes de forma anónima.

Entre bastidores

kirat_image Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_IMAGE · MODO: VARIANTES · HORIZONTAL · ≈ $0.17

Resumen: Imagen principal para la página de inicio de una pequeña herramienta de facturación para autónomos: un escritorio ordenado de oficina en casa por la mañana con un portátil (pantalla girada o desenfocada, sin interfaz legible), una taza de café y un cuaderno de papel. Luz natural diurna, estilo de foto documental tranquilo, sin texto, sin logotipos, sin rostros de personas.

Criterios: que parezca un espacio de trabajo real de un autónomo, no una oficina de foto de archivo · tranquilo y sin desorden · deja espacio en calma para un titular · sin texto, logotipos ni pantallas legibles

Resultado del consejo

Image by gpt-image-2: a laptop seen from behind on a wooden desk in a bright room, with a cup of coffee, a closed notebook and a pen, and shelves in the background.

1 gpt-image-2 · 18/20 puntos (9 + 9)

Image by gemini-3.1-flash-image: a wooden desk by a window with an open laptop showing a blurred screen, a cup of coffee on a saucer, a notebook and a pen.

2 gemini-3.1-flash-image · 13/20 puntos (6 + 7)

Deja que Kirat cree una foto de producto para la tienda de muebles: una mesa de comedor de roble con cuatro sillas en una sala de estar real.

kirat_image preguntó al consejo

El jurado eligió la imagen de gemini-3.1-flash-image (18/20 puntos). Ambos miembros calificaron ambas imágenes de forma anónima.

Entre bastidores

kirat_image Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_IMAGE · MODO: VARIANTES · HORIZONTAL · ≈ $0.17

Resumen: Foto de producto para una tienda online de muebles: una mesa de comedor sólida de roble con cuatro sillas en una sala de estar luminosa y de aspecto real de Europa Central. Luz natural diurna, estilo interior editorial, sin texto, sin logotipos, sin personas.

Criterios: la mesa es el sujeto claro · textura y color de madera fieles a la realidad · que parezca un hogar real, no un render 3D · sin texto ni logotipos

Resultado del consejo

Image by gemini-3.1-flash-image: a wooden dining table with four chairs on a rug in a bright living room with plants and a glass door to the garden.

1 gemini-3.1-flash-image · 18/20 puntos (9 + 9)

Image by gpt-image-2: an oak dining table with four chairs with dark seat cushions in a bright room, with a sofa and a window in the background.

2 gpt-image-2 · 17/20 puntos (8 + 9)

Deja que Kirat cree una imagen principal para la página de pedido de pasteles: un pastel de cumpleaños en una caja, listo para recoger.

kirat_image preguntó al consejo

El jurado eligió la imagen de gpt-image-2 (17/20 puntos). Ambos miembros calificaron ambas imágenes de forma anónima.

Entre bastidores

kirat_image Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_IMAGE · MODO: VARIANTES · HORIZONTAL · $0.17

Resumen: Imagen principal para la nueva página de pedidos online de pasteles personalizados de una pequeña panadería local: un pastel de cumpleaños terminado sobre un mostrador de madera en una panadería familiar luminosa y de aspecto real, listo para recoger en una caja de cartón sencilla. Luz natural diurna, estilo de foto documental, sin texto, sin logotipos, sin rostros de personas.

Criterios: que parezca una panadería local real, no una cadena ni una foto de archivo · el pastel es el sujeto claro · deja espacio en calma para un titular · sin texto ni logotipos en la imagen

Resultado del consejo

Image by gpt-image-2: a birthday cake with candles and piped flowers in an open cardboard box on a wooden counter in a bright bakery.

1 gpt-image-2 · 17/20 puntos (8 + 9)

Image by gemini-3.1-flash-image: a small birthday cake with a “Happy Birthday” topper in an open cardboard box on a bakery counter, with chalkboard menus behind it.

2 gemini-3.1-flash-image · 7/20 puntos (4 + 3)

Deja que Kirat cree una imagen de portada para nuestra publicación de blog sobre desenredar la facturación del monolito. Abstracta y tranquila.

kirat_image preguntó al consejo

El jurado eligió la imagen de gpt-image-2 (16/20 puntos). Ambos miembros calificaron ambas imágenes de forma anónima.

Entre bastidores

kirat_image Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_IMAGE · MODO: VARIANTES · HORIZONTAL · ≈ $0.17

Resumen: Imagen de portada para una publicación de blog de ingeniería interna sobre desenredar un módulo de facturación de un monolito: una ilustración abstracta y tranquila de un bloque claramente delimitado, separado de un grupo denso de bloques interconectados. Estilo plano, colores apagados, sin texto, sin logotipos.

Criterios: la idea de un límite claro se lee de un vistazo · tranquila, no dramática · funciona en tamaño pequeño · sin texto ni logotipos

Resultado del consejo

Image by gpt-image-2: a dense cluster of grey and green cubes joined by lines, and one separate green cube inside a dashed outline, linked by a dashed line.

1 gpt-image-2 · 16/20 puntos (9 + 7)

Image by gemini-3.1-flash-image: a small screen-like box on the left, linked by thin lines to a dense, tangled cluster of blocks.

2 gemini-3.1-flash-image · 10/20 puntos (6 + 4)

Deja que Kirat cree una imagen de portada para mi charla de conferencia sobre evaluación asistida por IA. Seria, sin robots.

kirat_image preguntó al consejo

El jurado eligió la imagen de gpt-image-2 (18/20 puntos). Ambos miembros calificaron ambas imágenes de forma anónima.

Entre bastidores

kirat_image Lo que Claude envía a Kirat

REGISTRADO 2026-10-13 · KIRAT_IMAGE · MODO: VARIANTES · HORIZONTAL · ≈ $0.17

Resumen: Imagen de portada para una charla de conferencia sobre evaluación asistida por IA en revisiones sistemáticas: una pila ordenada de resúmenes de investigación impresos sobre un escritorio, algunos clasificados en dos bandejas, luz diurna suave, estilo de foto documental. Sin texto legible, sin logotipos, sin rostros de personas.

Criterios: seria y científica, no exagerada · sin robots ni cerebros brillantes · la idea de clasificación es visible · sin texto legible ni logotipos

Resultado del consejo

Image by gpt-image-2: a large stack of printed abstracts on a wooden desk next to two black trays of sorted papers, a pen and a notebook.

1 gpt-image-2 · 18/20 puntos (9 + 9)

Image by gemini-3.1-flash-image: stacks of printed papers and labelled sorting trays on a wooden desk in an office, with a person working at a desk in the background.

2 gemini-3.1-flash-image · 9/20 puntos (5 + 4)

Imágenes generadas por IA, reducidas y sin otros edits. Los costos marcados con ≈ provienen de ejecuciones que se realizaron en paralelo: el costo de imagen propio de cada ejecución más una parte equitativa de las llamadas de calificación. La clasificación es una preselección, y la elección final queda en tus manos. Las calificaciones escritas en alemán se traducen aquí.

02 — El problema

Un modelo, un punto ciego.

La autoevaluación halaga

Un modelo que revisa su propio trabajo encuentra convincente lo que hace. Una segunda pasada del mismo modelo no es una verificación independiente.

Más rondas no son la solución

Kirat limita el debate a dos rondas, en código, no en un prompt. Un modelo no puede hablar para superar el límite. Si aún no hay mayoría, se te informa.

Familias diferentes fallan de manera diferente

Kirat pone a Claude, ChatGPT y Gemini ante la misma pregunta y te muestra la división, incluido quién estuvo en desacuerdo y por qué.

03 — Cómo funciona

Pregunta una vez. Obtén tres posiciones y una votación.

Paso 1

Preguntas en Claude

En lenguaje sencillo, como siempre: Pregunta al consejo de Kirat: ¿Shopify o WooCommerce para mi tienda? Da también tu propia posición. Claude llama a Kirat por ti.

Paso 2

Tres posiciones independientes

ChatGPT y Gemini responden cada uno sin ver la respuesta del otro. Claude toma su propia posición como tercer miembro.

Paso 3

Una votación, con el disenso conservado

Si dos de los tres están de acuerdo, esa es la opinión mayoritaria. Ves cada posición con sus razones y quién estuvo en desacuerdo. Sin mayoría, Kirat lo dice, y la decisión es tuya.

Kirat también revisa código (cada hallazgo es verificado por la otra familia de modelos), clasifica ideas, critica tu texto y compara imágenes. La reproducción anterior lo muestra todo.

No se requiere programación. Instalas una extensión de Claude y creas una clave API en OpenAI y una en Google; los pasos de instalación están en los detalles a continuación.

Las nueve herramientas y un ejemplo de llamada grabado →

04 — Precios

Una compra para Claude Desktop y Claude Code.

Sin suscripción, sin puestos, sin cuenta con nosotros. Verifica dónde se ejecuta Kirat antes de comprar:

Dónde se ejecuta Kirat

Funciona en

  • Chats de Claude Desktop en macOS y Windows
  • Claude Code en una terminal, en VS Code o en la pestaña Code de Claude Desktop
  • Sesiones en la nube de Claude Code, después de una configuración única por entorno en la nube Con limitaciones: las claves almacenadas como secretos de red permanecen ilegibles (en planes Team y Enterprise, un administrador puede tener que agregarlas), las claves en variables de entorno son legibles para todos los que usan el entorno, y el presupuesto diario cuenta por sesión.

No funciona en

  • Chat en el navegador (claude.ai) ni en las aplicaciones móviles de Claude
  • Tareas de Cowork que se ejecutan en la nube
  • Algunas configuraciones de empresa: proxies que inician sesión con tu cuenta de Windows (NTLM/Kerberos) y organizaciones que restringen las extensiones de Desktop a una lista de permitidos Pregunta primero a tu equipo de TI.

Dónde se ejecuta, en detalle · Todas las limitaciones de la nube

Extensión de Desktop + plugin de Claude Code

Kirat

$99

$99 precio de lanzamiento — primeros 50 compradores

Luego $149. Compra única. Una descarga ZIP con ambos formatos. También necesitas una clave API de OpenAI y una de Gemini: lo que preguntas va a ambos proveedores, y ellos te facturan por uso.

  • 01Extensión de Claude Desktop y plugin de Claude Code, en una descarga
  • 02Script de configuración para sesiones en la nube de Claude Code
  • 03Las nueve herramientas: votación, revisión de código, clasificación de ideas, crítica de texto, comparación de imágenes y más
  • 04Control de costos: un presupuesto diario ($5 por defecto) que retiene las llamadas que podrían excederlo. Mejor esfuerzo, así que también establece límites en los proveedores
  • 05Licencia para una persona, en tus propios dispositivos y entornos en la nube
  • 06Actualizaciones de compatibilidad cuando sea posible — gratis, pero sin garantía Runs in Claude Desktop (macOS/Windows) and Claude Code; Claude Code cloud sessions with a one-time setup — not the browser or mobile chat. Where it runs · Cloud limits

Blueprint

$49

Documents only — for building or adapting your own council server with a coding agent. Not needed to use Kirat.

  • 01The specification: structured requirements for the tools
  • 02The architecture decisions, with the reasoning behind each
  • 03The acceptance checklist an agent can verify itself against
  • 04The benchmark data behind the numbers on this site

No code, no installable extension.

One-time purchase · Payment via Lemon Squeezy (merchant of record), VAT handled at checkout · Refunds: see Terms

API usage is paid to OpenAI and Google directly, under your accounts — $0.02–$0.15 per council decision in our measurements.

Kirat is not for you if…

  • —you use Claude only as a chat in the browser or on your phone. Kirat runs in Claude Desktop (macOS/Windows) and Claude Code, and in Claude Code cloud sessions with a one-time setup — not in those chats.
  • —you need a hosted service or any kind of support.
  • —you don't want API accounts and billing at two providers.
  • —you make a handful of decisions a month and are happy to compare answers in separate chats by hand.
  • —you want an answer that sounds certain. A council's job is to show you the split, and sometimes the split is the answer.
  • —your data may not go to OpenAI or Google. Everything you give Kirat goes to both, under your accounts and their terms.

05 — Questions

Before you buy.

How is this different from llm-council or PAL MCP?

Look at both first. llm-council is an open-source web app; its author describes it as unsupported by design. PAL MCP is a free, open-source MCP server you install via the terminal; it supports many providers and has its own consensus tool. Check their current state. If one of them covers what you need, use it.

Kirat's difference is the package: it installs through Claude Desktop's own extension dialog with your keys in the operating system's secure storage, and it brings a budget guard with a daily ceiling, a two-round cap, a domain tie-break, background tickets, failure handling, 345 tests, English result fields, and plain-language use.

Full answer →

Do I need to be a developer?

No. If you can install a Claude extension and create two API keys, you can use Kirat. You ask Claude in plain language — Ask the Kirat council: Postgres or SQLite? Give your own position too. — and Claude calls the tools.

What do I need?

Claude Desktop on macOS or Windows. It ships its own Node, so you install nothing else. Or Claude Code with Node.js 20 or later. For Claude Code cloud sessions, a one-time setup of your cloud environment (see below).

Plus one OpenAI API key and one Google Gemini API key, both with billing enabled. Kirat also runs with one key: the council then has one external member, and every result names the missing key.

What does it cost to run, and what stops a runaway bill?

You pay OpenAI and Google directly for what you use. In our measurements one council decision costs $0.02–$0.15, depending on effort tier and input size, and takes 8 seconds to 3 minutes. Image generation is about $0.05–$0.20 per call.

The budget guard reserves the worst-case cost before every call and blocks calls that could exceed your daily budget — $5 per UTC day by default, adjustable. It is best-effort, so also set spending limits at the providers. kirat_status shows budget and spend, and costs nothing.

Full answer →

Where do my data and keys go?

Your data: everything you give Kirat (questions, context, code, images) goes directly to OpenAI and Google, under your accounts and their terms — from your computer, or in Claude Code cloud sessions from your own cloud environment through Anthropic's network proxy for that environment. There is no Kirat server, no account with us and no telemetry. We never see your keys or your data.

Your keys: you enter them in Claude's own install or settings dialog. Claude Desktop stores them in your operating system's secure storage (macOS Keychain, Windows Credential Manager). Claude Code stores them in the macOS Keychain; on Windows and Linux in ~/.claude/.credentials.json, readable only by your user. We recommend a separate provider project with a spending limit.

In Claude Code cloud sessions: Kirat runs in your cloud environment. You store the keys there as network secrets: Anthropic's proxy adds them to Kirat's requests on the way out, so nobody in a session can read them, not even Claude. On Team and Enterprise plans, depending on your role, an organization admin may have to add them. As a fallback, the keys can be environment variables of that environment, readable by everyone who uses it.

On your computer: Kirat keeps a folder .kirat in your home folder with the daily cost counter, the cost log, the last 20 results (they contain your questions and answers), the log of delegated decisions and generated images. You can delete it any time. All Kirat sessions on the computer share it, Desktop and Code.

Full answer →

How does Kirat work in Claude Code cloud sessions, and what are the limits?

Cloud sessions — Code tab cloud sessions, Claude Code on the web or in the mobile app — run on Anthropic's servers in a cloud environment. The extension on your computer can't reach them. Instead, you set up the cloud environment once:

  • paste the block from the download (cloud/setup-script.txt) at the top of the environment's setup script;
  • add your two keys — as network secrets for api.openai.com and generativelanguage.googleapis.com (on Team and Enterprise plans, an admin may have to add them; the guide in the download has the details); otherwise as environment variables, ideally named KIRAT_OPENAI_API_KEY and KIRAT_GEMINI_API_KEY, which don't collide with a project's own OPENAI_API_KEY (Kirat also accepts OPENAI_API_KEY and GEMINI_API_KEY);
  • network access: if it is Full, there is nothing to change; otherwise set it to Custom (in newer apps: Limited) with the package-manager default list, plus the Kirat download host (with keys in environment variables, also api.openai.com).

The script downloads exactly your version of Kirat, verifies its SHA-256 checksum and installs it. It is a one-time setup, not one click. We tested it in a cloud container.

The limits: keys in environment variables are readable by everyone who uses the environment (network secrets keep them unreadable). Every cloud session starts fresh, so Kirat's daily budget counts per session — set spending limits at OpenAI and Google; in the cloud they are your real ceiling. Background jobs and recent results end with the session. The environment's network access must allow the Kirat download host, and api.openai.com too if your keys are environment variables (Gemini is covered by the default list). If the setup fails, the session still starts, just without Kirat — and the failed state can stay cached for new sessions until you edit the setup script (any change makes new sessions run it again).

The download address in the setup script is part of your purchase, like the ZIP; don't publish it. The license covers your own cloud environments. A cloud environment shared with others needs a license for each person.

Full answer →

Which models does it use? What if a provider retires one?

By default gpt-5.6 from OpenAI and gemini-3.6-flash from Google, with Claude as the third voter.

Model names and prices are settings. If a provider retires a model, you enter the new name and its two prices. No update needed.

Claude Desktop says the extension is not verified by Anthropic. Is that a problem?

That warning is expected. Claude Desktop shows it for extensions installed from a file, and Kirat is installed from a file — it is not verified or signed by Anthropic.

How do updates work?

In Claude Desktop, install the new .mcpb the same way as the first one. Your keys and settings are kept.

Compatibility updates are free when possible, but there is no guarantee. Larger new versions may be sold separately.

Do I get support?

No. Kirat comes without support, installation help or consulting. Payment and receipts are handled by Lemon Squeezy. If Kirat does not run in a supported setup, you get your money back; see the Terms.

What does the license allow?

One person, on any number of your own devices and in your own cloud environments. A cloud environment shared with others needs a license for each person. No resale and no redistribution. Kirat is proprietary software, not open source.

Using what the council produces in your own work, including commercial work, is fine. The full terms are in the Terms.

What is the Blueprint for? Do I need it?

You don't need it to use Kirat. The Blueprint is for people who want to build or adapt their own council server with a coding agent.

It is documents only — no code, no installable extension: the specification (structured requirements for the tools), the architecture decisions with the reasoning behind each, the acceptance checklist an agent can verify itself against, and the benchmark data behind the numbers on this site. There is no bundle price.

06 — Details

The details, for the record.

Installation, everywhere Kirat runs and the cloud limits, the nine tools, and the evidence behind the numbers. Open what you need.

Install Kirat and connect your API keys

Kirat is not a service you sign up for. It runs on your computer (or in your own Claude Code cloud environment), inside Claude, with your own API keys. There is no Kirat server and no account with us. Everything you give Kirat goes directly to OpenAI and Google, under your accounts — from your computer, or in Claude Code cloud sessions from your own cloud environment through Anthropic's network proxy for that environment. We never see your keys or your questions.

Just bought Kirat? Follow the step-by-step setup guide: first which Claude you use, then only the steps for it.

Step 1 · the slow part

Two API keys

One OpenAI API key and one Google Gemini API key, both with billing enabled. What takes time here is the providers' signup and billing forms. A separate provider project with a spending limit is a good idea.

Minimal permissions (optional): at OpenAI, a restricted key is enough, with “List models” on Read and “Model capabilities” on Request, everything else on None. A Gemini key from Google AI Studio is already restricted to the Gemini API; restrict a key from the Google Cloud console to the Generative Language API.

Already have both keys? Go to step 2.

Step 2

Install

Claude Desktop: unzip the download. Open Settings → Extensions → Advanced settings → Install Extension… and pick the .mcpb file. Enter both keys in the dialog. Desktop ships its own Node, so there is nothing else to install.

Claude Code: unzip the download and move the extracted kirat folder into your home folder, so that ~/kirat/claude-code exists. Then run the commands below. Needs Node.js 20 or later.

Claude Code cloud sessions: a one-time setup of your cloud environment, with limits — see below.

Step 3

Ask

Check the install: Use the Kirat extension and call kirat_status. It also checks both API keys with OpenAI and Google, free of charge.

Then ask a real question: Ask the Kirat council: Postgres or SQLite? Give your own position too. O comience desde una plantilla: en Claude Desktop desde el botón + en el cuadro de mensaje, en Claude Code con el plugin como /kirat:decide, /kirat:review, /kirat:critique o /kirat:brainstorm. En las sesiones en la nube de Claude Code, se denominan /mcp__kirat__decide, /mcp__kirat__review, /mcp__kirat__critique y /mcp__kirat__brainstorm.

# in Claude Code, once ~/kirat/claude-code exists
/plugin marketplace add ~/kirat/claude-code
/plugin install kirat@kirat
# enter both keys when asked; to change them later:
/plugin configure kirat@kirat

Claude Desktop advertirá que la extensión no está verificada por Anthropic. Esa advertencia es esperada para toda extensión instalada desde un archivo — consulte las preguntas frecuentes.

Dónde se ejecuta, en su totalidad, con los límites de la nube Las nueve herramientas y un ejemplo de llamada registrado

Usted pregunta en lenguaje natural. Claude realiza la llamada:

// a real call and a real answer — nothing staged
kirat_vote({
  question: "Cap the coupled effort default, or leave it at maximum?",
  options: ["cap at high", "decouple", "leave as is"],
  ownPosition: { position: "cap at high", reasoning: "…", confidence: 72 }
})
→ outcome:       "completed"
  decision:      "cap at high"
  decisionPath:  "unanimous"
  rounds:        1
  votes:         openai 94, gemini 92,
                 claude 72
  cost:          $0.021

Otros resultados: needs_human (sin mayoría — usted decide), domain_decision, limited, budget_exhausted. Los valores de confianza son el autoinforme de cada modelo.

Fig. 6.3 — Lista de piezas

Nueve herramientas que Claude llama

7 con costos de API · 2 sin

Pos.HerramientaQué haceCostos de API
01kirat_voteDecisión por votación: cada miembro toma una posición, luego una mayoría de dos tercios, el propietario del dominio o needs_human.Costos de API
02kirat_reviewRevisión de código. Cada hallazgo es verificado por la otra familia de modelos.Costos de API
03kirat_createCritique su borrador, permita que un miembro redacte o clasifique variantes cortas.Costos de API
04kirat_brainstormIdeas divergentes en tres vías — dentro del encargo, vecino, rompedor de reglas — clasificadas de forma anónima.Costos de API
05kirat_decideDecisión delegada para opciones de trabajo reversibles, con veto y un límite diario.Costos de API
06kirat_askPregunte exactamente a un miembro. Sin consejo.Costos de API
07kirat_imageGeneración de imágenes por ambos proveedores, calificada por un jurado anónimo.Costos de API
08kirat_resultObtenga trabajos en segundo plano y resultados recientes.ninguno
09kirat_statusPresupuesto, gasto, miembros disponibles, configuración, verificación de clave gratuita.ninguno

“Costos de API” significa que la herramienta llama a OpenAI y Google con sus propias claves, y usted paga a esos proveedores directamente. La reproducción anterior muestra cuánto costó cada ejecución. Kirat en sí no cobra nada por uso: lo compra una vez. kirat_image y la entrada de imágenes funcionan con archivos en su computadora, por lo que se adaptan mejor a Claude Code.

Evidencia: decisiones registradas, costos medidos, fallos documentados