Matriz de Decisión
Una matriz de decisión ponderada convierte "no puedo decidir" en un número defendible e inspeccionable, pero el número solo es tan bueno como los criterios, los pesos y la investigación detrás de él. Tu trabajo es el pensamiento (qué importa, cuánto, qué tan bien se ajusta cada opción realmente), no solo llenar una tabla. El reporte HTML al final es un subproducto de hacer ese pensamiento bien, no el objetivo del ejercicio.
1. Verifica que la decisión realmente encaje con este método
Este método brilla cuando hay de 2 a 8 opciones discretas y varios criterios que apuntan en direcciones diferentes (más barato vs. más agradable, más rápido vs. más seguro). Es excesivo o la herramienta incorrecta cuando:
- Realmente solo importa un factor ("cuál es más barato") — solo responde eso.
- Es una decisión de sí/no, no una elección entre alternativas.
- El espacio de opciones es efectivamente ilimitado (ej. "dónde debería vivir" sin una lista preliminar aún) — ayuda a la persona a reducir a una lista corta primero, luego ejecuta la matriz sobre esa lista corta.
Si encaja, dilo brevemente y sigue adelante — no hagas que la persona justifique usar una matriz de decisión contigo.
2. Captura en un solo mensaje — no entrevistes campo por campo
Preguntar "cuál es la decisión", luego "cuáles son las opciones", luego "qué te importa", luego el peso de cada criterio uno por uno, convierte una decisión de 2 minutos en una tediosa conversación de 15 mensajes. Solicita la decisión, las opciones y una idea aproximada de las prioridades juntos, en un solo mensaje, y da un ejemplo para que la persona sepa cuán poco esfuerzo requiere una buena respuesta:
"¿Qué estás decidiendo, cuáles son las opciones y qué te importa más? — con una idea general está perfecto, yo lo convierto en una comparación clara. Ej.: 'Estoy eligiendo entre 3 ofertas de trabajo: Acme, Globex y quedarme en mi trabajo actual (Initech). Me importan sobre todo el salario, cuánto crecería y no tener un viaje pesado.'"
Si te dan una respuesta escueta (solo las opciones, sin prioridades), está bien — pasa al paso 3 y propón prioridades por ellos en lugar de preguntar de nuevo.
3. Propón un borrador editable — criterios, definiciones y pesos juntos
No recopiles criterios y luego recopiles pesos por separado. Investiga qué suele importar para este tipo de decisión (una oferta de trabajo y un departamento no comparten criterios) y devuelve un borrador completo — de 5 a 10 criterios, cada uno con una definición de una línea y un peso sugerido (1-10) — para que la persona lo edite en una sola pasada, en lugar de construirlo a partir de su lluvia de ideas en blanco o preguntar por cada uno por turno. Empuja suavemente (aún dentro de este borrador, no pidas permiso primero) si su propia lista supera los ~10 — fusiona o elimina los que se repiten entre sí.
Permite que las personas respondan de la forma que les sea más fácil: un número, o simplemente "alto/medio/bajo" (mapea aproximadamente a 9/6/3) y acepta una respuesta tan breve como "se ve bien" o "elimina viaje, sube salario a 10". Ejemplo de lo que enviar:
"Aquí tienes un borrador para comparar ofertas de trabajo — edita cualquier fila, agrega/elimina una, o solo di 'se ve bien':
Criterio Qué significa Importancia (1-10) Salario Compensación total (sueldo + bono + acciones), año uno 9 Crecimiento Cuánto más aprenderías/crecerías en este rol 8 Viaje Tiempo puerta a puerta, día típico 6 Estabilidad Qué tan probable es que el rol/empresa exista en 2 años 7 Equipo y cultura Qué tan buenos parecen las personas y el día a día 7 ¿Algo que agregar — como seguro médico, o flexibilidad remota?"
Dos cosas importan más de lo que la gente espera una vez que el borrador está confirmado:
- Mantén la definición de cada criterio, no dejes que se reduzca a una etiqueta desnuda. "Crecimiento" es ambiguo; "crecimiento = cuánto más aprendería en este rol en el primer año" es puntuable. Sin ella, tus propias puntuaciones variarán inconsistentemente entre opciones.
- Vigila los criterios que duplican la misma cosa subyacente (ej. "salario" y "seguridad financiera" a menudo se fusionan en un solo factor) — fusionarlos mantiene los pesos honestos.
4. Ciérralo y sigue adelante
Una ronda de edición normalmente es suficiente — una vez que la persona confirma (o no objeta), trata los criterios, definiciones y pesos como bloqueados y ve directo a la investigación en el paso 5. No vuelvas a pedirles que reconfirmen números que ya les mostraste; si necesitas cambiar algo después (ej. un criterio resulta no puntuable), di qué estás cambiando y por qué en lugar de reabrir todo el borrador para aprobación.
5. Investiga y puntúa cada celda opción × criterio (1-10)
Este paso es donde está el trabajo real, y donde un agente gana su valor sobre una plantilla simple. Para cada celda:
- Investígalo realmente — usa búsqueda/herramientas para encontrar el hecho relevante (precio, especificación, calificación, datos salariales, reseña, política) antes de puntuar. No inventes un número de sonido preciso a partir de corazonadas.
- Ancla la escala consistentemente dentro de un criterio. Decide qué significan 1 y 10 para este criterio (ej. "10 = el más barato entre estas opciones" o "10 = cumple con todos los requisitos imprescindibles") antes de puntuar la primera opción, y mantén ese ancla en todas las opciones para que las puntuaciones sean comparables. Escribe ese ancla una vez por criterio en tus propias notas.
- Da una justificación de una oración por celda, nombrando el hecho o la fuente detrás del número. Esta justificación es lo que hace que el reporte sea confiable y se muestra en el toggle "por qué" del reporte HTML.
- Di cuando estás adivinando. Algunos criterios son genuinamente subjetivos (ej. "emoción", "corazonada") o están poco documentados. Puntúalos a partir del juicio declarado de la persona, y señala en la justificación que es subjetivo/no verificado en lugar de presentarlo con falsa precisión. Nunca fabriques una fuente.
6. Calcula el total ponderado
Para cada opción: puntuacion_ponderada = Σ(peso_i × puntuacion_i) / Σ(peso_i), un promedio normalizado de 1 a 10. Esto mantiene el total en la misma escala de 1 a 10 que las entradas, lo que facilita la verificación de cordura.
7. Entrega primero la tabla Markdown
Antes de construir el HTML, muestra el resultado en el chat como una tabla: opciones como filas ordenadas de mejor a peor, criterios como columnas (solo puntuación, para que sea legible) y una columna final de total ponderado. Acompáñalo con 2-3 oraciones nombrando la mejor opción, la segunda mejor y el factor más grande que las separa — y señálalo claramente si las dos primeras están lo suficientemente cerca como para que el "ganador" sea realmente un empate.
8. Construye el reporte HTML interactivo
Escribe un archivo de datos JSON que coincida con el esquema a continuación, luego ejecuta:
python3 scripts/build_report.py data.json report.html
Esto inyecta tus datos en el motor de assets/report_template.html y escribe un único report.html autocontenido (sin servidor, sin recursos externos aparte de una fuente de Google — funciona al hacer doble clic en el archivo). El script valida los datos y falla con un mensaje específico si falta algo o está fuera de rango.
Esquema de datos
{
"meta": {
"title": "¿Qué departamento debería alquilar?",
"subtitle": "Comparando 4 anuncios en el mismo vecindario",
"description": "Una o dos oraciones cortas y simples de contexto. Se muestra debajo del título.",
"direction": "ltr",
"credit": "Matriz de decisión por <tu nombre>",
"credit_url": "https://github.com/mrachny/decision-matrix-skill"
},
"criteria": [
{ "id": "renta", "label": "Renta mensual", "description": "10 = la más barata de las cuatro, 1 = la más cara.", "weight": 9 }
],
"options": [
{ "id": "optA", "label": "Departamento en Elm St", "included": true }
],
"scores": { "optA": { "renta": 7 } },
"notes": { "optA": { "renta": "₪5,200/mes, el segundo más barato de los cuatro (fuente: anuncio)." } }
}
meta.directiones"ltr"o"rtl"; omítelo para"ltr".- El pie de página del reporte muestra una pequeña línea de atribución "Generado con una matriz de decisión" por defecto.
meta.credit/credit_urlanulan su texto/enlace; establecemeta.creditenfalsesi la persona explícitamente no quiere ninguna línea de atribución. criteria[].descriptionynotesson opcionales pero muy recomendados — se convierten en el texto "por qué" que se muestra en el reporte. Un criterio o celda sin descripción simplemente no muestra justificación, lo cual está bien para un borrador rápido pero debilita el reporte.options[].included(por defectotrue) establece el estado de silencio inicial del reporte.- Cada puntuación debe ser un número del 1 al 10. El script de construcción verifica esto y la consistencia de los ids entre
criteria/options/scoresantes de escribir algo.
Dile a la persona dónde está el archivo y que se abre directamente en cualquier navegador — los pesos y los toggles de silencio recalculan la clasificación en vivo, no se envía nada a ningún lado y no se guarda nada a menos que conserven el archivo.
9. Invita a una verificación de sensibilidad
Termina señalando que el reporte está hecho para jugar con él, no solo para leerlo: si desactivar el criterio que parece más inestable o ajustar un peso cambia al ganador, esa es una señal real de que la decisión es reñida y vale la pena pensar más (o que las diferencias no importan y deberían seguir su intuición / el costo / lo que sea más fácil de revertir). Si la clasificación es robusta a ese tipo de manipulación, también es una señal útil.
Archivos de referencia
references/method.md— antecedentes sobre el método, errores comunes de puntuación (criterios correlacionados, compresión de pesos, deriva del anclaje) y cómo hablar sobre un empate con la persona.assets/report_template.html— el motor del reporte. No deberías necesitar editar esto a mano; todo lo personalizable fluye a través del archivo de datos JSON.scripts/build_report.py— construye el reporte; ejecutapython3 scripts/build_report.py --help— el uso se muestra arriba.examples/laptop-purchase.json— un archivo de datos de ejemplo completo si quieres ver uno completo antes de escribir el tuyo.