Knowledge Layer
Propuesta para convertir información aprobada en archivos Markdown públicos, estables y legibles por crawlers de LLMs.
Una fuente oficial, gobernada y legible por máquinas para que los LLMs respondan sobre Copa con datos aprobados.
Junio 2026 · Seed inicial basado en el playbook LLM Content Repository y notas internas del sprint Knowledge Layer.
Este deck debe cerrar quién aprueba, cómo se compila y qué se publica en S3.
La presentación high-level explica el valor del Knowledge Layer. Esta versión técnica define los controles y responsabilidades necesarios para construir un piloto aprobable.
Gobierno editorial
Directus concentra drafts, versiones, fuentes y estados. Los owners validan los hechos y Digital Marketing controla cuándo un contenido queda listo para release.
Procesamiento
El engine externo lee un snapshot aprobado, aplica reglas determinísticas y construye Markdown, índices, manifest y evidencia de QA.
Publicación controlada
S3 recibe primero un release de staging. Solo después del QA y approval final de Digital Marketing se promueve el mismo manifest a producción.
La decisión recomendada es desacoplar aprobación y ejecución: las personas aprueban en Directus; el engine ejecuta reglas; IT/Seguridad aprueba la infraestructura; Digital Marketing autoriza cada publicación.
No estamos creando solo una carpeta en S3. Estamos creando una cadena de confianza.
El bucket es el lugar donde viven los archivos. El valor real está en que cada archivo tenga origen, aprobación, vigencia, estructura y publicación controlada.
Directus captura la verdad editable
Permite que Content, Producto y áreas expertas mantengan datos estructurados sin tocar archivos ni código.
El engine convierte verdad en artefactos
Valida, transforma, genera Markdown, arma índices, revisa links y publica con trazabilidad.
S3/CloudFront expone una capa legible
Sirve archivos estáticos bajo una ruta pública controlada, con HTTPS, caching, logs y reglas de acceso para bots.
La función del engine no es decidir qué es cierto. La función del engine es asegurar que solo lo aprobado llegue al formato correcto, en el lugar correcto, con señales correctas para crawlers.
Un registro de Directus se convierte en Markdown mediante reglas explícitas.
Cada content type necesita un schema de entrada, una plantilla de salida y una regla de ubicación. El engine no copia texto libre: compila un artefacto verificable.
Contenido editorial
title, summary, facts, body blocks, FAQs, source references y relaciones con destinos, aeropuertos o políticas.
Gobernanza
canonical_id, locale, owner, risk class, effective/expiry date, status y evidencia de approval.
Reglas del engine
Valida schema, normaliza bloques, resuelve links, aplica template, sanitiza contenido y calcula path y hash.
Artefacto generado
Frontmatter YAML + Markdown, alternates, timestamps, source IDs, release_id y entrada correspondiente en el manifest.
Ejemplo en Directus
canonical_id: destination_bog · locale: es-pa · status: ready_for_release · fuentes y approvals relacionados.
Resultado en S3
/ai/destinos/es-pa/sudamerica/bogota.md + registro en manifest.json con hash, Directus ID y S3 Version ID.
Directus gobierna el contenido. Digital Marketing autoriza el release. El engine publica artefactos.
Control editorial
Capa de procesamiento
Publicación inmutable
/ai/, /llms.txt, sitemap y manifestLa arquitectura separa la verdad editorial, la decisión de release y la ejecución técnica.
Directus
Source of truth editorial y estructurado. Guarda drafts, versiones, permisos, estados, autores y approvals.
Digital Marketing
Owner operativo del Knowledge Layer. Configura el workflow, coordina approvals, revisa staging y autoriza la promoción a producción.
Engine de procesamiento
Compilador y release runner. No aprueba contenido: lee el snapshot autorizado, valida reglas y produce artefactos reproducibles.
S3
Repositorio de releases generados. Staging y producción tienen versioning, permisos separados y escritura exclusiva del engine.
CloudFront + WAF
Superficie pública bajo dominio Copa. Entrega URLs estables, caching, protección, bot controls y access logs.
IT / Seguridad
Aprueba IAM, infraestructura, exposición, logging, retención y respuesta a incidentes. No sustituye la aprobación editorial.
El principio operativo: Directus guarda la verdad aprobable; Digital Marketing decide el release; el engine ejecuta; S3 conserva el resultado; CloudFront lo expone.
El Knowledge Layer debe ser navegable por humanos, crawlers y scripts.
/
|-- llms.txt ← DEBE EXISTIR
|-- sitemap-ai.xml
`-- ai/
|-- llms-full.txt
|-- manifest.json
|-- audiencias.md
|-- glosario.md
|-- core/
| |-- destinos.md
| |-- red-de-rutas.md
| `-- ...
|-- corporativo/
| |-- press-releases/
| | |-- 2026/
| | `-- ...
| `-- media-kit.md
|-- operaciones/
| |-- politicas-equipaje.md
| `-- ...
|-- comercial/
| |-- partners/
| `-- ...
|-- destinos/
| |-- es-pa/sudamerica/bogota.md
| |-- en-us/north-america/miami.md
| |-- pt-br/sudamerica/sao-paulo.md
| `-- ...
`-- _meta/
|-- changelog.md
`-- ...
Raíz pública
/llms.txt DEBE EXISTIR en la raíz del dominio. Si IT no permite raíz, se necesita redirección o alias aprobado hacia /ai/llms.txt.
Un destino, un archivo
La unidad recomendada es aeropuerto/destino, no ruta. PTY se documenta una vez en core/modelo-hub.md.
Metadata obligatoria
Cada MD necesita fecha, fuente, owner, vigencia, locale, estado y nivel de revisión.
Press releases
Entran en corporativo/press-releases/ como fuente pública fechada. No reemplazan archivos canónicos de core/ o destinos/.
Antes de asignar owners, hay que definir el inventario de conocimiento.
core/
Verdad compartida: red de rutas, destinos, flota, hub PTY, alianza, historia y presencia geográfica.
Base para todas las audienciasoperaciones/
Políticas de equipaje, tarifas, check-in, embarque, ConnectMiles, conexiones y reglas de servicio.
Requiere validación operativacomercial/
Codeshares, interlínea, alianzas, partners y beneficios comerciales documentados como intersección con Copa.
Comercial + Alianzasdestinos/
Un MD por aeropuerto: operación específica, terminal, frecuencia, acceso terrestre, requisitos y particularidades.
Primer piloto: top rutas T1audiencias/
Lentes de interpretación para pasajeros, call center, partners, inversores, empleados y candidatos.
No duplica hechosdynamic/
Rangos con fecha explícita, lógica de precios y apuntadores a fuentes vivas cuando existan APIs aprobadas.
No publicar precios exactos estáticosRegla editorial: si el dato no cambia por ser Copa, o no tiene fuente aprobada, probablemente no pertenece al Knowledge Layer.
Hay tres formas viables de convertir contenido aprobado en releases Markdown.
A. Event-driven
Un cambio de estado en Directus dispara un Flow que invoca Lambda, un container o un endpoint interno.
- Ventaja: feedback rápido y poca operación manual.
- Riesgo: acopla cada transición editorial al pipeline técnico.
- Uso: notificar o preparar staging; no publicar directamente.
B. Release job por lote
Digital Marketing inicia un release. El runner consulta todos los registros ready_for_release y compila un paquete determinístico.
- Ventaja: control, reproducibilidad y rollback claro.
- Riesgo: no es publicación inmediata.
- Uso: opción recomendada para el MVP.
C. GitOps intermedio
El engine genera Markdown en una rama; un pull request aprobado despliega el release a S3.
- Ventaja: auditoría técnica y diff muy fuertes.
- Riesgo: duplica approvals y exige operación Git.
- Uso: fase posterior si IT lo requiere.
Recomendación: release job por lote, iniciado manualmente por Digital Marketing o solicitado por un Flow. Directus orquesta el estado; el procesamiento y las credenciales AWS viven fuera del CMS.
El engine convierte un snapshot aprobado de Directus en un release reproducible.
Cierra contenido
Digital Marketing mueve los registros aprobados a ready_for_release.
Inicia release
Botón manual, Flow o pipeline crea un release_id único.
Lee snapshot
Cuenta de servicio read-only consulta registros, relaciones y versiones aprobadas.
Normaliza y valida
Schema, fuentes, slugs, locales, vigencia, links y políticas.
Compila
Genera frontmatter, Markdown, llms.txt, sitemap y manifest.
Publica staging
Escribe el paquete, ejecuta crawl QA y genera diff contra producción.
Promueve
Digital Marketing aprueba el preview; el engine promueve ese mismo manifest.
Datos que viven en Directus
canonical_id, tipo, slug, locale y contenido estructurado.- Fuente, vigencia, owner, risk class y approvals.
- Estado editorial y relación entre traducciones.
Datos que genera el engine
release_id, hash, S3 key, object version y timestamps.- Markdown, manifest, índices, sitemap, QA report y diff.
- Resultado de deploy y referencia de rollback.
El engine demuestra que ejecutó controles; no sustituye el juicio editorial.
Seguridad puede aprobar controles verificables. La exactitud factual sigue siendo responsabilidad del owner y del workflow humano.
Integridad de entrada
Schema obligatorio, normalización a texto, sanitización de HTML/CSS/scripts, rechazo de caracteres invisibles y allowlist de links y componentes.
Mitigación de contenido malicioso
Reglas para instrucciones ocultas, ofuscación, base64 y patrones de prompt injection. Genera alertas y bloqueo, sin prometer detección perfecta.
DLP y secrets contextual
Busca categorías sensibles, credenciales y datos de pasajeros. Permite nombres públicos autorizados en press releases mediante reglas y excepciones auditadas.
Identidad y mínimo privilegio
- Service account read-only para consultar Directus.
- Rol de deploy con escritura limitada a staging/prod.
- Secrets fuera del CMS y rotación según política IT.
Trazabilidad y reversibilidad
- Hash por archivo, manifest firmado y ejecución idempotente.
- Rollback por release y S3 Version ID, nunca edición humana en el bucket.
- Resultado del release escrito nuevamente en Directus.
La defensa es por capas: permisos, normalización, reglas estáticas, DLP, revisión humana, staging, firma y rollback. Ningún scanner garantiza por sí solo integridad semántica.
Digital Marketing administra el workflow y conserva el control final de publicación.
Autor prepara
- Completa campos, fuente, locale y vigencia.
- Solo puede enviar a revisión.
Owner valida
- Confirma exactitud y ownership del dato.
- Devuelve o aprueba el contenido.
Revisión condicional
- Legal/Compliance entra según
risk_class. - No todos los contenidos requieren este gate.
Digital aprueba
- Verifica metadata, traducciones y approvals.
- Solo este estado puede entrar al engine.
Digital libera
- Revisa preview, diff y QA report.
- Aprueba promoción o devuelve a corrección.
Los permisos de Directus deben restringir quién puede cambiar cada estado. El engine valida el estado, pero no puede otorgarse a sí mismo un approval ni promover contenido sin autorización de Digital Marketing.
S3 conserva releases versionados; CloudFront expone rutas públicas estables.
Modelo de almacenamiento
- Preferible: buckets separados para staging y producción; IT puede exigir cuentas o prefixes separados.
- S3 Versioning habilitado en ambos ambientes.
- Paquete inmutable en
releases/{release_id}/con Markdown, índices, QA y manifest. - Producción mantiene keys públicas estables como
/ai/destinos/.../bogota.md. - El manifest relaciona cada URL con hash, S3 Version ID y fuente Directus.
- Solo el rol del engine escribe; humanos nunca editan archivos directamente.
Modelo de serving
- Bucket privado como origin y CloudFront con Origin Access Control.
- Dominio Copa, TLS, WAF, access logs y alarmas.
Content-TypeyCache-Controldefinidos por tipo de artefacto.ETagyLast-Modifiedtratados como headers de sistema.- Invalidación selectiva de URLs cambiadas después de cada promoción.
stale-while-revalidateystale-if-errorcomo buffer de disponibilidad.
Rollback recomendado: seleccionar un manifest anterior y promoverlo como un nuevo evento de release. El engine restaura las versiones correspondientes, actualiza las keys estables y registra el resultado en Directus.
llms.txt ayuda, pero no reemplaza robots.txt, sitemap ni WAF.
| Señal | Función |
|---|---|
llms.txt | Índice curado para LLMs. En esta arquitectura es obligatorio, aunque sigue siendo una convención emergente. |
sitemap-ai.xml | Lista URLs importantes, fechas de actualización y locales para crawlers. |
robots.txt | Declara acceso esperado por user-agent y path; no es una barrera de seguridad. |
| WAF + rate limits | Protege la superficie, limita abuso y aplica reglas para bots aprobados. |
| Logs | Confirma quién entra, qué lee, frecuencia, volumen y errores. |
Decisiones que debe cerrar Seguridad/IT
- Permitir crawlers de búsqueda AI en
/ai/: OAI-SearchBot, PerplexityBot, Googlebot/Bingbot y otros aprobados. - Separar crawling para búsqueda de crawling para entrenamiento cuando el proveedor lo permita.
- Definir el tratamiento de agentes iniciados por usuario como
ChatGPT-UseryPerplexity-User. - Aplicar rate limits, monitoreo de costos y respuesta ante scraping agresivo.
- Actualizar reglas cuando existan rangos IP o mecanismos oficiales de verificación.
User-triggered fetch es una visita iniciada por una persona cuando pide al asistente consultar una página. No es crawling automático; debe medirse y gobernarse como un patrón de acceso distinto.
El ticket a IT/Seguridad es el gate que convierte la idea en infraestructura aprobada.
Infraestructura que debe solicitar
- Ambientes S3 staging/prod con versioning, cifrado, ownership y retención definidos.
- CloudFront + OAC bajo rutas aprobadas de
copaair.com. - Runtime del engine: Lambda, container o CI runner según estándares internos.
- IAM: lectura limitada de Directus y escritura exclusiva del engine en S3.
- Secrets management, logs, alertas, WAF, rate limits y procedimiento de rollback.
Decisiones que debe devolver IT/Seguridad
- Separación por buckets, prefixes, cuentas o ambientes corporativos.
- Mecanismo autorizado para que Directus/Flow solicite un release.
- Ubicación del engine y patrón de identidad entre Directus, runner y AWS.
- Políticas de cache, invalidación, logs, retención y respuesta a incidentes.
- Clasificación formal de contenido público y controles para bots en
/ai/.
Mensaje para la reunión: SR-0125405 no pide solo un bucket. Pide un camino de publicación completo, con identidad, staging, producción, serving público, auditoría y rollback.
Próximo paso: piloto pequeño, aprobado y medible.
Cerrar decisiones
- Release job recomendado y runtime candidato.
- Arquitectura para EPAM/Digital y scope Directus para Aníbal.
- Architecture brief para SR-0125405.
Modelar contenido
- Collections, campos y relaciones iniciales.
- Estados, roles y permisos de aprobación.
- Locales ES/EN/PT y risk class para T1.
Construir engine MVP
- Consulta de snapshot aprobado.
- Templates MD, validaciones y manifest.
- Deploy a staging y QA report.
Ejecutar release T1
- Top destinos/rutas.
core/modelo-hub.md.- Approval Digital, promoción prod y rollback test.
QA y medición
- Crawl test y revisión de headers.
- CloudFront/WAF log review.
- Prompt baseline por mercado/idioma.
Regla operativa: cada hito importante genera un brief de correo con decisión tomada, evidencia, impacto, riesgo y próximo ask.
El LLM puede traducir, pero la fuente oficial debe existir en los idiomas clave.
No depender solo del LLM
Los modelos traducen al responder, pero si el MD oficial existe solo en un idioma, aumenta el riesgo de matices perdidos, respuestas incompletas y baja visibilidad por mercado.
Modelo recomendado
Publicar canónicos ES, EN y PT para contenido T1. Crear variantes por locale solo cuando cambien reglas, mercado, lenguaje legal o contexto operativo.
Metadata mínima
language, locale, source_language, translation_status, reviewed_by, last_reviewed y URL alterna.
Ruta sugerida
/ai/destinos/es-pa/sudamerica/bogota.md/ai/destinos/en-us/south-america/bogota.md/ai/destinos/pt-br/america-do-sul/bogota.md
Criterio editorial y regla de release
Traducción automática puede acelerar drafts, pero el publish requiere revisión humana u owner aprobado para evitar claims incorrectos en travel, políticas, requisitos y operación.
T1 crítico: Digital Marketing define locales obligatorios y el engine bloquea si falta uno. Si una traducción ya publicada vence, queda stale y dispara corrección. No crítico: permite release parcial con alternates explícitos.
Para pedir approval, llevamos documentos específicos por audiencia.
Arquitectura v0.1
- Diagrama end-to-end.
- Opción de engine y modelo de release.
- Public path, staging/prod y límites técnicos.
Directus brief
- Collections y campos requeridos.
- Estados, roles y permisos.
- Service account y mecanismo de trigger.
Modelo operativo
- Qué usamos de cada producto.
- Digital Marketing como release owner.
- Dependencias, owners y escalamiento.
Architecture doc
- Clasificación de datos.
- Runtime, IAM, WAF, robots y logs.
- Rollback, retención y monitoreo.
Email brief
- Decisión tomada.
- Evidencia y links.
- Riesgo y próximo ask.
No cerramos arquitectura final hasta tener approval EPAM/Digital, approval de Aníbal sobre Directus y validación de Seguridad/IT sobre SR-0125405. Después se formaliza el runbook de Digital Marketing.
Medimos acceso, cobertura y calidad de respuestas, no solo “si existe el bucket”.
Accesibilidad
- HTTP 200/3xx/4xx.
Content-Typecorrecto.- Sitemap y freshness.
- Errores WAF/CDN.
Cobertura
- % entidades con MD aprobado.
- Locales disponibles.
- Metadata completa y vigente.
- Drift Directus vs. manifest prod.
AI visibility
- Prompts por mercado/idioma.
- Presencia de Copa en respuesta.
- Citation/source usage.
- Accuracy review.
Gobernanza
- Lead time de aprobación.
- Releases exitosos/fallidos.
- Rollbacks y contenido stale.
- Incidentes y tiempo de recuperación.
Baseline conceptual: release manifest + logs de engine/CloudFront/WAF + crawl QA + prompts controlados. Digital Marketing recibe un dashboard operativo y un brief por hito; al inicio no se promete atribución comercial exacta.
Base usada para esta propuesta
Fuentes internas
- Playbook interno:
sources/notes/copa-llm-md-files-playbook.md. - Notas de sesión Knowledge Layer 2026-05-20 y 2026-05-26.
- Entidad Directus del wiki interno: CMS canónico de destinos.
- Políticas corporativas revisadas: Disclosure, Insider Trading, Whistleblower y archivo de confidencialidad Q1 2026.
00-admin/DEVELOPMENT_POLICIES.md: logging de actividad y vendor governance.
Fuentes externas
- AWS S3 Versioning y S3 Block Public Access.
- AWS CloudFront Origin Access Control y response headers policies.
- AWS S3 object metadata, CloudFront updating objects y AWS Lambda.
- Directus Content Versioning, Flow triggers, Flow operations y approval workflows.
- OpenAI Crawlers, Google Crawlers, Perplexity Crawlers.
- llms.txt proposal, Google Sitemaps y Google localized versions.
- OWASP LLM01 Prompt Injection, AWS WAF rate-based rules y CloudFront stale-while-revalidate / stale-if-error.
Supuesto principal: S3 será el repositorio de salida, pero la URL pública debe quedar bajo dominio Copa y controlada por CDN/WAF para cumplir seguridad y discovery.