# Magoya Brand System
> Sistema de diseño oficial de **Magoya** — estudio de estrategia y desarrollo de producto digital para agribusiness (AgTech), activo desde 2017. Este sistema es la única fuente de verdad de la marca: paleta con roles, tipografía Manrope, fotografía, ilustración, componentes y recetas de aplicación, publicado en formato legible por personas (HTML) y por modelos (Markdown + JSON + CSS).
Si vas a generar piezas, código o copy para Magoya, leé `BRAND.md` y `tokens.json`, y aplicá el prompt de sistema de `.ai/brand-prompt.md`. Las once reglas que más se rompen, para tenerlas antes de abrir cualquier link:
1. Tipografía **Manrope** (variable 200–800), fallback Arial. Display peso 800, tracking −0.03em. Máximo 3 niveles tipográficos en una pieza escrita a mano; si la pieza sale de una plantilla del catálogo, el techo es el de esa plantilla (7 roles nombrados).
2. **75/25**: neutros (blanco/sage/negro/crema) ≈75% de la pieza, verdes ≈25%, un solo movimiento verde dominante. Nunca una pieza 100% negra ni 100% verde.
3. Lima **#A2FF00** = energía en dosis única (un CTA *o* un display *o* un motivo por pieza). **Nunca como texto sobre fondo claro** (1.25:1).
4. Verde digital **#00DE68** = identidad (wordmark y avatares). Como texto solo sobre fondo oscuro; sobre blanco se usa **#009145** y solo ≥24px bold. Lima ≠ logo.
5. **Sin emojis** en títulos ni en cualquier texto — la única excepción son las manitos que señalan (👈 👉 👇) hacia un CTA y las banderas de países.
6. **Sin gradientes** glossy, 3D ni estética "hecha por IA". El único gradiente permitido es el scrim verde profundo 55–86% sobre foto aérea.
7. **Máximo 2 recursos gráficos por pieza** además de la tipografía: uno protagonista y uno de acompañamiento. Los pares que no conviven son: dos fotos, foto + personaje, foto aérea + paño de semicírculos, y personaje + ícono (matriz completa en `resourceCoexistence` de `tokens.json`).
8. El **motivo de semicírculos va siempre al corte**: nace de un borde de la pieza o de detrás de un objeto. Nunca se ve cortado flotando en el aire.
9. **Personajes** ilustrados: planos, redondeados, **sin rostro**, paleta cerrada de 5 colores, siempre recortados por un borde del lado opuesto al texto. Nunca centrados como clipart, nunca sobre foto.
10. **Chips solo texto y espaciado en escala**: el chip (pill outline) nunca lleva punto/bullet delante del texto ni ícono adentro; todo margin/padding/gap sale de la escala base-4 (4/8/12/16/24/32/48/64/96) con un solo eje de alineación por pieza — specs en `components` y `spacing.rules` de `tokens.json`.
11. Fuera de la marca: la metáfora del **puzzle**, el **naranja** y el **amarillo** del brand viejo, los personajes con rostro/monoline/stock, los motivos de líneas (caminos concéntricos, estratos), el bloque resaltador sólido detrás de texto y los logos de clientes falsos o placeholder.
## Núcleo machine-readable
- [BRAND.md](https://brand.magoya.com/BRAND.md): la doctrina completa en Markdown — 12 secciones con esencia y voz, logo, roles de color, tipografía, fotografía, ilustración y motivos, iconografía, componentes, recetas de aplicación, merch, papelería y reglas de oro. Es el documento a leer si solo vas a leer uno.
- [tokens.json](https://brand.magoya.com/tokens.json): todos los valores exactos con su rol y sus reglas de accesibilidad — paleta completa, ratio de uso por pieza, escalas tipográficas (incluida la de slides en pt), espaciado, radios, layouts de export, la matriz `resourceCoexistence` de qué recursos gráficos pueden convivir, y las rutas de assets (con la lista de recursos retirados).
- [tokens.css](https://brand.magoya.com/tokens.css): los mismos tokens como CSS custom properties en dos capas (primitivos y semánticos) con 4 temas: `default` (verde profundo), `light` (crema), `paper` (editorial) y `studio` (blanco + negro + lima, el de slides y marketing). Usar esto al escribir código.
- [README.md](https://brand.magoya.com/README.md): mapa del repositorio, orden de lectura recomendado y árbol de la carpeta `assets/`.
- [ai/assets.json](https://brand.magoya.com/ai/assets.json): manifiesto de TODOS los assets (239 archivos) con URL directa y regla de uso por carpeta — wordmarks, avatares, los 58 íconos del sistema como SVGs individuales (`assets/icons/`), ilustraciones, fotos, logos reales de clientes y stack. Pages no lista directorios: este manifiesto es la única forma de enumerar los assets.
- [llms-full.txt](https://brand.magoya.com/llms-full.txt): TODO el sistema en un solo fetch (doctrina + constraints + selector + índice de plantillas + método + checklist) — empezá acá si tus fetches encadenados fallan o truncan.
- [ai/templates/index.json](https://brand.magoya.com/ai/templates/index.json): las 41 plantillas HTML oficiales con slots — se usan TAL CUAL: copiá el archivo, llená los data-slot respetando max_caracteres, no toques geometría ni colores. Este es el camino "copiá, pegá y funciona". Cada plantilla también está como `.txt` (texto plano) porque muchos fetch convierten el `.html` a markdown. Para armar un deck de varias slides: [deck-starter.html](https://brand.magoya.com/ai/templates/deck-starter.html) — pegás los `
` adentro, con un solo ``.
- [ai/decks/index.json](https://brand.magoya.com/ai/decks/index.json): **TRES DECKS YA ARMADOS Y VALIDADOS** — credenciales, propuesta de piloto y cierre de proyecto. Secuencia, lienzos y arco resueltos: no hay que componer, solo cambiar el texto entre corchetes. Si lo que te piden es un deck, empezá acá y no por el selector.
- [ai/selector.json](https://brand.magoya.com/ai/selector.json): qué querés contar → qué plantilla. Sin criterio de diseño requerido.
- [ai/facts.json](https://brand.magoya.com/ai/facts.json): los datos REALES de la compañía (cifras aprobadas, clientes y equipo nombrables). Todo texto y cifra de las plantillas es EJEMPLO — lo que no esté acá se pide, no se inventa.
- [ai/constraints.json](https://brand.magoya.com/ai/constraints.json): mínimos de logo, clearspace, márgenes, safe areas, límites de texto — los números que nadie tiene que asumir.
- [ai/slides.json](https://brand.magoya.com/ai/slides.json): la geometría fuente de los 41 módulos (layout_src) — para quien renderice por su cuenta; si solo vas a APLICAR, usá las plantillas.
## Entrada por IA (un link por herramienta, versionadas por separado)
- [ai/chatgpt.md](https://brand.magoya.com/ai/chatgpt.md): ChatGPT (Custom GPT / Projects) — flujo por browsing, sin permisos.
- [ai/claude.md](https://brand.magoya.com/ai/claude.md): Claude (claude.ai / Claude Code / API).
- [ai/gemini.md](https://brand.magoya.com/ai/gemini.md): Gemini (app / AI Studio / Gems).
- [ai/cursor.md](https://brand.magoya.com/ai/cursor.md): Cursor.
- [ai/copilot.md](https://brand.magoya.com/ai/copilot.md): GitHub Copilot.
- [ai/generic.md](https://brand.magoya.com/ai/generic.md): cualquier otra IA con browsing.
## Prompts y checklist listos para usar
- [.ai/brand-prompt.md](https://raw.githubusercontent.com/magoya/magoya-brand-system/main/.ai/brand-prompt.md): el prompt de sistema canónico y autocontenido (~540 palabras). Pegarlo como system prompt, custom instructions o project instructions y la salida ya sale on-brand sin adjuntar nada más.
- [.ai/brand-prompt-short.md](https://raw.githubusercontent.com/magoya/magoya-brand-system/main/.ai/brand-prompt-short.md): versión de ~120 palabras para pegar al inicio de un chat suelto.
- [.ai/checklist.md](https://raw.githubusercontent.com/magoya/magoya-brand-system/main/.ai/checklist.md): 17 chequeos verificables para auditar una pieza generada por IA antes de publicarla.
- [ai/precedencia.json](https://brand.magoya.com/ai/precedencia.json): ley de precedencia — qué documento gana cuando dos reglas oficiales del sistema se contradicen, más el contrato de entrega (qué puede salir con un hueco adentro y qué no).
- [ai/metodo.md](https://brand.magoya.com/ai/metodo.md): el método de trabajo obligatorio para piezas con contenido — entender antes de elegir, módulos por criterio (no por defecto), y agentes de copy / diseño / crítica antes de entregar.
- [AI-INTEGRATION.md](https://brand.magoya.com/AI-INTEGRATION.md): guía de setup por herramienta (Claude Projects, Claude Code, Claude Design, Custom GPT, Cursor, Copilot, chat genérico) con tabla de verificación y troubleshooting.
## Manual visual navegable
- [brand-book.html](https://brand.magoya.com/brand-book.html): el brand book completo en 13 secciones más la marca anexa, con ejemplos "hacer / evitar", la matriz de convivencia de recursos y la jerarquía de cuatro planos (lienzo · textura · sujeto · voz).
- [slides.html](https://brand.magoya.com/slides.html): 41 módulos de presentación en 13 familias, escala 126/84/56/42pt sobre lienzo de 1920px, margen interior 7%.
- [pieces.html](https://brand.magoya.com/pieces.html): plantillas de piezas comerciales con anatomía — one-pager madre y flyers derivados.
- [icons.html](https://brand.magoya.com/icons.html): librería de 58 iconos inline SVG, trazo 2px redondeado en grid 24×24, `currentColor`.
## Optional
- [library.html](https://brand.magoya.com/library.html): todos los assets con descarga directa (wordmarks, avatares, motivos, personajes, fotos, fuente).
- [logos.html](https://brand.magoya.com/logos.html): logos reales de clientes y del stack tecnológico — los únicos que se pueden usar en un logo wall.
- [ai-en-campo.html](https://brand.magoya.com/ai-en-campo.html): manual de la marca anexa "IA en campo". **No es parte del core**: rompe tres reglas a propósito (lienzo verde digital pleno, placa negra de dato clave, doodles del Studio). No aplicar sus reglas a piezas de Magoya.
- [ROADMAP.md](https://brand.magoya.com/ROADMAP.md): estado del sistema y pendientes de contenido.
# ===== BRAND.md (doctrina completa) =====
# Magoya — Brand System v1.1
> Manual de marca en Markdown, pensado para ser consumido por personas y por IAs.
> Tokens exactos en [`tokens.json`](tokens.json) y [`tokens.css`](tokens.css). Manual visual navegable en [`brand-book.html`](brand-book.html).
> **Las secciones 1–13 + §14 espejan una a una las del brand book visual.** Si una regla cambia acá, cambia allá — y al revés.
**Regla madre del sistema:** si se crea algo nuevo que puede ir en una pieza, tiene que estar en el brand. Ningún asset ni componente existe sin su ficha: qué es, cuándo se usa, cuándo no, y de dónde se baja ([`library.html`](library.html)).
## 1. Qué es Magoya
Estudio/partner de **estrategia y desarrollo de producto digital para agribusiness** (desde 2017). *"We partner with modern agribusinesses to design, build, and evolve their products and platforms."* Hero de marca: **"AgTech challenges demand more than code."** Diferenciador: equipos senior **embebidos** en el equipo del cliente — tecnólogos, expertos de producto y agrónomos. Pilares (las 3C): **Clarity** (complejidad → plan claro), **Confidence** (equipos senior con fluidez AgTech), **Commitment** (largo plazo).
**Voz:** **traductora** — hablamos agro y software, y el trabajo es pasar de uno al otro sin perder precisión. **Concreta**: ninguna afirmación de valor viaja sin cifra, nombre de cliente, plazo o captura. **Directa**: oraciones cortas, conclusión primero, cero preguntas retóricas, mínimo de siglas. **Filosa cuando hace falta**: decimos lo que no cierra — ni hype de IA ni negacionismo. **Informal sin ser liviana**: voseo en español, humor cuando aliviana una idea, nunca como adorno; no infantil.
**Idioma:** español para cercanía y comunidad (voseo, léxico del lote); inglés para credencial y cuentas US (nativo-conceptual, nunca traducido, con revisión nativa antes de salir); portugués para Brasil. **En textos en castellano, mínimo de palabras en inglés — y las que van, traducidas.**
**Vocabulario propio:** *levantar el guante · no damos vueltas · talento híbrido / trilingües · traducir · convertir complejidad en decisiones · señal y ruido · equipo embebido (embedded) · claridad, confianza, compromiso · lote, campaña, ventana de siembra.*
**Nunca:** preguntas retóricas · superlativos sobre nosotros mismos ("the best", "unparalleled") · "as a service" para lo que es un servicio a medida · siglas internas (DIPI) · "soluciones end-to-end" · "fracaso" · "familia" para el equipo · "startup" para Magoya · hype de IA · frasecitas de autoayuda.
> Evidencia y trazabilidad de cada regla: [`VOICE-RESEARCH.md`](VOICE-RESEARCH.md) — releva el Manual de Marca 2022 (la única especificación de voz que Magoya tuvo), la estrategia de marca de Varu, los pilares de contenido y las reuniones. **"No whimsical" salió de acá y volvió a ilustración**: era una conclusión sobre los personajes, no sobre la voz — cuatro fuentes piden humor explícitamente.
## 2. Logo & avatares
- **Wordmark** redondeado (4 versiones: verde digital `#00DE68` sobre blanco · crema sobre verde profundo · negro `#161616` sobre blanco · verde profundo sobre crema). Nunca reconstruir ni alterar espaciado.
- **Avatares** (círculo `#00DE68` + marca blanca): `go`, `o`, `cara`, `m`. La **cara** = redes de comunidad; la **m** = monograma funcional (favicon, app icon, canales corporativos).
- Aire mínimo: la altura de la "m". Tamaño mínimo: 90px pantalla / 24mm impreso — menos que eso, usar avatar "m".
- ✗ No estirar, rotar, sombrear, degradar. ✗ Wordmark en lima. ✗ Recolorear avatares.
## 3. Color
| Color | HEX | Pantone (aprox.) | Rol |
|---|---|---|---|
| Verde Magoya | `#133825` | PMS 553 | Core institucional: fondos oscuros, overlays, texto sobre claro |
| Verde digital | `#00DE68` | PMS 3282 | Identidad: wordmark, avatares, micro-acentos, ropa de personajes y data-viz. Como texto SOLO sobre oscuro |
| Lima energía | `#A2FF00` | PMS 382 2X | CTA, display, motivo. **Dosis única por pieza.** Nunca texto sobre blanco |
| Crema Magoya | `#ECE3DB` | PMS Warm Gray 2 | Neutro cálido firma; texto sobre verde profundo |
| Sage | `#EEF2EC` | PMS Cool Gray 1 | Superficie clara de slides |
| Negro Magoya | `#161616` | PMS Black 5 2X | Texto, titulares, cards dark |
Los Pantone son el **match más cercano por distancia RGB** contra la librería Solid Coated (no existe una conversión exacta hex→Pantone) — confirmar contra el libro físico antes de mandar a producción.
**El verde ilustración (`#33DB4E`) se unificó con el verde digital el 6 de agosto de 2026** — eran demasiado parecidos como para convivir como dos colores distintos. El token `--leaf-500` sigue en `tokens.css` como alias de `--emerald-500` por compatibilidad; no es un verde distinto.
**Regla central: "El negro construye, el verde hace crecer."** Neutros ≈75%, verde ≈25%, un solo movimiento verde dominante. **La unidad de medición es el deck completo, no la slide** (una pieza suelta sí se mide sola): la portada oficial M1 es una foto tapada al ~70% por scrim, así que medida slide por slide la propia portada de la marca falla su propia regla — ver `proporcion_75_25` en `ai/constraints.json`. Nunca pieza 100% negra ni 100% verde.
**Proporción exacta (confirmada por Varu el 5 de agosto de 2026 como obligatoria — "cualquier diseño que hagas tiene que mantener estas proporciones", deja de ser guía y pasa a ser regla):**
| Color | % de la pieza |
|---|---|
| Blanco / sage | 52% |
| Negro `#161616` | 23% |
| Verde profundo `#133825` | 13% |
| Lima `#A2FF00` | 8% |
| Verde digital `#00DE68` | 4% |
Suma: neutros (blanco+negro) 75%, verde (profundo+lima+digital) 25% — la misma regla de siempre, ahora con el desglose exacto por color, obligatorio en todo lo que se produce.
**Accesibilidad (no negociable):** lima nunca como texto sobre claro (1.25:1). Verde sobre blanco como texto = `#009145` y solo ≥24px bold. `#00DE68` como texto solo sobre fondos oscuros. Captions sobre claro: mínimo `#6E756D`.
## 4. Tipografía
**Manrope** (variable 200–800, self-hosted). Fallback: **Arial**. Display ExtraBold 800 con tracking −3%; cuerpo Regular 400. Kickers MAYÚSCULAS +12% tracking. Escala de slides: hero 126pt · display 84pt · título 56pt · subtítulo 42pt (sobre 1920px).
Reglas: **3 niveles tipográficos** en piezas escritas a mano (web, redes, docs); en slides el techo lo declara el catálogo, que llega a **7** porque cada nivel tiene un rol (kicker, display, bajada, caption, dato, label, pie) — ver el chequeo 7; el peso hace la jerarquía; resaltado por color o **subrayado lima** — prohibido el bloque resaltador sólido detrás de texto; labels de botón en sentence case. **Emojis: nunca en títulos**; solo se permiten manitos que señalan (👈 👉 👇) para dirigir a un CTA y banderas de países para geografía — ningún otro.
## 5. Fotografía
Dos familias, cada una con su regla:
- **Aérea de campo** (color natural): para fondos y portadas, siempre con **scrim verde profundo 55–86%** cuando lleva texto encima. El scrim es el único gradiente permitido.
- **Personas**: gente real del equipo, **siempre B&N** con un acento verde o lima. Remera Magoya, luz natural, gesto genuino.
- ✗ Stock corporativo posado, oficinas genéricas, personas a color en piezas de marca.
## 6. Ilustración & motivos
- **Personajes planos redondeados, sin rostro.** Paleta CERRADA de 5 colores: `#00DE68` (ropa, verde digital) · `#A2FF00` (ropa) · `#DFDFDF` (ropa) · `#FFC67B` (piel) · `#161616` (pelo/detalle). Siempre **recortados por un borde de la pieza**, del lado opuesto al texto — nunca flotando enteros ni centrados como clipart.
- **Motivo de marca: semicírculos**, un único formato — el **paño de textura** en grilla diagonal escalonada (`assets/motif-semis.svg`). **Regla de sangrado: el paño va al corte y siempre nace de un borde de la pieza o queda detrás de un objeto — nunca puede verse cortado flotando en el aire.** Aplicaciones canónicas: franja lateral (el paño ocupa una columna del borde y el contenido vive sobre el blanco) o fondo completo tapado por una card. Colores: verde digital sobre crema/blanco · crema sobre verde profundo · lima sobre oscuro.
- ✗ **La banda festoneada quedó RETIRADA** (no funcionaba como remate y se usaba como adorno genérico). No hay asset de banda: el único motivo es el paño.
- **Ocupar el espacio:** si un recurso está en la pieza, es para que se vea. El gráfico ocupa el ancho de su columna, la cifra ~70% del bloque, el personaje 40–55% de la pieza, el paño llega al corte. Un recurso que no se lee de lejos o crece, o se saca — nada de detalles decorativos chiquitos.
- **Marcas a mano**: **círculo** = marca una fecha o dato puntual · **flecha** = señala el CTA: nace del texto y su punta cae sobre el botón (diagonal, no al costado). Una sola por pieza, en **verde digital #00DE68 sobre claro / lima sobre oscuro** (nunca en negro: contra el texto no resaltan), siempre sobre texto compuesto — nunca sueltas como adorno. Para enfatizar una palabra o frase de un titular, **el color hace el trabajo** (texto en lima), no una marca a mano.
- ✗ RETIRADOS: motivos de líneas (caminos concéntricos `assets/illus/camino-*.svg`, estratos `assets/motif-estratos.svg`), la banda festoneada, el **subrayado** a mano (`flourish-underline.svg` — no cubría bien la palabra completa y el trazo no tenía fuerza; reemplazado por texto en lima), personajes con rostro/monoline/stock, y la metáfora del **puzzle** (brand viejo — su reemplazo narrativo es el paño de semicírculos (crecimiento)). ✗ Naranja y amarillo del brand viejo. Los archivos retirados quedan en disco como historial: **no se usan en piezas nuevas y no tienen ficha en la librería.**
## 7. Convivencia de recursos
> **La lista de recursos gráficos es EXCLUYENTE.** Los recursos del sistema son estos y nada más:
> foto aérea, foto B&N de personas, personaje ilustrado, paño de semicírculos, marca a mano, ícono
> del set. **Lo que no está en esta lista no existe** — no se inventa un recurso nuevo para llenar
> un hueco de composición, ni para "darle más onda" a una pieza que quedó plana. Si te falta algo,
> falta un módulo en el catálogo: reportalo, no lo dibujes. (Dos piezas reales inventaron recursos
> por este hueco: una red de nodos y una carátula decorativa.)
La marca tiene seis recursos gráficos. La regla que los ordena: **máximo dos por pieza además de la tipografía** — uno protagonista y otro que acompaña en segundo plano. Con tres o más deja de ser Magoya y se vuelve ruido.
| Combinar… | Foto aérea | Foto B&N | Personaje | Paño ○ | Marca a mano | Ícono |
|---|---|---|---|---|---|---|
| **Foto aérea** | — | ✗ | ✗ | ✗ | ✓ | ✓ |
| **Foto B&N (personas)** | ✗ | — | ✗ | ✓ | ✓ | ✓ |
| **Personaje ilustrado** | ✗ | ✗ | — | ✓ | ✓ | ✗ |
| **Paño de semicírculos** | ✗ | ✓ | ✓ | — | ✓ | ✓ |
| **Marca a mano** | ✓ | ✓ | ✓ | ✓ | — | ✓ |
| **Ícono** | ✓ | ✓ | ✗ | ✓ | ✓ | — |
**La razón de los vacíos es una sola: dos lenguajes del mismo tipo compiten.** Dos imágenes (foto + foto, foto + ilustración), dos texturas (foto + paño) o dos dibujos (personaje + ícono) nunca conviven. La cifra gigante y la tipografía combinan con todo: son la voz, no un recurso.
**Personaje + paño** (la combinación que más se pregunta) **sí funciona**, con una condición: el paño va al fondo y en franja, el personaje al borde opuesto y en primer plano, el texto sobre superficie limpia. Nunca superpuestos.
**Jerarquía de planos** — toda pieza se ordena en cuatro: **(1) lienzo** color plano o foto con scrim · **(2) textura** paño al corte · **(3) sujeto** personaje, foto recortada o cifra gigante · **(4) voz** tipografía, marcas a mano, chips y CTA. Un recurso por plano como máximo, y los planos 2 y 3 nunca se pisan entre sí.
## 8. Iconografía
Línea 2px, terminaciones y esquinas redondeadas, grid 24×24, `currentColor`. **Set agro de 16 íconos + 10 logos de IA + 13 de redes en `assets/studio/icons/` — los mismos archivos que usa Magoya Studio.** Negro sobre claro, crema sobre oscuro, **lima solo el ícono destacado (uno por pieza)**. Librería propia de 58 iconos en 7 categorías (`icons.html`); completar con Lucide (misma gramática) si hace falta volumen. Nunca rellenos sólidos ni 3D.
## 9. Componentes
- **Botón ≠ chip.** Botón: rectángulo radio 10px, fondo sólido (lima = CTA primario, negro, verde profundo, ghost). Chip: **pill outline** — borde y texto del mismo color, fondo transparente. Nunca chip sólido ni botón pill. **El chip lleva SOLO texto** (uppercase, tracking .1em): nunca un punto/bullet delante, nunca un ícono adentro — la pill ya delimita, el punto es ruido (acuerdo explícito del equipo).
- **Espaciado sistematizado.** Todo margin/padding/gap sale de la escala base-4 de `tokens.json` (4/8/12/16/24/32/48/64/96) — nunca valores arbitrarios. Aire entre bloques ≥24; dentro de un componente 8–16. Paddings canónicos: botón 13px/26px, chip 6px/15px (spec completa en `components` de `tokens.json`).
- **Alineación.** Una pieza tiene UN eje principal (por defecto, izquierda): todos los bloques de texto arrancan ahí. Los elementos de una fila comparten centro vertical y un gap único (8 o 12). Padding interno simétrico, nunca 4 valores distintos.
- Estados: hover (lima→`#8BDB00`, resto brightness), focus ring `rgba(0,222,104,.45)` sin blur.
- **Cards: siempre en mosaico** — misma grilla, mismos aires, alturas que calzan; nunca sueltas. Tipos: hiring (negro + lima), quote (foto B&N + cita), stat (número 800 −3%). El contacto dentro de una card dark es un **link en lima**, no un botón (los botones viven fuera de las cards).
- ✗ **El monograma "m" circular NO va en cards.** El avatar "m" es identidad de canal (favicon, app icon, perfil corporativo) y pie de papelería — dentro de una card compite con el wordmark y agrega un segundo logo a la pieza. En una card, la marca es el wordmark.
- Logo wall: logos **siempre reales**, en gris, grilla pareja.
## 10. Aplicaciones (recetas)
- **Hero canónico** (la pieza que define la marca): foto aérea + scrim verde + wordmark crema arriba-izq + CTA lima arriba-der + display ExtraBold abajo-izq con una frase en lima.
- **Feed 1:1** — 3 recetas rotativas: foto (statement sobre aérea) · crema (aviso + avatar de comunidad) · dark (dato lima + personaje recortado). En redes, **display y cifras al ~70% del ancho**: grande o nada.
- **Story 9:16**: foto arriba + bloque verde abajo con display y CTA lima. **Banner de LinkedIn**: foto del equipo en B&N + scrim negro degradado + wordmark crema + filete verde digital al borde (misma receta que la fotografía de personas). **Avatar de perfil**: cara (comunidad) / m (corporativo).
- **Slides**: el lienzo lo trae la plantilla (blanco, sage, verde profundo o foto — ver `perfil.lienzo`), como máximo un golpe de lima por slide (cero es válido: 19 de las 41 plantillas no llevan), margen interior 7% (`slides.html`, 41 módulos en 13 familias, exportables a .pptx). **Piezas comerciales**: one-pager madre + flyers derivados (`pieces.html`).
- **Export**: slides 16:9 1920×1080 · feed 1080×1080 · carrusel retrato 4:5 1080×1350 · story 1080×1920 (zona segura 96px) · favicon = avatar "m" 16/32/180/512px sin padding · print A4 sangrado 3mm, CMYK con prueba de color.
## 11. Merch & indumentaria
- **Textil**: verde profundo + crema, discreto y premium. **El merch se muestra SIEMPRE con foto o render real del producto — nunca ilustración ni esquema vectorial** (referencia de calidad: render "Buzo Propuesta 1"). Catálogo de 10 productos (buzo, remera blanca/negra, gorra, medias, mochila, termo, cuaderno, stickers, equipo usándolo); las fotos van en `assets/photos/merch/` con los nombres del LEEME y el manual las levanta solo. Wordmark chico pecho izquierdo, monograma "m" en espalda, patrón de avatares solo en forros. Bordado > estampa. **Sin lima en textil.**
## 12. Papelería & corporativo
- **Membrete A4**: wordmark verde arriba-izq (20% del ancho), pie con filete verde digital + avatar m. Header y footer vectoriales listos: `assets/downloads/doc-header.svg` · `doc-footer.svg`.
- **Firma de email**: va **SIEMPRE el wordmark — nunca los avatares ni la cara.** Filete verde + nombre 700 + rol y datos en gris. Sin banners, sin frases legales eternas, sin logos de redes. Assets: `assets/downloads/magoya-firma-animada.gif` (Gmail, loop) y `magoya-firma-estatica.png` (correos que no animan). Versión web animada del logo: `assets/magoya-wordmark-animado.svg`.
- Docs: wordmark esquina sup-izq ≤1/5 del ancho; Manrope o Arial; nunca logo como marca de agua.
## 13. Reglas de oro (resumen ejecutable)
1. El negro construye, el verde hace crecer (75/25, un movimiento verde por pieza).
2. Lima = energía en dosis única: un CTA, un display o un motivo por pieza.
3. Verde digital `#00DE68` = identidad (logo/avatares); lima ≠ logo.
4. Personas reales en B&N con acento verde; ilustración plana para conceptos.
5. Logos de clientes SIEMPRE reales — jamás placeholders.
6. Todo redondeado — como el wordmark. Botón rect 10px, chip pill outline.
7. El motivo va al corte: nace de un borde o de detrás de un objeto — nunca cortado al aire.
8. Máximo 2 recursos gráficos por pieza (§7); el monograma "m" no va en cards; en la firma va el wordmark.
9. **Emojis prohibidos** — la única excepción son las manitos que señalan (👈 👉 👇) hacia un CTA y las banderas de países para geografía. Nunca en títulos.
10. ✗ Resaltador sólido tras texto · ✗ gradientes glossy/3D/estética IA · ✗ pieza 100% negra o verde · ✗ personajes con rostro/monoline · ✗ puzzle · ✗ naranja/amarillo · ✗ banda festoneada · ✗ motivos de líneas.
11. **En español se escribe IA, nunca AI** — "IA en campo", "Integrar con IA", "capacidades de IA". "AI" queda solo para copy en inglés (decks US) y nombres propios ajenos ("Data & AI", "AI Studio"). Una pieza en español que diga "AI" está mal escrita.
## 14. Marca anexa "IA en campo" (manual propio)
**No es una sección de este brand: es una marca anexa con su propio manual** (`ai-en-campo.html`). Línea de contenido educativo de IA para el agro (carruseles, reels, webinars). Mismo ADN (Manrope, verdes oficiales) pero **rompe tres reglas del core a propósito**: (1) lienzo **verde digital pleno #00DE68** como fondo dominante; (2) **placa negra** #161616 con texto crema para el dato clave — permitida acá como lenguaje sticker; (3) **ruido con los assets del Studio** (`assets/studio/`): doodles (sparkle, dots, blob, loop), flourishes (arrow, navarrow, circle, underline), badge EN VIVO y logos oficiales de IA/redes — 2–4 por pieza, ±5–15°, en las esquinas, teñidos en verde digital o lima (nunca un color propio: la sub-marca no usa terracota ni ningún acento fuera de la paleta core). Texto secundario verde profundo; display negro. Formato madre: **carrusel retrato 4:5 (1080×1350)** — no el cuadrado 1080×1080, que Instagram dejó de privilegiar para carruseles. Arco narrativo de 4–6 slides (duda real → herramienta → prueba → paso siguiente), sin numerar las slides (el swipe ya lo comunica); **ritmo de color del arco: verde pleno en la primera y la última slide, crema Magoya en las del medio** — todo verde se lee como una sola pieza repetida, no como un recorrido.
**Logo de la sub-marca:** lockup **"IA en campo · por Magoya"** abajo-izquierda — reemplaza al wordmark de Magoya solo en piezas de esta línea. Se compone con Manrope viva (800, tracking −2%), nunca como imagen. Lleva un mark a mano (`assets/studio/mark-ai-campo.svg`, mismo lenguaje de las marcas a mano del core) pegado a la derecha de "IA", a ~65% de su altura — **ese mark existe únicamente en este tamaño**: agrandado y suelto en una esquina como estallido cómic queda fuera del sistema. Negro `#161616` sobre lienzo claro, crema `#ECE3DB` sobre placa negra; nunca lima ni verde digital en el lockup — el color lo pone el fondo, no el logo. "por Magoya" siempre en `font-mono`, mayúsculas, más chico: es la firma, no el título.
Las piezas se producen SIEMPRE desde plantillas del Studio y su receta queda guardada en un `.magoya.json` (template, scheme, accent, anchor, rule, silueta, objetos con x/y/scale/rotation) — esa es la fuente para reproducirlas, no el ojo. Producción en Magoya Studio (30+ plantillas, 13 formatos de red). Nada de esto vuelve al core.
## Mapa de archivos del sistema
| Página | Qué documenta |
|---|---|
| `brand-book.html` | Brand book: 13 secciones + §14 marca anexa |
| `ai-en-campo.html` | Manual completo de la marca anexa |
| `slides.html` | Módulos de presentación |
| `pieces.html` | Piezas comerciales (one-pager + flyers) |
| `icons.html` | 58 iconos copiables |
| `library.html` | Ficha + descarga de cada asset aprobado |
| `logos.html` | Logos de clientes y stack tecnológico |
| `ai.html` | Cómo cargar esta marca en una herramienta de IA y cómo validar el resultado |
Capa machine-readable: `llms.txt` (resumen estable), `.ai/brand-prompt.md` y `.ai/brand-prompt-short.md` (prompts para pegar), `.ai/checklist.md` (validación) y `.ai/presets/` (uno por herramienta). **Todos derivan de este archivo: si una regla cambia acá, hay que propagarla ahí.**
`assets/refs/` es **material fuente no publicable** (exports originales del diseñador): se conserva como referencia de trazado, no se enlaza ni se distribuye. `archive/` son versiones previas del sistema — no usar.
---
*Pendientes de contenido: fotos/nombres reales del equipo, cita completa de Camila López Colmano, logos vectoriales de ProducePay/HabiTerre/IntelinAir, validación de Staff Augmentation, unificación del email de contacto (hoy conviven `people@` e `info@`).*
# ===== CONSTRAINTS (minimos/maximos/clearspace/safe areas) =====
{
"que_es": "Constraints duros de la marca: mínimos, máximos, distancias y disposiciones que NO requieren criterio de diseño — se cumplen o la pieza está mal. Complementa a tokens.json (valores) y BRAND.md (doctrina). Nada de esto se adapta ni se asume: si un valor no está acá ni en tokens.json, preguntá antes de inventar.",
"version": "1.0 · 2026-08-11",
"logo": {
"tamano_minimo": {
"pantalla": "90px de ancho",
"impreso": "24mm de ancho",
"por_debajo": "usar el avatar 'm', nunca el wordmark achicado"
},
"clearspace": "la altura de la letra 'm' del propio wordmark, en los 4 lados — nada entra en esa zona",
"en_slides_interiores": {
"ancho": "11% del ancho del lienzo (211px en 1920)",
"posicion": "x 7.5% · y 3.2% (arriba-izquierda)",
"variante": "cream sobre fondo oscuro, black sobre claro"
},
"prohibido": [
"estirar",
"rotar",
"sombrear",
"recolorear en lima",
"redibujar (usar SIEMPRE el SVG del manifiesto)"
]
},
"slides_1920x1080": {
"margen_interior": "7% del ancho (134px) en los 4 lados — ningún texto lo cruza; solo fotos a sangre, paño al corte y filetes",
"escala_tipografica_pt": {
"display_hero": 126,
"display": 84,
"titulo": 56,
"cuerpo_grande": 42,
"conversion": "1pt = 1.333px"
},
"display_ancho_maximo": "85% del ancho del lienzo; el display de apertura ~70%",
"numero_de_pagina": {
"posicion": "x 76.5% · y 3.5%, alineado a la derecha",
"formato": "dos dígitos (07)"
},
"golpes_de_lima": "como máximo UNO por slide (CTA o dato o fila destacada — nunca dos), y CERO es válido: el acento es un techo, no una cuota. 19 de las 41 plantillas oficiales no llevan lima.",
"fondos_permitidos": [
"#FFFFFF",
"sage #EEF2EC",
"#133825 solo en apertura/cierre/citas"
],
"margen_7_vs_eje_7_5": "No se contradicen y conviene saber por qué: 7% (134px) es el margen MÍNIMO que nada puede cruzar; 7.5% (144px) es el eje de trabajo donde las plantillas alinean el contenido. O sea 134 es el piso legal y 144 es dónde apoya la grilla. Si construís desde cero, usá 144 y cumplís los dos."
},
"redes": {
"feed": {
"lienzo": "1080×1080",
"display_y_cifras": "≈70% del ancho máximo"
},
"story": {
"lienzo": "1080×1920",
"zona_segura": "96px arriba y abajo — nada de texto ni logo ahí"
},
"ai_en_campo_madre": {
"lienzo": "1080×1350 (4:5)",
"regla": "ver manual anexo ai-en-campo.html — hereda estos constraints salvo sus 3 rupturas"
}
},
"espaciado_y_alineacion": {
"referencia": "tokens.json → spacing.rules y components (escala base-4, paddings canónicos de botón 13/26 y chip 6/15)",
"resumen_duro": [
"todo margin/padding/gap en la escala 4/8/12/16/24/32/48/64/96",
"aire entre bloques ≥24 · dentro de componente 8-16",
"UN eje de alineación por pieza (izquierda por defecto)",
"filas con centro vertical compartido y gap único",
"padding interno simétrico"
]
},
"texto": {
"niveles_maximos_por_pieza": 3,
"ancho_maximo_de_parrafo": "≈66 caracteres por línea (74 para notas al pie); si una línea pasa eso, la caja está mal usada",
"en_plantillas": "el límite real por slot está en ai/templates/index.json (max_caracteres_aprox y max_lineas) — si el texto no entra, se acorta el TEXTO, nunca la fuente",
"kickers": "MAYÚSCULAS, tracking +0.12em",
"labels_de_boton": "sentence case",
"nomenclatura_ia": "en español SIEMPRE 'IA', nunca 'AI': 'IA en campo', 'Integrar con IA', 'capacidades de IA', 'Datos & IA'. 'AI' solo se escribe en copy en inglés (decks US) y en nombres propios ajenos ('Data & AI', 'AI Studio'). Los nombres de archivo y las URLs del sistema siguen en 'ai-' por compatibilidad (ai-en-campo.html, /ai/) — eso NO se copia al texto de la pieza."
},
"verificacion": "los 17 chequeos de .ai/checklist.md — este archivo agrega los números; el checklist dice cómo auditarlos",
"pendiente_de_definir": [
"mínimos tipográficos para web/app (px por nivel): el mínimo legible de cada nivel. OJO: la escala SÍ existe — tokens.json tiene typography.scale en rem (xs→7xl) para web y slideScale en pt para slides. Lo que falta es el piso en px, no la escala",
"clearspace numérico de los avatares (hoy solo el wordmark lo tiene)",
"margen mínimo de piezas impresas (one-pager/flyer) en mm"
],
"proporcion_75_25": {
"unidad": "el deck completo, NO la slide",
"por_que": "la portada oficial M1 es una foto tapada al ~70% por scrim verde profundo: medida por slide, la propia portada de la marca falla su propia regla. Medida sobre el deck, cierra.",
"como_se_mide": "sumá el área de fondo oscuro/verde de todas las slides y dividí por el área total del deck. Apertura y cierre en verde pleno son la excepción esperada, no el default",
"en_piezas_sueltas": "una pieza que no es parte de un deck sí se mide sola"
}
}
# ===== SELECTOR DE MODULOS (que queres contar -> que plantilla) =====
{
"que_es": "Selector de módulos: mapea QUÉ QUERÉS CONTAR con el módulo correcto, sin necesidad de criterio de diseño. Flujo: (1) identificá el tipo de contenido en la columna 'tenes', (2) aplicá la plantilla indicada TAL CUAL desde ai/templates/, (3) llená solo los slots. Si dos filas aplican, gana la más específica. Si ninguna aplica, el contenido probablemente deba partirse en dos slides.",
"version": "1.0 · 2026-08-11",
"reglas_de_seleccion": [
"Una idea por slide. Si tu contenido tiene dos ideas, son dos filas de esta tabla.",
"El dato más fuerte del deck merece el módulo más fuerte (C3 antes que una fila de bullets).",
"El deck más corto que cuenta la historia completa, gana. No rellenes con módulos porque existen.",
"Elegir bien cada módulo NO alcanza: la secuencia se gobierna aparte, por el rol narrativo de cada slide (campo perfil.beat) y las cuatro reglas de \"como_componer_el_deck\" en templates/index.json. Si te queda soso, el problema casi siempre es el arco —propone sin tensión, o cuatro propuestas seguidas— y nunca se arregla con adorno."
],
"decision": [
{
"tenes": "el inicio del deck",
"usa": "M1",
"alternativa": "M2 si no hay foto que aporte o el deck ya abre con foto"
},
{
"tenes": "una sola frase fuerte / la idea central",
"usa": "A1",
"alternativa": "H3 si a mitad del deck y hay foto potente · I1 si es conceptual y pide personaje"
},
{
"tenes": "una frase fuerte que necesita contexto o aclaración",
"usa": "A2"
},
{
"tenes": "la agenda de la reunión (decks de 10+ slides)",
"usa": "A3"
},
{
"tenes": "un cambio de bloque/capítulo",
"usa": "A4",
"alternativa": "A5 si el capítulo tiene un tema con ícono claro (ej. remote sensing)"
},
{
"tenes": "los modelos o formas de trabajar (3 opciones)",
"usa": "B1",
"alternativa": "B2 si la diferencia es comercial/facturación y hay una recomendada"
},
{
"tenes": "un resumen de capacidades del equipo (5-6 items)",
"usa": "B3"
},
{
"tenes": "credenciales de la compañía en números (4 cifras)",
"usa": "C1"
},
{
"tenes": "resultados de UN producto (3 métricas)",
"usa": "C2"
},
{
"tenes": "UN dato que es el argumento entero",
"usa": "C3"
},
{
"tenes": "tres cifras que cuentan una sola historia",
"usa": "C4"
},
{
"tenes": "una serie temporal (evolución de una métrica)",
"usa": "D1",
"alternativa": "D3 si la tendencia es larga o hay baseline de comparación"
},
{
"tenes": "dos series/cohortes a comparar en el mismo eje",
"usa": "D2"
},
{
"tenes": "una proporción principal + avances secundarios",
"usa": "D4"
},
{
"tenes": "una secuencia de pasos donde el cliente está en uno (4-5 pasos)",
"usa": "E1"
},
{
"tenes": "argumentos de diferenciación (hasta 6, sin números)",
"usa": "E2"
},
{
"tenes": "escenarios de inversión / pricing por alcance",
"usa": "E3",
"alternativa": "E4 a continuación con timing y números — van juntas y en ese orden"
},
{
"tenes": "el plan en el tiempo (hasta 5 hitos)",
"usa": "F1"
},
{
"tenes": "el método/proceso propio (4 fases)",
"usa": "F2"
},
{
"tenes": "interacción entre actores y sistemas",
"usa": "F3"
},
{
"tenes": "artefactos de trabajo para mostrar (wireframes, prototipos)",
"usa": "F4"
},
{
"tenes": "un caso de éxito completo",
"usa": "G1",
"alternativa": "G2 si el contexto ya se explicó y solo van resultados antes/después"
},
{
"tenes": "contexto de mercado con foto",
"usa": "H1",
"alternativa": "H2 como espejo para alternar el lado"
},
{
"tenes": "rango geográfico o de cultivos",
"usa": "H4"
},
{
"tenes": "un statement conceptual sin foto",
"usa": "I1",
"alternativa": "I2 como espejo, o si el protagonista es un dato"
},
{
"tenes": "un testimonio",
"usa": "J1",
"alternativa": "J2 si hay retrato real del autor (B&N + scrim)"
},
{
"tenes": "el equipo concreto de la propuesta",
"usa": "J3"
},
{
"tenes": "validación técnica del stack (audiencia CTO)",
"usa": "K1"
},
{
"tenes": "capacidades de IA con herramientas concretas",
"usa": "K2"
},
{
"tenes": "prueba social (clientes)",
"usa": "L1"
},
{
"tenes": "el cierre con próximos pasos",
"usa": "M3",
"nota": "siempre es la última slide; la plantilla M3 tiene CUATRO pasos numerados (t5-t12) y UN solo CTA — llená los cuatro, no borres ninguno"
}
],
"plantillas": "https://brand.magoya.com/ai/templates/index.json",
"geometria_fuente": "https://brand.magoya.com/ai/slides.json"
}
# ===== PLANTILLAS LISTAS (llenar slots, NO tocar geometria) =====
Plantillas HTML oficiales de los 41 módulos, generadas del exportador real. Se usan TAL CUAL: copiá el archivo, llená los data-slot respetando max_caracteres, no toques nada más. La geometría, colores y tipografía ya son la marca. IMPORTANTE: si tu fetch de .html llega convertido/resumido, usá url_texto_crudo (.txt, mismo contenido servido como texto plano). TODO texto y cifra de las plantillas es EJEMPLO: los datos reales aprobados están en ai/facts.json — lo que no esté ahí se pide, no se inventa.
- A1 · Statement hero (126pt) · beat: tension · lienzo: blanco · peso: mixto -> https://brand.magoya.com/ai/templates/A1.html · slots: t1(kicker,max 192ch), t2(display,max 97ch)
- A2 · Título + bajada (2 columnas) · beat: contexto · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/A2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 94ch), t3(subtitulo,max 564ch)
- A3 · Agenda / índice · beat: estructura · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/A3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 14ch), t3(caption,max 99ch), t4(subtitulo,max 6ch), t5(caption,max 172ch), t6(subtitulo,max 6ch)
- A4 · Divisor de sección (paño de semicírculos al corte) · beat: estructura · lienzo: verde-profundo · peso: visual -> https://brand.magoya.com/ai/templates/A4.html · slots: t1(display,max 5ch), t2(display,max 75ch)
- A5 · Título + ícono semántico grande · beat: estructura · lienzo: sage · peso: visual -> https://brand.magoya.com/ai/templates/A5.html · slots: t1(numero_de_pagina,max 66ch), t2(kicker,max 160ch), t3(display,max 121ch)
- B1 · 3 cards de servicio con ícono semántico (sage) · beat: propuesta · lienzo: sage · peso: visual -> https://brand.magoya.com/ai/templates/B1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 30ch), t3(subtitulo,max 75ch), t4(caption,max 270ch), t5(caption,max 77ch), t6(subtitulo,max 75ch)
- B2 · 3 boxes de modelo comercial (uno destacado en verde profundo) · beat: propuesta · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/B2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 37ch), t3(subtitulo,max 75ch), t4(caption,max 232ch), t5(caption,max 193ch), t6(caption,max 72ch)
- B3 · Grilla de capacidades 2×3 con iconografía semántica · beat: propuesta · lienzo: sage · peso: visual -> https://brand.magoya.com/ai/templates/B3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 37ch), t3(subtitulo,max 63ch), t4(caption,max 151ch), t5(subtitulo,max 63ch), t6(caption,max 151ch)
- C1 · Título + grilla de 4 stats · beat: evidencia · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/C1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 61ch), t3(display,max 9ch), t4(caption,max 171ch), t5(display,max 9ch), t6(caption,max 171ch)
- C2 · Data hero — 3 métricas de producto (sage) · beat: evidencia · lienzo: sage · peso: mixto -> https://brand.magoya.com/ai/templates/C2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 30ch), t3(display,max 8ch), t4(caption,max 171ch), t5(display,max 8ch), t6(caption,max 171ch)
- C3 · Porcentaje al palo — una cifra gigante (44cqw ≈ 65% del ancho) · beat: evidencia · lienzo: verde-profundo · peso: visual -> https://brand.magoya.com/ai/templates/C3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 4ch), t3(subtitulo,max 183ch)
- C4 · Tres cifras grandes en línea (15cqw) · beat: evidencia · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/C4.html · slots: t1(numero_de_pagina,max 66ch), t2(kicker,max 127ch), t3(display,max 3ch), t4(caption,max 189ch), t5(display,max 3ch), t6(caption,max 189ch)
- D1 · Barras simples (una serie, última barra en lima) · beat: evidencia · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/D1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 108ch), t3(caption,max 378ch), chart3(grafico,max ?ch)
- D2 · Barras agrupadas (dos series + leyenda en chips) · beat: evidencia · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/D2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 113ch), chart2(grafico,max ?ch), t3(caption,max 302ch), t4(caption,max 46ch), t5(caption,max 63ch)
- D3 · Gráfico de líneas (serie principal + baseline punteada) · beat: evidencia · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/D3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 105ch), chart2(grafico,max ?ch), t3(display,max 14ch), t4(caption,max 202ch), t5(caption,max 79ch)
- D4 · Donut + barras de progreso (sage) · beat: evidencia · lienzo: sage · peso: visual -> https://brand.magoya.com/ai/templates/D4.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 68ch), chart2(grafico,max ?ch), t3(titulo,max 9ch), t4(caption,max 54ch), t5(subtitulo,max 208ch)
- E1 · Lista numerada con fila destacada (lima) · beat: propuesta · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/E1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 54ch), t3(subtitulo,max 6ch), t4(caption,max 172ch), t5(subtitulo,max 6ch), t6(caption,max 172ch)
- E2 · Checklist en dos columnas · beat: propuesta · lienzo: sage · peso: texto -> https://brand.magoya.com/ai/templates/E2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 37ch), t3(subtitulo,max 84ch), t4(caption,max 9ch), t5(caption,max 159ch), t6(caption,max 9ch)
- E3 · Tabla comparativa de scope — Lean vs Recommended · beat: pedido · lienzo: blanco · peso: mixto -> https://brand.magoya.com/ai/templates/E3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 54ch), t3(caption,max 129ch), tabla3(tabla,max ?ch)
- E4 · Escenarios de inversión — timing + números · beat: pedido · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/E4.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 54ch), t3(caption,max 135ch), t4(subtitulo,max 54ch), t5(kicker,max 39ch), t6(titulo,max 8ch)
- F1 · Timeline horizontal de 5 etapas (etapa activa en lima) · beat: propuesta · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/F1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 37ch), t3(caption,max 46ch), t4(caption,max 115ch), t5(caption,max 46ch), t6(caption,max 115ch)
- F2 · Método en 4 columnas — Discover · Align · Execute · Learn · beat: propuesta · lienzo: sage · peso: texto -> https://brand.magoya.com/ai/templates/F2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 37ch), t3(kicker,max 68ch), t4(subtitulo,max 41ch), t5(caption,max 306ch), t6(kicker,max 68ch)
- F3 · Journey de actores y plataformas (swimlanes) · beat: propuesta · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/F3.html · slots: t1(numero_de_pagina,max 66ch), t2(titulo,max 86ch), t3(kicker,max 79ch), t4(kicker,max 79ch), t5(kicker,max 79ch), t6(kicker,max 72ch)
- F4 · Artefactos de proceso (wireframe · prototipo · output de discovery) · beat: propuesta · lienzo: sage · peso: mixto -> https://brand.magoya.com/ai/templates/F4.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 79ch), t3(caption,max 99ch), t4(caption,max 99ch), t5(caption,max 99ch)
- G1 · Caso estructurado — challenge · team · adaptation · results · beat: evidencia · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/G1.html · slots: t1(numero_de_pagina,max 66ch), t2(caption,max 183ch), t3(caption,max 148ch), t4(titulo,max 118ch), t5(kicker,max 88ch), t6(caption,max 324ch)
- G2 · Caso en resultados — antes / después · beat: evidencia · lienzo: sage · peso: texto -> https://brand.magoya.com/ai/templates/G2.html · slots: t1(numero_de_pagina,max 66ch), t2(caption,max 178ch), t3(titulo,max 110ch), t4(kicker,max 108ch), t5(display,max 9ch), t6(caption,max 169ch)
- H1 · Foto a sangre a la izquierda + texto a la derecha · beat: contexto · lienzo: blanco · peso: texto -> https://brand.magoya.com/ai/templates/H1.html · slots: t1(numero_de_pagina,max 66ch), t2(kicker,max 127ch), t3(titulo,max 104ch), t4(subtitulo,max 334ch), t5(caption,max 137ch)
- H2 · Foto a sangre a la derecha + texto a la izquierda (sage) · beat: contexto · lienzo: sage · peso: mixto -> https://brand.magoya.com/ai/templates/H2.html · slots: t1(numero_de_pagina,max 66ch), t2(kicker,max 127ch), t3(titulo,max 104ch), t4(subtitulo,max 279ch)
- H3 · Foto de fondo completo + scrim verde + statement · beat: tension · lienzo: foto · peso: visual -> https://brand.magoya.com/ai/templates/H3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 78ch), t3(subtitulo,max 252ch)
- H4 · Tira de 3 fotos + título · beat: contexto · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/H4.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 97ch), t3(caption,max 135ch), t4(caption,max 135ch), t5(caption,max 135ch)
- I1 · Personaje + display al palo · beat: tension · lienzo: blanco · peso: mixto -> https://brand.magoya.com/ai/templates/I1.html · slots: t1(numero_de_pagina,max 66ch), t2(kicker,max 153ch), t3(display,max 86ch)
- I2 · Personaje a la izquierda + dato al palo (sage) · beat: tension · lienzo: sage · peso: visual -> https://brand.magoya.com/ai/templates/I2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 11ch), t3(titulo,max 113ch), t4(caption,max 241ch)
- J1 · Quote destacada en card (sage) · beat: evidencia · lienzo: sage · peso: mixto -> https://brand.magoya.com/ai/templates/J1.html · slots: t1(subtitulo,max 390ch), t2(caption,max 131ch), t3(caption,max 131ch)
- J2 · Quote sobre foto B&N + scrim · beat: evidencia · lienzo: foto · peso: visual -> https://brand.magoya.com/ai/templates/J2.html · slots: t1(numero_de_pagina,max 66ch), t2(titulo,max 274ch), t3(subtitulo,max 113ch), t4(caption,max 131ch)
- J3 · Equipo — retratos B&N + rol · beat: propuesta · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/J3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 50ch), t3(caption,max 216ch), t4(caption,max 81ch), t5(caption,max 99ch), t6(caption,max 81ch)
- K1 · Stack tecnológico por capa (logos reales en gris) · beat: evidencia · lienzo: sage · peso: visual -> https://brand.magoya.com/ai/templates/K1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 55ch), t3(caption,max 153ch), t4(kicker,max 105ch), t5(kicker,max 105ch), t6(kicker,max 105ch)
- K2 · Capacidades de IA (logos de modelos + qué hacemos con ellos) · beat: propuesta · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/K2.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 55ch), t3(subtitulo,max 100ch), t4(caption,max 333ch), t5(subtitulo,max 100ch), t6(caption,max 333ch)
- L1 · Logo wall de clientes (12 logos, grilla pareja) · beat: evidencia · lienzo: blanco · peso: visual -> https://brand.magoya.com/ai/templates/L1.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 78ch), t3(titulo,max 15ch), t4(caption,max 90ch)
- M1 · Portada — aérea de campo + scrim verde · beat: apertura · lienzo: foto · peso: visual -> https://brand.magoya.com/ai/templates/M1.html · slots: t1(caption,max 167ch), t2(display,max 82ch), t3(subtitulo,max 189ch)
- M2 · Portada alternativa — verde profundo + paño al corte · beat: apertura · lienzo: verde-profundo · peso: visual -> https://brand.magoya.com/ai/templates/M2.html · slots: t1(caption,max 167ch), t2(display,max 79ch), t3(subtitulo,max 241ch)
- M3 · Cierre / next step con CTA + flecha a mano · beat: pedido · lienzo: sage · peso: texto -> https://brand.magoya.com/ai/templates/M3.html · slots: t1(numero_de_pagina,max 66ch), t2(display,max 86ch), t3(subtitulo,max 297ch), t4(subtitulo,max 135ch), t5(subtitulo,max 6ch), t6(caption,max 153ch)
# ===== COMO COMPONER EL DECK (el arco manda, la textura es consecuencia) =====
{
"por_que": "El selector mapea contenido → módulo fila por fila, y nadie gobierna la SECUENCIA. Un deck puede cumplir todas las reglas de marca y salir soso. Pasó en una prueba real. Lo que gobierna la secuencia es el ROL de cada slide en el argumento (campo perfil.beat), no su textura: la textura es consecuencia.",
"las_cuatro_reglas": [
"La última slide es beat \"pedido\". No se cierra sin pedir algo.",
"Antes del primer beat \"propuesta\" tiene que haber al menos un beat \"tension\". No se propone sin haber puesto el problema.",
"Después del primer beat \"propuesta\" tiene que haber al menos un beat \"evidencia\". No se afirma sin respaldar.",
"No más de 3 beats iguales seguidos. Cuatro slides de propuesta seguidas es un catálogo, no un argumento."
],
"cuando_NO_aplican": "Las cuatro gobiernan la SECUENCIA. En una pieza de una sola slide no hay secuencia y no aplican ninguna: pedirle a una slide que sea a la vez tensión, propuesta, evidencia y pedido es insatisfacible. Lo que sí aplica siempre es el contrato de entrega de ai/precedencia.json. validar.py --pieza ya las saltea cuando hay una sola slide.",
"si_una_regla_no_se_puede_cumplir": "decilo explícito en la entrega, con el motivo. Una excepción declarada es aceptable; una regla incumplida en silencio no. Ejemplo real: el resumen ejecutivo no tiene CTA, así que no puede cerrar en \"pedido\" — eso se declara.",
"textura_es_diagnostico_no_regla": "El campo perfil trae lienzo y peso (visual/mixto/texto) para que puedas ver si el deck se aplana. NO es un gate: fue uno y se retiró, porque el catálogo no tiene todavía un módulo visual que cargue un método, un journey ni un caso, así que un deck de producto no podía cumplirlo (0 de 362.880 órdenes posibles). Miralo, no lo persigas. Si te queda denso, lo correcto es DECIRLO, no forzar la secuencia.",
"si_te_queda_soso": "NO agregues adorno y NO inventes una carátula: hay meta-análisis de que los detalles decorativos bajan comprensión y recall (seductive details, 177 effect sizes). Primero revisá el argumento con las cuatro reglas de arriba — soso casi siempre es \"propone sin tensión\" o \"cuatro propuestas seguidas\", no falta de color. Si el argumento está bien y sigue denso, es que falta un módulo en el catálogo: reportalo.",
"inventario": {
"por_beat": {
"tension": 4,
"contexto": 4,
"estructura": 3,
"propuesta": 11,
"evidencia": 14,
"pedido": 3,
"apertura": 2
},
"por_lienzo": {
"blanco": 21,
"verde-profundo": 3,
"sage": 14,
"foto": 3
},
"por_peso": {
"mixto": 7,
"texto": 15,
"visual": 19
},
"mediana_de_presupuesto_de_texto": 694,
"sin_portador_visual": "los beats \"propuesta\" que cargan método, journey o caso (F2, F3, E1, G1) son todos peso texto y no tienen recambio visual en el catálogo. Es un hueco conocido."
}
}
{
"que_es": "El rol de cada módulo en el argumento. Es el eje que gobierna la secuencia; la textura (lienzo, peso visual) es consecuencia, no causa. Viene de cómo lo gobierna el mercado: Sequoia ordena sus 10 slides por rol, y el ghost deck de McKinsey se aprueba leyendo solo los títulos, en orden, sin las slides.",
"como_se_derivo": {
"apertura": "su cuando_usarlo dice que es portada",
"pedido": "cierra el deck o pone el ask comercial (escenarios de inversión)",
"estructura": "da aire u orientación, no argumenta (agenda, divisor, título de capítulo)",
"tension": "statement que reencuadra: una sola idea que carga el sentido",
"contexto": "sitúa el mercado o aclara el statement antes de proponer",
"propuesta": "qué hacemos, cómo lo hacemos y con quién (servicios, método, journey, pod)",
"evidencia": "respalda con cifra, gráfico, caso o tercero"
},
"a_revisar": {
"A1": "A1 es el único ambiguo: su cuando_usarlo dice \"abrir un bloque con una sola idea\", que puede ser tensión o propuesta según el bloque. Se derivó como tensión porque la frase que carga el sentido suele reencuadrar. Si en la práctica se usa para proponer, corregilo acá."
},
"inventario": {
"tension": 4,
"contexto": 4,
"estructura": 3,
"propuesta": 11,
"evidencia": 14,
"pedido": 3,
"apertura": 2
}
}
# ===== PRECEDENCIA (quien gana cuando dos reglas chocan) =====
{
"que_es": "Ley de precedencia: qué documento gana cuando dos reglas oficiales de este sistema se contradicen. Existe para que ninguna IA ni ninguna persona tenga que elegir. Si encontrás una contradicción, aplicá esta ley, entregá la pieza, y reportá la contradicción — pero no la resuelvas por criterio propio.",
"version": "1.0 · 2026-08-19",
"por_que_existe": "Una auditoría a ciegas encontró 16 contradicciones entre documentos oficiales del sistema: reglas que ninguna plantilla puede cumplir, instrucciones que prometen control que la geometría no permite, y números distintos en dos archivos. Mientras existan, la IA tiene que decidir — y decidir es exactamente lo que este sistema promete que nadie tenga que hacer.",
"orden": [
{"n": 1, "gana": "la plantilla oficial de ai/templates/", "por_que": "es una pieza real que ya funcionó. La geometría, los colores y la tipografía que trae son la marca, no una sugerencia.", "consecuencia": "si un chequeo o un constraint contradice a una plantilla, el que está mal es el chequeo. Reportalo, no adaptes la plantilla."},
{"n": 2, "gana": "ai/facts.json", "por_que": "es la única fuente de datos reales de la empresa. Nada la sobreescribe, ni la CEO de segunda mano.", "consecuencia": "un dato que no está acá no se publica como real, aunque venga en el material que te pasaron. Ver contrato_de_entrega."},
{"n": 3, "gana": "tokens.json", "por_que": "son los valores exactos.", "consecuencia": "ningún hex, radio o peso suelto que no salga de acá."},
{"n": 4, "gana": "ai/constraints.json", "por_que": "son los mínimos y máximos que no requieren criterio.", "consecuencia": "si contradice a una plantilla, gana la plantilla (regla 1) y el constraint se corrige."},
{"n": 5, "gana": "BRAND.md", "por_que": "es la doctrina: explica el por qué.", "consecuencia": "cuando la doctrina y un número chocan, el número gana para ejecutar y la doctrina gana para decidir si la pieza tiene sentido."},
{"n": 6, "gana": ".ai/checklist.md", "por_que": "es el gate de salida, no la fuente.", "consecuencia": "un chequeo que ninguna plantilla oficial pasa es un chequeo mal escrito."},
{"n": 7, "gana": "el campo cuando_usarlo de ai/templates/index.json", "por_que": "es orientación editorial, lo último en la cadena.", "consecuencia": "si promete control sobre un elemento que la plantilla no deja mover (por ejemplo 'el destacado va en lima' en un módulo sin lima elegible), la instrucción está mal. Hacé lo que permite la plantilla y reportalo."}
],
"contrato_de_entrega": {
"que_resuelve": "Declarar un hueco no es lo mismo que negarse a entregarlo. En la auditoría, una IA marcó cinco cifras como no verificables en su reporte y las dejó escritas en la slide igual. El reporte estaba impecable y la pieza salía con el dato prohibido.",
"reglas": [
"Un dato que no está en facts.json NO se escribe en la pieza. Va como [PENDIENTE] visible, nunca como el número que te pasaron.",
"Si el material de origen trae un dato que CONTRADICE a facts.json, la slide no sale: se entrega con el slot en [PENDIENTE] y la contradicción explícita en el pedido a humanos.",
"Toda entrega lleva un bloque 'PEDIDO A HUMANOS' con una línea por hueco: qué dato falta, a quién se le pide, y qué slide se desbloquea con eso.",
"Si la pieza tiene aunque sea un [PENDIENTE], se entrega marcada como BORRADOR. Una pieza sin ningún hueco es la única que puede salir como final.",
"El bloque PEDIDO A HUMANOS se marca con el atributo data-pedido-a-humanos en su contenedor, como hacen los tres decks de ai/decks/. validar.py --pieza usa esa marca para no contar como cifra afirmada lo que el bloque escribe SOBRE la pieza: sin la marca, tu propia declaración de huecos te cuenta en contra."
],
"verificacion": "python3 ai/validar.py --pieza
corre sobre el HTML entregado, no sobre el repo — pero necesitás el script, así que solo se puede si tenés el repo clonado. Si llegaste por URL y no lo tenés, el contrato igual te obliga: [PENDIENTE], BORRADOR y pedido a humanos se cumplen a mano."
},
"como_reportar_una_contradiccion": "Si tenés el repo: anotala en .ai/VALIDACION-IA.md bajo 'Necesita tu decisión', con los dos archivos que se contradicen y qué dice cada uno; el agente semanal las junta y las lleva a una persona. Si llegaste por URL y no podés escribir en el repo —que es el caso normal— la contradicción va en el bloque PEDIDO A HUMANOS de la pieza que estás entregando, con los dos archivos y la cita de cada lado: ese bloque ES el canal, y la persona que recibe la pieza la lleva al ledger. Lo que no se hace nunca es resolverla por criterio propio ni dejarla sin registrar porque no tenías dónde escribirla."
}
# ===== METODO DE TRABAJO (obligatorio) =====
# Método de trabajo — obligatorio para cualquier pieza con contenido
**Versión 3.0 · 2026-08-19** · Parte del flujo de todas las entradas por IA. Cumplir la marca al pie
de la letra es la mitad del trabajo; la otra mitad es que la historia esté bien contada. Una pieza
on-brand con la historia mal contada es una pieza fallida.
> **Lo que cambió en la v2.0 y por qué.** Una auditoría a ciegas (dos IA que solo recibieron una URL
> pública) mostró tres cosas. Una: la v1.3 pedía como **insumo** que escribieras "LA idea", y nadie
> llega con eso — el material real es un transcript, un doc de la CEO o un deck viejo. Dos: el agente
> de copy "reescribía cada texto", y el copy entra aprobado y bloqueado: reescribirlo es trabajo que
> después hay que revertir. Tres: declarar un hueco no es lo mismo que no entregarlo — una IA marcó
> cinco cifras como no verificables en su reporte y las dejó escritas en la slide igual.
## Fase 0 — Del material crudo a la narrativa
**Esta fase antes no existía y es donde se pierde el deck.** El insumo real nunca es un outline: es
un transcript, un documento de otra persona, un deck viejo para reciclar, o los tres a la vez.
1. **Inventariá lo que te dieron**, sin editar nada: cada bloque de contenido con su origen. Marcá
cuál es texto aprobado (no se toca) y cuál es materia prima (se puede reordenar).
2. **Escribí LA idea vos, y mostrala.** Una frase: lo único que la audiencia se tiene que llevar. Si
el material no alcanza para escribirla, eso no te frena — **la escribís como hipótesis y la marcás
como tal** en el pedido a humanos. Lo que no se hace es avanzar sin haberla escrito.
3. **Contá los beats y comparalos con lo que te dieron.** Si el material trae 8 bloques y tu narrativa
necesita 13, esos 5 de más son decisiones tuyas: **listalas una por una con su motivo.** En la
auditoría, un deck creció de 8 a 13 slides y nadie registró quién agregó las 5 ni por qué — y ahí
vivían las contradicciones con el brief.
4. **Buscá la contradicción antes de diseñar.** Cruzá el material contra `ai/facts.json` y contra las
decisiones ya tomadas. Un dato del material que contradice a `facts.json` es un bloqueo, no un
detalle: la slide no sale hasta que una persona decida. Y un pedido del brief que contradice a
otro ("dark mode" contra `fondos_permitidos`) se reporta antes de intentarlo, no después.
### Gate de Fase 0 — el ghost deck
**Antes de mirar un solo módulo**, escribí los títulos de las slides en orden, solos, y leelos de un
tirón. Si no se reconstruye el argumento, no estás listo para elegir módulos — y ningún módulo lo va
a arreglar. Es el *storyline test* que usan McKinsey, Bain y BCG, y se aprueba sin abrir el catálogo.
Dos cosas se chequean acá y no después:
1. **Cada título es una aserción**, no una etiqueta de tema. "Baselining and four initial experiments"
es etiqueta; "Four experiments tell us where the model breaks" es aserción. Medido: 2 de 12 en una
propuesta real (17%). Objetivo ≥80%.
2. **El arco tiene los cuatro momentos**: se pone una tensión antes de proponer, y se respalda con
evidencia después de proponer, y se cierra pidiendo algo. Si tu outline no los tiene, el deck va a
leerse genérico por más que las slides estén lindas.
Recién con el ghost deck aprobado se eligen los módulos, y ahí cada beat del outline se mapea al
`perfil.beat` del módulo (`apertura · tension · contexto · propuesta · evidencia · pedido ·
estructura`). Las cuatro reglas de secuencia están en `como_componer_el_deck`.
## Fase 1 — Elegir cada módulo por criterio
- Para cada beat, usá el **selector** (`ai/selector.json`): qué querés contar → qué módulo, sin
criterio de diseño. Ante dos candidatos, leé el `cuando_usarlo` de los dos y justificá.
- **Si ninguna fila aplica, no fuerces.** Diez de los 41 módulos solo se alcanzan por una cláusula
condicionada a criterio, y hay tipos de contenido que todavía no tienen fila (journey de dos
niveles, cinco cifras, cartera de varios casos en un slide). Si tu contenido es uno de esos:
elegí el módulo más cercano, **declará que elegiste contra el selector y por qué**, y reportá la
fila que falta. Repurposar un módulo tiene costos invisibles — el acento de lima de B1 está en la
card del medio, así que usarlo para tres pilares destaca el segundo sin ningún motivo semántico.
- Buscá la oportunidad de contar mejor: ¿ese dato rinde más como cifra gigante que como bullet? ¿eso
que parece una lista es un caso de éxito? ¿ese párrafo es un statement esperando a ser una frase?
- El deck más corto que cuente la historia completa, gana. Una idea por slide.
## Fase 2 — Las tres pasadas (agentes si tu plataforma los tiene)
Nunca entregues la primera versión. Si podés desplegar subagentes, desplegalos; si no, hacé las
pasadas actuando cada rol por separado.
1. **Agente de títulos — el que más mueve la aguja.** Cada título de contenido tiene que ser una
**aserción**: sujeto + verbo + afirmación. No una etiqueta de tema. "Baselining and four initial
experiments" es una etiqueta; "Four experiments tell us where the model breaks" es una aserción.
*Línea de base medida: 2 de 12 títulos de una propuesta real eran aserciones (17%). El objetivo es
≥80%.* La base no es estética: assertion-evidence mide mejor comprensión y mejor recall diferido
que topic-subtopic (Garner & Alley, n=110).
**El test:** leé solo los títulos en orden. Si no se reconstruye el argumento, los títulos están
mal, no el cuerpo.
2. **Agente de copy — marca, no reescribe.** El texto aprobado no se toca. Su trabajo es señalar:
qué afirmación viaja sin cifra ni plazo, qué frase es relleno, qué dato no tiene fuente, y qué
contradice algo ya decidido. Devuelve una lista de observaciones, no una versión nueva. Si el copy
es materia prima y sí hay que escribirlo, lo dice explícito antes de hacerlo.
3. **Agente de diseño.** Verifica plantilla oficial sin cambios de geometría, slots dentro de
`max_caracteres`, y `ai/constraints.json`. **Cuando dos reglas oficiales se contradicen, aplicá
`ai/precedencia.json` y reportá la contradicción — no la resuelvas por criterio propio.**
4. **Agente crítico — el que refuta.** Una sola consigna: *encontrá el slide más débil y proponé cómo
contarlo mejor.* La ronda que refuta encuentra más que la que construye. Si el crítico no encontró
nada, no estaba criticando.
## Fase 3 — Criterio de entrega
**Técnico.** Los 17 chequeos de `.ai/checklist.md`, más:
```
python3 ai/validar.py --pieza
```
**Narrativo.**
| Qué | Umbral | Cómo se mide |
|---|---|---|
| Títulos-aserción en slides de contenido | ≥80% | contalos: sujeto + verbo + afirmación |
| La historia leída solo de títulos | cierra | leelos en orden, sin el cuerpo |
| Densidad | mediana ≤110 palabras por slide | contá palabras visibles |
| Arco | cierra en pedido, tensión antes de proponer, evidencia después | `validar.py --pieza` lo mide |
| Adorno | ninguna slide fuera del catálogo | `validar.py --pieza` lo mide |
| Slide prescindible | ninguno | si borrás un slide y la historia no pierde nada, borralo |
| El dato más fuerte | en el slide más fuerte | si la mejor cifra está en un bullet, movela |
**No midas legibilidad con Flesch, INFLESZ ni Fernández Huerta.** Las fórmulas piden prosa corrida de
100+ palabras y los bullets sin verbo inflan el score: medido sobre una propuesta real, el largo de
oración ya daba sano mientras 10 de 12 títulos no decían nada. El test de títulos es el que discrimina.
**Contrato de entrega** (`ai/precedencia.json` lo detalla). Lo esencial:
- Un dato que no está en `facts.json` **no se escribe**. Va como `[PENDIENTE]` visible.
- Si el material trae un dato que **contradice** a `facts.json`, la slide no sale.
- Toda entrega lleva un bloque **PEDIDO A HUMANOS**: qué falta, a quién se le pide, qué se desbloquea.
- Con aunque sea un `[PENDIENTE]`, la pieza se entrega marcada **BORRADOR**. Sin ninguno, puede salir
como final.
Entregá también una nota corta de decisiones: qué módulos elegiste y por qué, qué elegiste contra el
selector, qué agregaste que no venía en el material, y qué encontró el crítico.
## Changelog
- **3.0** (2026-08-19): el eje pasa de textura a **rol narrativo**. El ghost deck (títulos solos, antes de elegir módulos) es un gate de Fase 0. Las cinco reglas de textura se reemplazan por cuatro de argumento, y la textura queda como diagnóstico: era un gate insatisfacible — 0 de 362.880 órdenes del deck de producto pasaban, porque el catálogo no tiene un módulo visual que cargue un método, un journey ni un caso. Se agrega el chequeo de adorno, que es la falla que hizo abandonar al primer usuario y que nada medía. Fase 1b se elimina: era una fase de más.
- **2.1** (2026-08-19): Fase 1b — componer la secuencia, con el campo `perfil` de cada módulo (lienzo y peso, derivados de la plantilla) y la regla anti-adorno: si el deck queda soso se cambia de módulo, no se decora. Sale de un feedback real: la IA eligió módulos de texto con lienzo blanco y sage uno atrás del otro, cumplió todas las reglas, y cuando le señalaron que estaba soso agregó carátulas decorativas.
- **2.0** (2026-08-19): Fase 0 nueva (del material crudo a la narrativa, con registro de lo que
agregás y búsqueda de contradicciones antes de diseñar) · el agente de copy marca en vez de
reescribir · agente de títulos con umbral medido (17% → 80%) · contrato de entrega y
`validar --pieza` · legibilidad por fórmula descartada con evidencia · `ai/precedencia.json` para
cuando dos reglas oficiales chocan.
- **1.3** (2026-08-11): fase 1 exige `ai/facts.json` como única fuente de datos de la empresa.
- **1.2** (2026-08-11): fase 2 usa el selector; el agente de diseño valida plantilla-sin-cambios.
- **1.1** (2026-08-10): el checklist técnico pasa a 15 chequeos.
- **1.0** (2026-08-10): primera versión.
# ===== CHECKLIST DE ENTREGA =====
# Checklist de validación — piezas, código o copy generados por IA
Diecisiete chequeos verificables. Todos tienen que dar **sí** antes de publicar. Si alguno falla, corregí y volvé a correr la lista completa.
> **Quién manda cuando dos reglas se contradicen.** La plantilla oficial gana: es una pieza real que ya funcionó. Si un chequeo de esta lista contradice a una plantilla de `ai/templates/`, el que está mal es el chequeo — reportalo, no adaptes la plantilla. El orden completo está en `ai/precedencia.json`.
| # | Chequeo | Cómo se verifica | Falla si… |
|---|---|---|---|
| 1 | **Solo hex de la paleta** | Extraé todos los colores de la pieza o del CSS y comparalos contra `tokens.json` | Aparece un hex que no está en `tokens.json` (típico: un verde "parecido", `#4CAF50`, `#2ECC71`) |
| 2 | **Cero naranja y cero amarillo** | Buscá cualquier tono con hue 20–65° **y saturación > 40%**. El piso de saturación no es opcional: sin él, siete colores oficiales de `tokens.json` caen en el rango (`#ECE3DB` 28°, `#DCD0C4` 30°, `#C4B5A6` 30°, `#F6F1EB` 33°, `#F1EDE7` 36°, `#E0A33A` 38°, `#E6E1D8` 39°) y toda la familia crema de la marca da "naranja". Es el mismo calificador que usa `ai/validar.py` | Hay naranja o amarillo del brand viejo — hue 20–65° **con saturación alta**. Excepción única: `#FFC67B`, y solo como piel de personaje |
| 3 | **Lima no es texto sobre claro** | Buscá `#A2FF00` aplicado a `color:` sobre blanco, sage, crema o papel | Hay texto lima sobre fondo claro (1.25:1). Sobre claro el verde-texto es `#009145` y solo ≥24px bold |
| 4 | **`#00DE68` como texto solo sobre oscuro** | Revisá cada uso de `#00DE68` en `color:` | Se usa como texto sobre blanco o crema en vez de `#009145` |
| 5 | **Como máximo un golpe de lima** | Contá los elementos en lima: CTA, display, motivo, ícono destacado, marca a mano. Automatizable: contar `A2FF00` por slide | Hay **dos o más** elementos lima compitiendo en la misma pieza. Cero lima es válido: 19 de las 41 plantillas oficiales no llevan lima, y el acento es un techo, no una cuota |
| 6 | **Balance 75/25** | Estimá superficie: neutros (blanco/sage/negro/crema) vs. verdes | Los verdes pasan de ~25%, o la pieza es 100% negra o 100% verde |
| 7 | **Manrope, y la jerarquía declarada** | Revisá `font-family`. Para slides, contá los `font-size` únicos y compará contra el techo del catálogo (7). Para piezas nuevas de redes o web, el techo sigue siendo 3 | Aparece otra tipografía (Inter, Poppins, system-ui suelto). O una slide pasa los 7 niveles. O una pieza nueva que no viene de plantilla pasa los 3. **Nota:** el techo de las plantillas es **7**, uno por rol declarado (kicker, display, bajada, caption, dato, label, pie); el límite de 3 era para piezas escritas a mano. Dos plantillas del catálogo lo pasan y están **declaradas en falla**, no autorizadas: E4 (9 niveles) y G1 (8) — colapsar niveles ahí es una decisión de diseño pendiente (`.mesa/DECISIONS.md`, D3). Que existan en el catálogo no las convierte en permiso |
| 8 | **Cero emojis** | Buscá caracteres emoji en títulos, cuerpo, bullets y labels | Hay cualquier emoji que no sea 👈 👉 👇 apuntando a un CTA, o una bandera de país |
| 9 | **Cero gradientes** | Buscá `gradient`, `blur`, `box-shadow` de brillo, glass, 3D **sobre elementos de la pieza**. NO cuenta el `box-shadow:0 10px 40px rgba(0,0,0,.12)` del contenedor `.slide`: lo traen las 41 plantillas y el deck-starter, es andamiaje de previsualización y desaparece al exportar | Hay algún gradiente que no sea el scrim verde profundo 55–86% sobre foto aérea, o una sombra de brillo sobre un elemento de la pieza |
| 10 | **Máximo 2 recursos gráficos** | Contá: foto aérea, foto B&N, personaje, paño de semicírculos, marca a mano, ícono. La cifra gigante y la tipografía no cuentan — son la voz | Hay 3 o más además de la tipografía, o convive un par prohibido: dos fotos, foto + personaje, foto aérea + paño, personaje + ícono (matriz completa en `resourceCoexistence` de `tokens.json`) |
| 11 | **Motivo al corte** | Mirá los bordes del paño de semicírculos | El motivo se ve cortado flotando en el aire en vez de nacer de un borde o de detrás de un objeto. Si convive con un personaje: el paño va al fondo en franja, el personaje al borde opuesto en primer plano, nunca superpuestos |
| 12 | **Personajes sin rostro y al borde** | Mirá cada personaje ilustrado | Tiene rostro, es monoline o stock, está centrado como clipart, flota entero, está sobre una foto, o usa un color fuera de `#00DE68` `#A2FF00` `#DFDFDF` `#FFC67B` `#161616` |
| 13 | **Botón vs. chip, y assets reales** | Revisá radios y logos | Un botón es pill o un chip tiene fondo sólido (botón = rect radio 10px, chip = pill outline), o hay logos de clientes inventados/placeholder, o hay un resaltador sólido detrás de texto |
| 14 | **Chips: solo texto, sin punto** | Mirá cada chip/pill de la pieza | Un chip lleva un punto/bullet (•) delante del texto, un ícono adentro, o texto en sentence case — el chip es SOLO texto uppercase; la pill ya delimita, el punto es ruido |
| 15 | **Espaciado en escala y un eje** | Extraé los margin/padding/gap y compará contra la escala base-4 de `tokens.json`; mirá el eje de alineación | Hay valores fuera de la escala (5, 10, 14, 18…), bloques a menos de 24 de aire entre sí, más de un eje de alineación en una pieza **escrita a mano** (una plantilla del catálogo puede traer dos columnas: M3 las trae, y ahí manda la plantilla), filas cuyos elementos no comparten centro vertical, o paddings con 4 valores distintos |
| 16 | **IA, no AI** | Buscá `AI` como palabra suelta en todo el copy | Una pieza en español escribe "AI" (AI en campo, Integrar con AI, capacidades de AI) en vez de **IA**. Solo se admite "AI" en copy en inglés y en nombres propios ajenos ("Data & AI", "AI Studio") |
| 17 | **Wordmark: variante, tamaño, posición y letterforms** | Comparalo contra la plantilla: variante correcta (interiores **black**, portada y cierre **cream**), 211px de ancho y x=7.5% **del ancho** del lienzo (144px sobre 1920) siempre. La **y** la declara la plantilla y NO es una sola: interiores y cierre a y=3.2% (61px), **portada M1 a y=7%** (134px). Las dos son del ancho, no del alto. Y comparalo contra el asset canónico de `assets/`, no contra el nombre del archivo | La variante no corresponde al lienzo (deep en un interior), el tamaño no es 211px, la posición se midió contra el alto en vez del ancho, o las letterforms no son las del asset canónico. **Una pieza real pasó los 16 chequeos con el wordmark en variante, tamaño y posición equivocados: es el único elemento que el manual llama "LA firma de la marca" y era el único sin auditoría** |
## Extras según el formato
- **Slides**: margen interior 7% del ancho, escala 126/84/56/42pt sobre 1920px, como máximo un golpe de lima por slide (ver chequeo 5), y el lienzo que traiga la plantilla: blanco, sage `#EEF2EC`, verde profundo o foto.
- **Redes**: display y cifras al ~70% del ancho. Story 1080×1920 con zona segura de 96px arriba y abajo. Feed 1080×1080.
- **Logo**: mínimo 90px en pantalla / 24mm impreso; por debajo va el avatar "m". Clearspace = altura de la letra "m". Nunca estirado, rotado, sombreado ni en lima.
- **Copy**: sin superlativos ni frases grandilocuentes; labels de botón en sentence case; kickers en MAYÚSCULAS con tracking +0.12em.
- **Merch**: siempre foto o render real del producto, nunca ilustración ni esquema vectorial. Sin lima en textil.
- **Fotos de personas**: siempre B&N con un acento verde o lima.
## Si la pieza es de "IA en campo"
Es una **marca anexa con manual propio** (`ai-en-campo.html`), no el core. Ahí sí valen el lienzo verde digital `#00DE68` pleno, la placa negra de dato clave y los doodles del Studio (2–4 por pieza, ±5–15°). Nada de eso es válido en una pieza de Magoya core, y nada del core aplica tal cual a "IA en campo".