#!/usr/bin/env python3
"""
Generador del Proyecto de Semana 7 — Electiva en Transformación Digital (NRC-8775)
=================================================================================
Proyecto. Creación de un negocio en la transformación digital

Genera: oviedo_alexander_proyecto.docx

Formato: APA 7ª edición UNIMINUTO (Calibri 11 pt, interlineado doble, márgenes
2.54 cm, sangría 1.27 cm, alineación izquierda, paginación superior derecha).

Requiere las figuras de ./figuras/ (ejecutar antes generar_figuras_s7.py).
"""

import os
import sys

try:
    from docx import Document
    from docx.shared import Pt, Cm, RGBColor
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.enum.table import WD_TABLE_ALIGNMENT
    from docx.oxml.ns import qn
    from docx.oxml import OxmlElement
except ImportError:
    print("Instalando python-docx...")
    os.system(f"{sys.executable} -m pip install python-docx --break-system-packages")
    from docx import Document
    from docx.shared import Pt, Cm, RGBColor
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.enum.table import WD_TABLE_ALIGNMENT
    from docx.oxml.ns import qn
    from docx.oxml import OxmlElement


# ─── Constantes APA 7 (UNIMINUTO) ─────────────────────────────────────
FONT_NAME = "Calibri"
FONT_SIZE = Pt(11)
LINE_SPACING = 2.0
MARGIN = Cm(2.54)
INDENT = Cm(1.27)

COLOR_TITULO = RGBColor(0x1B, 0x2A, 0x47)
COLOR_TEXTO = RGBColor(0x22, 0x22, 0x22)
HEADER_FILL = "1B2A47"

BASE = os.path.dirname(os.path.abspath(__file__))
FIGURAS = os.path.join(BASE, "figuras")
SALIDA = os.path.join(BASE, "oviedo_alexander_proyecto.docx")


# ─── Utilidades ────────────────────────────────────────────────────────

def set_cell_shading(cell, color_hex):
    shading = OxmlElement("w:shd")
    shading.set(qn("w:fill"), color_hex)
    shading.set(qn("w:val"), "clear")
    cell._tc.get_or_add_tcPr().append(shading)


def add_page_number(section):
    """Número de página en la esquina superior derecha (APA 7)."""
    header = section.header
    p = header.paragraphs[0]
    p.alignment = WD_ALIGN_PARAGRAPH.RIGHT

    run = p.add_run()
    fld_begin = OxmlElement("w:fldChar")
    fld_begin.set(qn("w:fldCharType"), "begin")
    instr = OxmlElement("w:instrText")
    instr.set(qn("xml:space"), "preserve")
    instr.text = "PAGE"
    fld_end = OxmlElement("w:fldChar")
    fld_end.set(qn("w:fldCharType"), "end")

    run._r.append(fld_begin)
    run._r.append(instr)
    run._r.append(fld_end)
    run.font.name = FONT_NAME
    run.font.size = FONT_SIZE
    run.font.color.rgb = COLOR_TEXTO


def add_paragraph_apa(doc, text, bold=False, italic=False,
                      alignment=WD_ALIGN_PARAGRAPH.LEFT,
                      indent=True, font_size=FONT_SIZE,
                      space_after=Pt(0), space_before=Pt(0)):
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.font.name = FONT_NAME
    run.font.size = font_size
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = COLOR_TEXTO

    pf = p.paragraph_format
    pf.alignment = alignment
    pf.line_spacing = LINE_SPACING
    pf.space_after = space_after
    pf.space_before = space_before
    if indent:
        pf.first_line_indent = INDENT
    return p


def add_block_quote(doc, text):
    """Cita textual larga (40+ palabras): bloque con sangría, sin comillas."""
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.font.name = FONT_NAME
    run.font.size = FONT_SIZE
    run.font.color.rgb = COLOR_TEXTO

    pf = p.paragraph_format
    pf.alignment = WD_ALIGN_PARAGRAPH.LEFT
    pf.line_spacing = LINE_SPACING
    pf.left_indent = INDENT
    pf.space_after = Pt(6)
    return p


def add_heading_apa(doc, text, level=1):
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.font.name = FONT_NAME
    run.font.color.rgb = COLOR_TITULO

    pf = p.paragraph_format
    pf.line_spacing = LINE_SPACING
    pf.space_before = Pt(18)
    pf.space_after = Pt(6)

    if level == 1:
        run.font.size = Pt(14)
        run.font.bold = True
        pf.alignment = WD_ALIGN_PARAGRAPH.CENTER
    elif level == 2:
        run.font.size = Pt(12)
        run.font.bold = True
        pf.alignment = WD_ALIGN_PARAGRAPH.LEFT
    else:
        run.font.size = Pt(11)
        run.font.bold = True
        run.font.italic = True
        pf.alignment = WD_ALIGN_PARAGRAPH.LEFT
    return p


def add_table(doc, headers, rows, widths=None, font_size=Pt(10)):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    table.style = "Table Grid"
    table.autofit = False

    for i, header in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = header
        set_cell_shading(cell, HEADER_FILL)
        for paragraph in cell.paragraphs:
            paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
            paragraph.paragraph_format.line_spacing = 1.0
            paragraph.paragraph_format.space_after = Pt(0)
            for run in paragraph.runs:
                run.font.name = FONT_NAME
                run.font.size = font_size
                run.font.bold = True
                run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)

    for r, row_data in enumerate(rows):
        for c, cell_text in enumerate(row_data):
            cell = table.rows[r + 1].cells[c]
            cell.text = str(cell_text)
            for paragraph in cell.paragraphs:
                paragraph.alignment = WD_ALIGN_PARAGRAPH.LEFT
                paragraph.paragraph_format.line_spacing = 1.0
                paragraph.paragraph_format.space_after = Pt(0)
                for run in paragraph.runs:
                    run.font.name = FONT_NAME
                    run.font.size = font_size
                    run.font.color.rgb = COLOR_TEXTO

    if widths:
        for i, width in enumerate(widths):
            for row in table.rows:
                row.cells[i].width = width
    return table


def add_table_caption(doc, numero, titulo):
    """Encabezado de tabla APA: 'Tabla N' en negrita + título en cursiva."""
    p1 = doc.add_paragraph()
    r1 = p1.add_run(numero)
    r1.font.name = FONT_NAME
    r1.font.size = FONT_SIZE
    r1.font.bold = True
    r1.font.color.rgb = COLOR_TEXTO
    p1.paragraph_format.line_spacing = 1.0
    p1.paragraph_format.space_before = Pt(12)

    p2 = doc.add_paragraph()
    r2 = p2.add_run(titulo)
    r2.font.name = FONT_NAME
    r2.font.size = FONT_SIZE
    r2.font.italic = True
    r2.font.color.rgb = COLOR_TEXTO
    p2.paragraph_format.line_spacing = 1.0
    p2.paragraph_format.space_after = Pt(6)


def add_table_note(doc, texto):
    p = doc.add_paragraph()
    r1 = p.add_run("Nota. ")
    r1.font.name = FONT_NAME
    r1.font.size = Pt(10)
    r1.font.italic = True
    r1.font.color.rgb = COLOR_TEXTO
    r2 = p.add_run(texto)
    r2.font.name = FONT_NAME
    r2.font.size = Pt(10)
    r2.font.color.rgb = COLOR_TEXTO
    p.paragraph_format.line_spacing = 1.0
    p.paragraph_format.space_before = Pt(4)
    p.paragraph_format.space_after = Pt(12)


def add_figure(doc, nombre_archivo, numero, titulo, nota, ancho_cm=15.5):
    """Figura APA 7: número en negrita, título en cursiva, imagen y nota."""
    ruta = os.path.join(FIGURAS, nombre_archivo)
    if not os.path.exists(ruta):
        raise FileNotFoundError(
            f"Falta la figura {ruta}. Ejecute primero generar_figuras_s7.py"
        )

    p1 = doc.add_paragraph()
    r1 = p1.add_run(numero)
    r1.font.name = FONT_NAME
    r1.font.size = FONT_SIZE
    r1.font.bold = True
    r1.font.color.rgb = COLOR_TEXTO
    p1.paragraph_format.line_spacing = 1.0
    p1.paragraph_format.space_before = Pt(12)

    p2 = doc.add_paragraph()
    r2 = p2.add_run(titulo)
    r2.font.name = FONT_NAME
    r2.font.size = FONT_SIZE
    r2.font.italic = True
    r2.font.color.rgb = COLOR_TEXTO
    p2.paragraph_format.line_spacing = 1.0
    p2.paragraph_format.space_after = Pt(6)

    p3 = doc.add_paragraph()
    p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p3.paragraph_format.line_spacing = 1.0
    p3.paragraph_format.space_after = Pt(4)
    p3.add_run().add_picture(ruta, width=Cm(ancho_cm))

    add_table_note(doc, nota)


def add_reference(doc, text):
    p = doc.add_paragraph()
    run = p.add_run(text)
    run.font.name = FONT_NAME
    run.font.size = FONT_SIZE
    run.font.color.rgb = COLOR_TEXTO

    pf = p.paragraph_format
    pf.alignment = WD_ALIGN_PARAGRAPH.LEFT
    pf.line_spacing = LINE_SPACING
    pf.space_after = Pt(6)
    pf.left_indent = INDENT
    pf.first_line_indent = -INDENT
    return p


# ─── Construcción del documento ────────────────────────────────────────

def build_document():
    doc = Document()

    doc.core_properties.title = (
        "Lexalud: plataforma SaaS de gestion juridica con inteligencia "
        "artificial para el sector salud colombiano"
    )
    doc.core_properties.author = (
        "Alexander Oviedo Fadul; Maria Fernanda Ruiz Paipilla"
    )
    doc.core_properties.comments = (
        "Proyecto de la Semana 7. NRC-8775 Electiva en Transformacion Digital. "
        "Especializacion en Inteligencia Artificial, UNIMINUTO."
    )

    for section in doc.sections:
        section.top_margin = MARGIN
        section.bottom_margin = MARGIN
        section.left_margin = MARGIN
        section.right_margin = MARGIN
        add_page_number(section)

    # ═══════════════════ PORTADA ═══════════════════
    for _ in range(3):
        doc.add_paragraph().paragraph_format.line_spacing = LINE_SPACING

    add_paragraph_apa(doc,
        "Lexalud: plataforma SaaS de gestión jurídica con inteligencia artificial "
        "para el sector salud colombiano",
        bold=True, alignment=WD_ALIGN_PARAGRAPH.CENTER,
        indent=False, font_size=Pt(14), space_after=Pt(24))

    add_paragraph_apa(doc, "Grupo 7",
        bold=True, alignment=WD_ALIGN_PARAGRAPH.CENTER,
        indent=False, space_after=Pt(4))

    for integrante in ["Alexander Oviedo Fadul", "Maria Fernanda Ruiz Paipilla"]:
        add_paragraph_apa(doc, integrante,
            alignment=WD_ALIGN_PARAGRAPH.CENTER, indent=False, space_after=Pt(2))

    doc.add_paragraph().paragraph_format.line_spacing = LINE_SPACING

    datos = [
        "Especialización en Inteligencia Artificial",
        "Corporación Universitaria Minuto de Dios (UNIMINUTO)",
        "NRC-8775 — Electiva en Transformación Digital",
        "Semana 7 — Proyecto: creación de un negocio en la transformación digital",
        "Profesor: Juan Diego López Vargas",
        "23 de agosto de 2026",
    ]
    for dato in datos:
        add_paragraph_apa(doc, dato,
            alignment=WD_ALIGN_PARAGRAPH.CENTER, indent=False, space_after=Pt(4))

    doc.add_page_break()

    # ═══════════════════ INTRODUCCIÓN ═══════════════════
    add_heading_apa(doc, "Introducción", level=1)

    add_paragraph_apa(doc,
        "En Colombia la acción de tutela terminó convertida en la puerta de entrada "
        "ordinaria al sistema de salud. Lo que la Constitución de 1991 concibió como un "
        "mecanismo excepcional para proteger derechos fundamentales opera hoy, en la "
        "práctica, como el trámite al que acude el paciente cuando la autorización no "
        "llega, cuando el medicamento no está o cuando la cita se agenda para dentro de "
        "cuatro meses. La Corte Constitucional ya había documentado esa distorsión "
        "estructural en la Sentencia T-760 de 2008, cuando ordenó corregir las fallas de "
        "regulación que obligaban a los usuarios a acudir al juez para obtener "
        "prestaciones a las que tenían derecho (Corte Constitucional de Colombia, 2008). "
        "Casi dos décadas después, cada una de esas tutelas sigue generando un "
        "expediente, y cada expediente impone términos judiciales que se cuentan en "
        "días. Para las entidades del sector y para las firmas que las representan, el "
        "problema dejó de ser jurídico hace rato: es un problema de volumen.")

    add_paragraph_apa(doc,
        "Conozco ese problema desde adentro. Desde junio de 2019 trabajo como "
        "profesional experto en datos para una firma colombiana de abogados "
        "especializada en derecho médico y de la salud, y he visto la magnitud real de "
        "la cifra. Solo uno de sus clientes institucionales acumulaba, al cierre de "
        "julio de 2026, más de diecisiete mil ochocientas tutelas activas en el sistema. "
        "No diecisiete mil casos históricos repartidos en dos décadas: diecisiete mil "
        "expedientes vivos, cada uno con su radicado, su juzgado, su término y su riesgo "
        "de desacato. Ningún equipo humano lee eso.")

    add_paragraph_apa(doc,
        "El diagnóstico formal que la firma encargó a comienzos de 2026 puso números a "
        "lo que ya se intuía. El informe la describió como una organización en etapa de "
        "madurez en construcción que operaba, textualmente, como una isla funcional: "
        "tenía un sistema propio y valioso, pero sin llave única que conectara la "
        "información entre áreas. El 72,8 % de los registros de clientes estaba "
        "inactivo. Cerca del 90 % de los juzgados con los que se litigaba no tenía "
        "teléfono, dirección ni correo cargados. El 47 % de las hojas de vida del "
        "personal carecía de soporte digitalizado. Y cada factura en gestión "
        "prejurídica consumía veinte minutos de trabajo manual. Los indicadores de "
        "gestión, cuando existían, se construían a mano en hojas de cálculo y se "
        "formulaban de manera reactiva, es decir, después de que el problema ya había "
        "ocurrido.")

    add_paragraph_apa(doc,
        "Ese conjunto de síntomas describe, con precisión incómoda, lo que en clase se "
        "llamó fricción de mercado: opacidad, intermediarios innecesarios, tiempos "
        "irrazonables y costos injustificados (López Vargas, 2026). Y la fricción, "
        "cuando es persistente y medible, no es un defecto del sector: es la materia "
        "prima del emprendimiento digital. Fugini y Maggiolini (2018b) lo formulan desde "
        "la economía de los sistemas de información al señalar que el valor de un "
        "sistema no reside en la tecnología que incorpora, sino en la diferencia entre "
        "el costo de operar con él y el costo de operar sin él. En un despacho que "
        "gestiona decenas de miles de expedientes, esa diferencia es enorme y nadie la "
        "estaba capturando.")

    add_paragraph_apa(doc,
        "La propuesta que desarrollamos en este proyecto se llama Lexalud. Es una "
        "plataforma de software como servicio, pensada específicamente para firmas "
        "jurídicas y áreas legales del sector salud colombiano, que integra cinco "
        "capacidades: gestión unificada de expedientes y actuaciones, vigilancia "
        "automática de los despachos judiciales, extracción de datos estructurados a "
        "partir de documentos mediante inteligencia artificial, analítica predictiva "
        "sobre riesgo de incumplimiento de términos y un módulo de calidad alineado con "
        "la norma ISO 9001. No es un gestor documental más ni un sistema jurídico "
        "genérico al que se le cambia el logotipo: es una herramienta vertical, "
        "construida sobre el vocabulario y los flujos del litigio en salud.")

    add_paragraph_apa(doc,
        "La razón principal para emprender este proyecto es que la propuesta no parte "
        "de una hipótesis. Parte de una implementación que ya ocurrió. La firma construyó "
        "su plataforma entre abril de 2025 y agosto de 2026 y, sobre ella, ejecutó "
        "desde comienzos de 2026 un programa formal de transformación digital bajo "
        "metodología CRISP-DM, con seis fases, veinticuatro semanas de "
        "cronograma, un valor contratado de sesenta y nueve millones de pesos y "
        "entregables firmados electrónicamente por la gerencia. Ese programa produjo "
        "mediciones en producción, no proyecciones de consultoría. Cuando en este "
        "documento afirmamos que la consulta de analítica pasó de ciento cuatro "
        "segundos a menos de sesenta milisegundos, o que el cumplimiento de plazos "
        "procesales subió del 11,6 % al 70,9 %, estamos citando instrumentos de "
        "medición que se ejecutan con un comando y arrojan el mismo resultado cada vez.")

    add_paragraph_apa(doc,
        "Las implicaciones van más allá de la eficiencia de un despacho. Un sistema que "
        "detecta a tiempo un término próximo a vencerse evita una sanción por desacato; "
        "una sanción evitada es un recurso que no sale del sistema de salud. Un modelo "
        "que identifica las causas raíz repetidas de las tutelas convierte el litigio en "
        "información para prevenir el próximo caso, y esa prevención se traduce en un "
        "paciente que recibe su autorización sin tener que demandar. El beneficio, "
        "entonces, se reparte en tres capas: la firma reduce costos y gana previsibilidad; "
        "la entidad prestadora reduce condenas y multas; y el usuario del sistema de "
        "salud accede antes a lo que ya le correspondía.")

    add_paragraph_apa(doc,
        "El documento avanza en cuatro movimientos. Primero presentamos el caso que "
        "valida la propuesta, con su diagnóstico inicial, su intervención y sus "
        "resultados medidos, incluidos los tres episodios en que el proyecto se equivocó "
        "y tuvo que corregirse. Después definimos el modelo de negocio digital y "
        "respondemos, una por una, las cinco preguntas que estructuran cualquier "
        "propuesta de este tipo: qué ofrecemos, a quién, cómo cobramos, con qué "
        "tecnología y por qué la transformación digital hace viable el conjunto. En "
        "tercer lugar detallamos el plan de trabajo con actividades, fechas y "
        "responsables. Cerramos con el análisis de mercado y la matriz de riesgos. "
        "Conviene decir desde ahora que hay una cifra que no podremos ofrecer: el "
        "retorno económico verificado. Explicaremos por qué.")

    doc.add_page_break()

    # ═══════════════════ DESARROLLO ═══════════════════
    add_heading_apa(doc, "Desarrollo", level=1)

    # ─── 1. El caso que valida la propuesta ───
    add_heading_apa(doc, "El caso que valida la propuesta", level=2)

    add_heading_apa(doc, "La organización y su punto de partida", level=3)

    add_paragraph_apa(doc,
        "La organización de referencia es una sociedad por acciones simplificada "
        "colombiana, constituida en febrero de 2019 y dedicada exclusivamente a "
        "servicios jurídicos para el sector salud. Tiene su sede en Bogotá, opera en "
        "once departamentos, atiende a más de ciento cuarenta clientes corporativos y a "
        "más de cien prestadores de servicios de salud, acumula alrededor de mil "
        "seiscientos cincuenta casos documentados y está certificada en ISO 9001. Su "
        "equipo es deliberadamente mixto: además de abogados de las áreas "
        "administrativa, penal, procesal y médica, integra auditores en salud, "
        "economistas, contadores, médicos e ingenieros de sistemas. Por acuerdo con la "
        "firma, y siguiendo la indicación del docente de trabajar con el sector y la "
        "actividad sin revelar la razón social, la identificamos aquí únicamente por sus "
        "características.")

    add_paragraph_apa(doc,
        "El diagnóstico levantado en la primera fase del programa recorrió nueve "
        "procesos y los calificó con un índice de prioridad digital que combina impacto, "
        "potencial analítico, madurez y esfuerzo requerido. La Tabla 1 resume ese "
        "levantamiento. Vale la pena leerla con atención, porque casi todos los dolores "
        "que registra son los mismos que cualquier firma jurídica mediana del país "
        "reconocería como propios, y ahí está justamente la oportunidad de mercado.")

    add_table_caption(doc, "Tabla 1",
        "Diagnóstico de los procesos de la firma antes de la intervención")
    add_table(doc,
        ["Proceso", "Dolor documentado", "Oportunidad identificada", "Prioridad"],
        [
            ["Gestión jurídica (litigios)",
             "Alta criticidad y volumen inmanejable de expedientes",
             "Automatizar la lectura documental para reducir tiempos", "Alta"],
            ["Gestión de tecnología",
             "El sistema jurídico no se integra con el sistema contable",
             "Estandarizar la arquitectura de datos", "Alta"],
            ["Gerencia general",
             "Procesamiento manual de los correos de los clientes",
             "Clasificación automática con inteligencia artificial", "Alta"],
            ["Gestión comercial",
             "Datos de mercadeo aislados del registro de clientes",
             "Integrar la analítica para medir el retorno", "Alta"],
            ["Proyectos corporativos",
             "Sin trazabilidad de las fechas comprometidas",
             "Flujos de seguimiento automáticos", "Alta"],
            ["Gestión de calidad",
             "Indicadores construidos a mano en hojas de cálculo",
             "Base de datos centralizada de indicadores", "Media"],
            ["Flujo de recursos",
             "Veinte minutos de trabajo manual por cada factura",
             "Extracción automática de los datos del documento", "Media"],
            ["Administrativa y financiera",
             "Reprocesos por falta de conexión con contabilidad",
             "Base maestra con una llave única de identificación", "Media"],
            ["Talento humano",
             "El 47 % del personal sin documentación digitalizada",
             "Validadores obligatorios en el momento de la captura", "Media"],
        ],
        widths=[Cm(3.6), Cm(4.8), Cm(4.9), Cm(2.2)])
    add_table_note(doc,
        "Elaboración propia a partir del informe de diagnóstico de la fase 1 del "
        "programa de transformación digital de la firma, cerrado el 4 de marzo de 2026. "
        "La prioridad corresponde al índice de prioridad digital calculado en ese "
        "informe.")

    add_paragraph_apa(doc,
        "Tres causas raíz explican el conjunto. La primera es la fragmentación: la "
        "información existía, pero vivía en silos que no se hablaban entre sí. La "
        "segunda es cultural, y el informe la nombra sin eufemismos al señalar que el "
        "personal reconocía la necesidad de automatizar y a la vez ofrecía resistencia "
        "al cambio. La tercera es de dirección: los indicadores se formulaban "
        "reactivamente. Reconozco que la segunda me sorprendió menos de lo que debería. "
        "En mis años trabajando en digitalización he visto proyectos con presupuesto "
        "aprobado y licencias compradas fracasar por razones estrictamente humanas, y la "
        "consultoría que se citó en clase estima que cerca del 70 % de las "
        "transformaciones digitales no alcanza sus objetivos, con la resistencia "
        "cultural como causa más frecuente (López Vargas, 2026).")

    add_heading_apa(doc, "La intervención", level=3)

    add_paragraph_apa(doc,
        "El programa se estructuró bajo CRISP-DM, la metodología estándar para "
        "proyectos de explotación de datos (Chapman et al., 2000), en seis fases distribuidas "
        "a lo largo de veinticuatro semanas, con un valor contratado de sesenta y "
        "nueve millones de "
        "pesos. Cada fase tenía entregable, valor y fecha de cierre propios: comprensión "
        "del negocio, cerrada en marzo de 2026; comprensión de los datos, en abril; "
        "preparación de los datos, en junio; modelado, en julio; evaluación, en curso; y "
        "despliegue, pendiente. Al 10 de agosto de 2026 el avance global era del 72,7 %.")

    add_paragraph_apa(doc,
        "Hay un detalle de gobierno que conviene destacar porque es replicable y porque "
        "constituye, en sí mismo, parte del producto que proponemos vender. El proyecto "
        "de transformación digital se administra dentro del propio sistema que "
        "construye. Existe un módulo con fases, actividades, hitos, riesgos, "
        "indicadores, actas y evidencias, y el estado de cada actividad no se declara: "
        "se calcula a partir de la evidencia asociada, que puede ser un identificador de "
        "cambio en el repositorio, una ruta de archivo, una dirección del sistema en "
        "producción, un documento o una tabla de la base de datos. Un responsable no "
        "puede marcar una actividad como terminada sin adjuntar aquello que la "
        "demuestra. Esta idea, que parece burocrática, resultó ser el mejor antídoto "
        "contra el optimismo de los informes de avance.")

    add_paragraph_apa(doc,
        "La segunda fase produjo el inventario completo del activo de datos: se "
        "recorrieron las ciento treinta tablas del sistema, se agruparon en ocho "
        "ecosistemas funcionales y se generaron cuatro documentos por tabla, para un "
        "total de quinientos veinte entregables. La calidad se evaluó con el marco DAMA "
        "en sus seis dimensiones: completitud, unicidad, consistencia, validez, "
        "exactitud e integridad. En la tercera fase apareció la primera desviación "
        "metodológica honesta del proyecto: el plan contemplaba técnicas clásicas de "
        "minería de texto y se ejecutó algo distinto, porque los modelos de lenguaje "
        "resolvían mejor el problema. El informe de cierre lo consignó con una frase que "
        "vale la pena conservar: cambió la herramienta, no el resultado.")

    add_heading_apa(doc, "Los resultados medidos", level=3)

    add_paragraph_apa(doc,
        "La Figura 1 recoge las mediciones de eficiencia operativa más representativas. "
        "El panel izquierdo usa escala logarítmica porque las diferencias son de varios "
        "órdenes de magnitud y en escala lineal la barra corta desaparecería. El caso "
        "extremo es el tablero de analítica: antes ejecutaba once consultas anidadas "
        "contra la base de datos y tardaba ciento cuatro segundos, lo que en la práctica "
        "significaba que expiraba antes de responder y nadie lo usaba. Hoy lee un "
        "resultado precalculado que se regenera cada madrugada y responde en menos de "
        "sesenta milisegundos.")

    add_figure(doc, "figura_1_antes_despues.png", "Figura 1",
        "Resultados medidos antes y después de la intervención digital",
        "Elaboración propia con datos de la medición de eficiencia operativa de la "
        "fase 5 del programa, ejecutada en agosto de 2026 sobre el entorno de "
        "producción. El panel A emplea escala logarítmica.")

    add_paragraph_apa(doc,
        "El panel derecho muestra el efecto de automatizar la vigilancia de los "
        "despachos judiciales. Antes de la corrección, el proceso consultaba en promedio "
        "entre doce y quince expedientes distintos al mes; en los primeros diez días de "
        "agosto de 2026 consultó mil ochocientos tres y detectó ocho mil quinientas "
        "setenta y seis actuaciones. Es honesto aclarar que buena parte de ese salto "
        "corresponde a la puesta al día de expedientes que jamás se habían consultado, "
        "de modo que el ritmo sostenido se estabilizará en un valor menor. Aun así, la "
        "diferencia de orden de magnitud es real y es la que sostiene la propuesta "
        "comercial.")

    add_paragraph_apa(doc,
        "La Figura 2 presenta el indicador que más nos interesa como argumento de venta, "
        "porque es el que el cliente percibe: el porcentaje de solicitudes cerradas "
        "dentro del plazo comprometido. La serie va de marzo a agosto de 2026 y muestra "
        "un comportamiento errático hasta junio y una consolidación a partir de julio, "
        "que es el mes en que entró en operación el protocolo de tiempos de respuesta "
        "soportado por el sistema de alertas.")

    add_figure(doc, "figura_2_cumplimiento_plazos.png", "Figura 2",
        "Cumplimiento de plazos en la atención de requerimientos, marzo a agosto de 2026",
        "Elaboración propia con datos de la medición de eficiencia operativa de la "
        "fase 5. El valor de agosto corresponde a un corte parcial de diez días. La "
        "letra n indica el número de solicitudes cerradas en cada mes.")

    add_paragraph_apa(doc,
        "Antes de sacar conclusiones apresuradas de esa curva hay que decir dos cosas. "
        "Los meses no son cohortes equivalentes, porque la mezcla de casos cambia, y el "
        "corte de agosto es parcial. Lo que la serie permite afirmar es que existe una "
        "tendencia consistente al alza desde la entrada del protocolo, no que exista una "
        "relación causal demostrada. Preferimos decirlo así, aunque comercialmente sea "
        "menos vistoso, porque un dato que no resiste una auditoría del cliente termina "
        "costando más de lo que aporta.")

    add_paragraph_apa(doc,
        "La capa predictiva se construyó en la cuarta fase. Se entrenaron y compararon "
        "once modelos, incluidas tres líneas base, y se pusieron tres en operación. El "
        "modelo de riesgo de incumplimiento de plazo alcanzó un área bajo la curva de "
        "0,955 sobre la partición de prueba y de 0,795 medido en producción contra "
        "desenlaces reales, con una sensibilidad estable del 90,8 % en ambos escenarios. "
        "El modelo de pronóstico de carga por abogado redujo el error medio absoluto de "
        "81,2 a 26,7 actuaciones mensuales, un 67 % menos que la línea base. En "
        "veintisiete días de operación autónoma el motor produjo ochenta mil quinientas "
        "cuarenta y nueve predicciones.")

    add_heading_apa(doc, "Tres lecciones que costaron caro", level=3)

    add_paragraph_apa(doc,
        "Sería cómodo cerrar aquí y presentar un caso de éxito sin aristas. No sería "
        "útil. Los tres episodios que siguen son, en nuestra opinión, el activo más "
        "valioso que traemos a esta propuesta, porque definen requisitos de producto que "
        "un competidor que no haya pasado por ellos no sabrá que necesita.")

    add_paragraph_apa(doc,
        "El primero es el más grave. En julio de 2026 una auditoría interna descubrió "
        "que el proceso automático de enriquecimiento llevaba meses rellenando campos "
        "con frases constantes cuando el modelo no encontraba el dato en el documento. "
        "La frase «proceso interno con demora superior a cinco días sin resolución» "
        "aparecía idéntica en seis mil seiscientos cuarenta y seis expedientes. Otra "
        "afirmaba una acción correctiva que nadie había ejecutado ni verificado. No se "
        "trataba de un error estético: esos campos alimentaban los informes de causa "
        "raíz que se entregaban al cliente, de modo que el sistema estaba imputando "
        "incumplimientos sobre la base de un valor por defecto. La depuración purgó "
        "setenta y dos mil quinientos cincuenta y nueve valores. El agregado de impacto "
        "financiero, que el tablero reportaba en ciento cuarenta mil cuatrocientos "
        "millones de pesos, cayó a cuatro mil trescientos millones calculados sobre "
        "doscientos cuarenta y nueve casos con dato real. Y la cobertura global de "
        "información, que se reportaba en 51,7 %, bajó a 49,2 %.")

    add_block_quote(doc,
        "La cobertura baja porque ahora es cierta. El número anterior contaba como "
        "campo cubierto una constante idéntica en miles de expedientes. (Informe de "
        "subsanación de calidad del proceso automático, 28 de julio de 2026)")

    add_paragraph_apa(doc,
        "De ahí sale un requisito que Lexalud incorpora desde el diseño y que "
        "consideramos un diferenciador: toda escritura automática lleva marcada su "
        "procedencia, de modo que siempre es posible distinguir el dato registrado por "
        "una persona, el inferido por un modelo y el puesto por una plantilla. Un campo "
        "vacío es información legítima; una constante inventada, no. Cuando no hay "
        "expediente utilizable ni respuesta de las fuentes oficiales, el campo se deja en "
        "blanco y se reporta como tal.")

    add_paragraph_apa(doc,
        "El segundo episodio tiene que ver con la dependencia de proveedores. El 28 de "
        "julio de 2026 se verificó, invocándolos uno a uno, el catálogo de modelos de "
        "lenguaje que el sistema tenía configurados. De los veinticuatro que el "
        "proveedor anunciaba, diecinueve estaban retirados y devolvían error. Lo "
        "verdaderamente alarmante fue descubrir por qué nadie se había enterado: el "
        "registro de uso guardaba el resultado de cada llamada con el indicador de éxito "
        "fijado en verdadero, de manera que trece días de fallos consecutivos no dejaron "
        "una sola traza. Además, cambiar el modelo empleado exigía treinta y siete "
        "ediciones repartidas en ocho módulos, porque cada script llevaba su propia "
        "cascada escrita a mano.")

    add_paragraph_apa(doc,
        "La corrección consistió en centralizar el catálogo en un único punto de "
        "configuración, definir cascadas por tarea con respaldo local y programar una "
        "verificación mensual automática que distingue entre modelo vivo, retirado, sin "
        "saldo, inexistente y credencial inválida. Es un aprendizaje directamente "
        "transferible al producto: cualquier plataforma que dependa de modelos de "
        "terceros necesita tratar esa dependencia como un riesgo operativo vigilado, no "
        "como una decisión de arquitectura que se toma una vez.")

    add_paragraph_apa(doc,
        "El tercero es el que más nos cuesta escribir. Uno de los tres modelos "
        "predictivos, el que estima la probabilidad de éxito de una tutela, dio un área "
        "bajo la curva de 0,421 al medirse en producción, es decir, por debajo del azar. "
        "La primera redacción del informe concluía que la herramienta no servía. Al "
        "revisar la muestra apareció algo que obligó a matizar: las cuatrocientas "
        "cincuenta y cinco tutelas con las que se comparó tenían su fallo registrado por "
        "el propio proceso automático, y ninguna había sido confirmada por una persona. "
        "Se estaba comparando un sistema automático contra otro sistema automático. Un "
        "resultado así indica que ambos no coinciden; no indica cuál de los dos se "
        "equivoca. Las métricas quedaron archivadas en una partición separada, reservada "
        "para desenlaces no verificados, y el modelo se mantiene en calibración a la "
        "espera de que un grupo de abogados valide una muestra.")

    add_paragraph_apa(doc,
        "Hay, por último, algo que sencillamente no se pudo medir. El objetivo de "
        "retorno económico fijado en la primera fase consistía en llevar la gestión de "
        "una factura prejurídica de veinte minutos a dos. Ese objetivo no tiene fuente "
        "de datos, porque la firma no cuenta con módulo de facturación. El proyecto "
        "decidió declararlo como bloqueo y elevarlo al comité en lugar de estimarlo. "
        "Compartimos ese criterio y lo mantenemos en este documento: más adelante "
        "citaremos proyecciones de retorno, pero siempre rotuladas como proyecciones.")

    # ─── 2. Modelo de negocio ───
    add_heading_apa(doc, "El modelo de negocio digital", level=2)

    add_paragraph_apa(doc,
        "La pregunta fundamental de cualquier modelo de negocio digital es cómo gana "
        "dinero y, más importante aún, qué valor genera más allá del ingreso (López "
        "Vargas, 2026). En clase se identificaron cuatro modelos dominantes: "
        "suscripción, comisión por transacción, freemium, y datos y analítica. La "
        "Tabla 2 los evalúa frente a nuestra propuesta siguiendo la lógica del lienzo de "
        "modelo de negocio, que obliga a explicitar la propuesta de valor, los segmentos "
        "de clientes y las fuentes de ingreso antes de comprometer recursos "
        "(Osterwalder y Pigneur, 2011).")

    add_table_caption(doc, "Tabla 2",
        "Modelos de ingreso digital evaluados para la propuesta")
    add_table(doc,
        ["Modelo", "Lógica de ingreso", "Aplicabilidad a Lexalud", "Decisión"],
        [
            ["Suscripción",
             "Pago mensual o anual recurrente por acceso al servicio",
             "Encaja con un despacho que necesita previsibilidad de gasto y con un "
             "software que se usa todos los días",
             "Adoptado como base"],
            ["Comisión por transacción",
             "Porcentaje sobre cada operación intermediada",
             "No aplica: la plataforma no intermedia entre dos partes ni participa del "
             "resultado del litigio",
             "Descartado"],
            ["Freemium",
             "Acceso gratuito básico con funciones de pago",
             "Riesgoso en datos sensibles de salud, donde el control de acceso no "
             "admite una capa gratuita sin trazabilidad",
             "Descartado"],
            ["Datos y analítica",
             "Monetización del conocimiento agregado que genera cada operación",
             "Viable como capa superior, con datos agregados y anonimizados, previo "
             "consentimiento contractual del cliente",
             "Adoptado como complemento"],
        ],
        widths=[Cm(2.8), Cm(3.9), Cm(6.4), Cm(2.4)])
    add_table_note(doc,
        "Elaboración propia. La clasificación de los cuatro modelos dominantes "
        "corresponde a la sesión de clase del 13 de agosto de 2026 (López Vargas, 2026).")

    add_paragraph_apa(doc,
        "La decisión es una suscripción escalonada como fuente principal, complementada "
        "por un componente variable ligado al consumo de inteligencia artificial y por "
        "una capa de analítica sectorial vendida por separado. Elegimos suscripción por "
        "una razón que va más allá de la preferencia de los inversionistas por los "
        "ingresos recurrentes: el cliente al que apuntamos ya piensa en esos términos. "
        "Las firmas del sector vienen migrando del cobro por caso a esquemas de "
        "acompañamiento mensual, precisamente porque el litigio impredecible es "
        "imposible de presupuestar. Vender el software con la misma lógica con la que el "
        "cliente vende su propio servicio reduce la fricción comercial casi a cero.")

    add_paragraph_apa(doc,
        "El componente variable responde a una restricción de costos real. Cada "
        "extracción documental consume llamadas a modelos de lenguaje que tienen precio. "
        "Si el plan fuera plano, un cliente que carga cincuenta mil expedientes en un "
        "mes destruiría el margen. Por eso cada plan incluye un cupo mensual de "
        "procesamiento y el excedente se factura por bloques. Es el mismo principio de "
        "la nube que se discutió en clase: se paga por lo que se usa.")

    add_paragraph_apa(doc,
        "La capa de analítica es la que más valor puede generar a mediano plazo y la que "
        "exige más cuidado. Cada tutela procesada aporta información sobre qué falla, "
        "dónde y con qué frecuencia. Agregada y anonimizada, esa información constituye "
        "un mapa de la fricción del sistema de salud colombiano que hoy no existe de "
        "forma consolidada y que interesa a aseguradoras, prestadores, gremios y "
        "entidades de control. Insistimos en el matiz: agregada, anonimizada y con "
        "autorización contractual expresa. El dato de un paciente no se vende jamás.")

    # ─── 3. Definición del negocio ───
    add_heading_apa(doc, "Definición del negocio", level=2)

    add_heading_apa(doc, "Qué vamos a ofrecer", level=3)

    add_paragraph_apa(doc,
        "Lexalud es una plataforma vertical de gestión jurídica para el sector salud, "
        "entregada como servicio en la nube. Ofrece cinco capacidades. La primera es la "
        "gestión unificada del expediente: un único lugar donde viven el radicado, las "
        "partes, las actuaciones, los documentos y los términos, con auditoría de todos "
        "los cambios. La segunda es la vigilancia judicial automática, que consulta a "
        "diario las fuentes oficiales y detecta las actuaciones nuevas sin que nadie "
        "tenga que revisar el estado de cada proceso. La tercera es la extracción "
        "documental con inteligencia artificial, que convierte un escrito de tutela en "
        "campos estructurados aprovechables para análisis. La cuarta es la analítica "
        "predictiva, que estima el riesgo de incumplir un término y prioriza la carga de "
        "trabajo del equipo. La quinta es el módulo de calidad, que soporta la operación "
        "de un sistema de gestión bajo ISO 9001 dentro de la misma herramienta.")

    add_paragraph_apa(doc,
        "Lo que hace defendible la propuesta no es ninguna de esas capacidades por "
        "separado, porque todas existen en el mercado en versiones genéricas. Es la "
        "verticalidad. Un gestor documental genérico sabe qué es un archivo; no sabe qué "
        "es un desacato, ni que el término para contestar corre en días hábiles, ni que "
        "una impugnación cambia la instancia y con ella el juzgado competente. Ese "
        "conocimiento de dominio, acumulado a lo largo de siete años de operación real, "
        "es lo que un competidor tendría que reconstruir desde cero.")

    add_heading_apa(doc, "Quiénes serán nuestros clientes", level=3)

    add_paragraph_apa(doc,
        "Definimos cuatro segmentos con prioridades distintas. El primero, y el que "
        "atacaremos inicialmente, son las firmas jurídicas especializadas en derecho "
        "médico y de la salud: despachos de entre cinco y cincuenta abogados que ya "
        "litigan volumen y que hoy resuelven con hojas de cálculo y correo electrónico. "
        "Es el segmento donde el dolor está mejor documentado y donde tenemos acceso "
        "directo por la vía gremial, dado que la firma de referencia ha ocupado "
        "posiciones de liderazgo en el colegio profesional del sector.")

    add_paragraph_apa(doc,
        "El segundo son las áreas jurídicas internas de las instituciones prestadoras de "
        "servicios de salud, clínicas y hospitales que gestionan su propia defensa. El "
        "tercero son las entidades aseguradoras y administradoras de planes de "
        "beneficios, que manejan los volúmenes más altos y para las que la analítica de "
        "causa raíz vale más que la gestión del expediente. El cuarto, de largo plazo, "
        "son los gremios y las entidades de control, compradores naturales de la capa "
        "agregada de información.")

    add_paragraph_apa(doc,
        "Esta segmentación sigue el criterio de perfilamiento que Martínez (2019b) "
        "propone para la industria, según el cual el perfil de negocio de un cliente "
        "—su tamaño, su grado de digitalización y su posición en la cadena de valor— "
        "determina qué tipo de solución puede absorber y a qué ritmo. Aplicarlo aquí "
        "evita el error de ofrecer analítica predictiva a un despacho que todavía no "
        "tiene su expediente digitalizado.")

    add_paragraph_apa(doc,
        "El dimensionamiento por tamaño no es arbitrario. La firma de referencia "
        "clasifica a sus clientes en seis tipos según el número de personas de talento "
        "humano del prestador, y ajusta el alcance del servicio a esa escala. "
        "Adoptaremos la misma lógica para los planes, porque ya está validada "
        "comercialmente en el sector y porque el cliente la entiende sin necesidad de "
        "explicación.")

    add_heading_apa(doc, "Cómo vamos a generar ingresos", level=3)

    add_paragraph_apa(doc,
        "La estructura tiene cuatro componentes. El primero es la suscripción mensual, "
        "expresada en salarios mínimos mensuales legales vigentes, como es costumbre en "
        "la contratación de servicios profesionales en Colombia y como ya lo hace la "
        "firma de referencia con sus propios planes. El segundo es el usuario "
        "adicional, que evita el salto abrupto entre planes cuando un despacho crece. "
        "El tercero es el excedente de procesamiento, facturado por bloques cuando el "
        "cliente supera el cupo de extracciones documentales de su plan. El cuarto es "
        "la capa de analítica sectorial, contratada aparte por quienes necesiten "
        "comparación con el agregado del sector. A esto se suman los servicios de "
        "implementación y migración inicial, que se cobran una sola vez y que en este "
        "tipo de producto suelen ser la barrera real de entrada para el cliente.")

    add_table_caption(doc, "Tabla 3",
        "Estructura de planes y componentes de ingreso de la plataforma")
    add_table(doc,
        ["Plan o componente", "Perfil de cliente", "Alcance incluido",
         "Precio mensual", "Equivalente en pesos"],
        [
            ["Esencial",
             "Despacho de 1 a 5 abogados",
             "5 usuarios, 500 expedientes activos, 1.000 extracciones documentales al "
             "mes, vigilancia judicial diaria",
             "0,25 SMMLV", "$ 437.726"],
            ["Profesional",
             "Firma de 6 a 20 abogados",
             "20 usuarios, 5.000 expedientes, 10.000 extracciones, alertas de términos "
             "y tableros de control",
             "1,5 SMMLV", "$ 2.626.358"],
            ["Corporativo",
             "Firma o área jurídica de 21 a 60 abogados",
             "60 usuarios, 50.000 expedientes, analítica predictiva y módulo de calidad "
             "ISO 9001",
             "6 SMMLV", "$ 10.505.430"],
            ["Institucional",
             "Aseguradora, gremio o entidad de control",
             "Despliegue dedicado, interfaz de programación, acuerdo de nivel de "
             "servicio y analítica sectorial",
             "Cotización", "Según alcance"],
            ["Usuario adicional",
             "Planes Esencial a Corporativo",
             "Cada usuario por encima del cupo incluido en el plan contratado",
             "0,06 SMMLV", "$ 105.054"],
            ["Excedente de procesamiento",
             "Cualquier plan",
             "Bloque adicional de 1.000 extracciones documentales sobre el cupo "
             "incluido",
             "0,08 SMMLV", "$ 140.072"],
            ["Analítica sectorial",
             "Complemento de cualquier plan",
             "Comparación mensual contra el agregado anonimizado del sector, con "
             "autorización contractual del cliente",
             "2 SMMLV", "$ 3.501.810"],
            ["Implementación",
             "Cualquier plan, pago único",
             "Migración de datos históricos, parametrización y formación del equipo",
             "1 a 6 SMMLV", "$ 1,75 a 10,5 M"],
        ],
        widths=[Cm(2.9), Cm(3.1), Cm(5.4), Cm(2.0), Cm(2.2)],
        font_size=Pt(8.5))
    add_table_note(doc,
        "Elaboración propia. Los valores se expresan en salarios mínimos mensuales "
        "legales vigentes (SMMLV) y se convierten al SMMLV de 2026, fijado en "
        "$1.750.905 por el Decreto 159 del 19 de febrero de 2026 (Ministerio del "
        "Trabajo, 2026). Constituyen una propuesta de diseño que requiere validación "
        "con clientes reales durante la fase 2 del plan de trabajo.")

    add_paragraph_apa(doc,
        "Conviene contrastar esos valores con el mercado, porque un precio que no se "
        "compara con nada es un número inventado. En el plan Esencial el costo por "
        "usuario es de unos ochenta y siete mil quinientos pesos mensuales; en el "
        "Profesional, de unos ciento treinta y un mil trescientos; y en el Corporativo, "
        "de unos ciento setenta y cinco mil. Con la tasa representativa del mercado de "
        "agosto de 2026, cercana a los tres mil ciento veintinueve pesos por dólar, esa "
        "escalera equivale aproximadamente a veinticuatro, treinta y seis y cuarenta y "
        "nueve euros por usuario al mes.")

    add_paragraph_apa(doc,
        "Los referentes disponibles sitúan el software jurídico básico entre veinte y "
        "cuarenta euros por usuario al mes, el intermedio entre cincuenta y noventa, y "
        "el sistema de gestión legal completo a partir de cien euros (Ubimia, 2025). En "
        "el extremo alto, la plataforma estadounidense Harvey parte de unos cien dólares "
        "por usuario al mes; en el extremo bajo del mercado colombiano, RuleX publica "
        "una tarifa de cuarenta mil pesos mensuales, aunque se trata de un asistente de "
        "consulta y no de una plataforma de gestión (RuleX, 2026). Nuestra escalera se "
        "ubica deliberadamente en la banda baja: el plan Esencial cae dentro del rango "
        "básico europeo y el Corporativo cuesta cerca de la mitad de un sistema de "
        "gestión legal completo, pese a incluir analítica predictiva. Es una decisión de "
        "penetración, no de posicionamiento premium. Un entrante sin marca que además "
        "pide migrar datos históricos no puede cobrar como el líder del mercado.")

    add_paragraph_apa(doc,
        "Hay un supuesto de esta estructura que debemos señalar porque puede volverse en "
        "contra. Denominar el precio en salarios mínimos evita renegociarlo cada año y "
        "protege el ingreso frente a la inflación, y por eso es práctica habitual en la "
        "contratación de servicios profesionales en el país. Pero traslada al cliente "
        "una variación que no controla ninguna de las dos partes: el salario mínimo de "
        "2026 subió cerca del 23 % respecto de 2025, y el decreto que lo fija es "
        "transitorio mientras el Consejo de Estado resuelve la controversia sobre el "
        "aumento (Ministerio del Trabajo, 2026). Un cliente que firmó en 2025 vio subir "
        "su factura casi una cuarta parte sin que el servicio cambiara. La mitigación "
        "que proponemos es un tope contractual de incremento anual, de modo que el "
        "precio siga la denominación en salarios mínimos hasta un límite pactado y por "
        "encima de ese límite se renegocie.")

    add_paragraph_apa(doc,
        "Sobre el margen bruto, la restricción dura es el consumo de modelos de "
        "lenguaje. Con los precios actuales de los proveedores en la nube, una "
        "extracción documental sobre un escrito de tutela cuesta del orden de unas "
        "decenas de pesos, de modo que el cupo de mil extracciones del plan Esencial "
        "representa una fracción menor de su suscripción y el de diez mil del plan "
        "Profesional se mantiene holgadamente por debajo del ingreso. El bloque de "
        "excedente se fijó en 0,08 SMMLV justamente para cubrir el escenario en que el "
        "proveedor encarezca sus tarifas o el cliente cargue documentos mucho más "
        "extensos que el promedio. No es una fuente de ingreso: es un seguro contra la "
        "erosión del margen, que es el sexto riesgo de la Tabla 6.")


    add_paragraph_apa(doc,
        "El margen de este modelo depende de una condición que la clase describió con "
        "precisión: en un negocio digital escalable los ingresos crecen sin que los "
        "costos lo hagan de forma proporcional, y ese espacio entre ambas curvas es el "
        "margen escalable (López Vargas, 2026). En nuestro caso la mayor parte de la "
        "infraestructura ya está construida y amortizada por el proyecto original, de "
        "modo que el costo marginal de atender a un cliente adicional se reduce al "
        "consumo de cómputo y almacenamiento, más el soporte. La excepción es el "
        "consumo de modelos de lenguaje, que sí crece con el uso, y por eso lo aislamos "
        "en un componente variable en lugar de esconderlo en el precio del plan.")

    add_heading_apa(doc, "Qué tecnología vamos a utilizar", level=3)

    add_paragraph_apa(doc,
        "La Figura 3 presenta la arquitectura funcional en cinco capas. No es un "
        "esquema de referencia tomado de un manual: reproduce la estructura de la "
        "plataforma que hoy está en producción, depurada de los elementos heredados que "
        "no tendría sentido replicar en un producto nuevo.")

    add_figure(doc, "figura_3_arquitectura.png", "Figura 3",
        "Arquitectura funcional de la plataforma propuesta",
        "Elaboración propia a partir del mapa de arquitectura del sistema en "
        "producción de la firma de referencia, actualizado el 28 de julio de 2026.")

    add_paragraph_apa(doc,
        "La capa de integración conecta con las fuentes externas: los sistemas de "
        "consulta judicial, los servicios de verificación de identidad y antecedentes, "
        "la firma electrónica —válida en Colombia con plenos efectos jurídicos desde la "
        "Ley 527 de 1999 (Congreso de la República de Colombia, 1999)— y los canales de "
        "correo y mensajería. La capa de datos "
        "sostiene el modelo transaccional, las tablas analíticas derivadas, la "
        "trazabilidad del origen de cada campo y la auditoría de cambios. La capa de "
        "inteligencia artificial concentra la extracción documental, la cascada de "
        "modelos, la analítica predictiva y la búsqueda normativa. Sobre ellas operan la "
        "capa de negocio, con los módulos que el usuario reconoce, y la capa de "
        "experiencia. Esta organización responde al principio que Martínez (2019a) "
        "formula para la industria conectada: la integración de aplicaciones solo "
        "produce valor cuando desemboca en cuadros de mando que la dirección consulta "
        "para decidir. Un tablero que nadie abre es una integración desperdiciada, y por "
        "eso el indicador de adopción es tan importante como el de rendimiento.")

    add_paragraph_apa(doc,
        "El elemento técnico más distintivo es la cascada de modelos. En lugar de "
        "depender de un proveedor único, el sistema define para cada tarea una secuencia "
        "ordenada de modelos y recorre esa lista hasta obtener una respuesta válida, con "
        "un cortacircuitos que retira del intento al modelo que falla varias veces "
        "seguidas y con un modelo local como último respaldo. Las mediciones muestran "
        "por qué importa: en la evaluación de mayo de 2026 el mejor modelo alcanzó una "
        "cobertura del 92,1 % sobre treinta y ocho campos, y en el re-contraste de junio "
        "el orden de los primeros puestos había cambiado por completo sin que ninguno "
        "hubiera cambiado de nombre. Un modelo que era tercero con 47 % pasó a primero "
        "con 64,8 % en un mes. La arquitectura debe asumir que el proveedor se mueve "
        "bajo los pies.")

    add_paragraph_apa(doc,
        "Hay un segundo hallazgo técnico que merece mención porque contradice el "
        "reflejo de aplicar inteligencia artificial a todo. Para asignar el área "
        "responsable de cada tutela se compararon dos caminos: un conjunto de reglas "
        "determinísticas y un modelo de lenguaje. Las reglas resolvieron ochocientos "
        "cincuenta y un registros en menos de un segundo, con resultados reproducibles y "
        "auditables y sin consumir créditos; el modelo habría tardado cerca de treinta "
        "minutos sobre los mismos registros. La cobertura del campo pasó del 93,5 % al "
        "99,99 %. La lección para el producto es que la inteligencia artificial debe "
        "reservarse para lo que solo ella puede hacer, que es interpretar texto libre.")

    add_table_caption(doc, "Tabla 4",
        "Categorías tecnológicas de la plataforma y su función")
    add_table(doc,
        ["Categoría", "Componente", "Función en el producto"],
        [
            ["Nube",
             "Servidor de aplicaciones, servidor web con cifrado automático y "
             "despliegue continuo",
             "Sostiene la operación multiempresa y permite entregar mejoras sin "
             "intervención del cliente"],
            ["Datos e inteligencia de negocio",
             "Base de datos relacional, tablas analíticas derivadas y tableros "
             "precalculados",
             "Convierte la operación diaria en indicadores consultables en tiempo real"],
            ["Inteligencia artificial",
             "Cascada de modelos de lenguaje con respaldo local, búsqueda semántica "
             "sobre normativa y modelos supervisados",
             "Extrae datos de documentos, responde consultas normativas y estima riesgo "
             "procesal"],
            ["Metodologías ágiles",
             "Control de versiones, entregas incrementales y trazabilidad de cada "
             "actividad contra su evidencia",
             "Permite corregir rumbo sin perder el registro de lo comprometido"],
            ["Automatización sin código",
             "Constructor de formularios, plantillas de documentos y reglas de alerta "
             "configurables",
             "Permite que un abogado adapte la herramienta sin depender del equipo "
             "técnico"],
        ],
        widths=[Cm(3.4), Cm(5.6), Cm(6.5)])
    add_table_note(doc,
        "Elaboración propia. Las cinco categorías corresponden a las herramientas "
        "esenciales para la creación de negocios digitales expuestas en la sesión de "
        "clase (López Vargas, 2026).")

    add_heading_apa(doc, "Por qué la transformación digital hace viable la propuesta",
                    level=3)

    add_paragraph_apa(doc,
        "Sin transformación digital este negocio no existe, y no por una razón "
        "retórica. Un despacho tradicional que quisiera ofrecer el mismo servicio "
        "tendría que contratar personal proporcional al número de expedientes de cada "
        "cliente nuevo, con lo cual sus costos crecerían al mismo ritmo que sus "
        "ingresos y no habría margen escalable. La digitalización rompe esa "
        "proporcionalidad: el mismo proceso que revisa mil expedientes revisa "
        "diecisiete mil sin contratar a nadie.")

    add_paragraph_apa(doc,
        "Las otras tres razones para emprender digitalmente que se discutieron en clase "
        "también aplican con nitidez. El acceso a mercados se vuelve nacional desde el "
        "primer día, porque un despacho de Pasto o de Montería se registra igual que uno "
        "de Bogotá y no requiere presencia física. La eficiencia operativa es "
        "precisamente el producto que vendemos, y las cifras de la Figura 1 la "
        "cuantifican. Y la personalización deja de ser un lujo: el modelo de riesgo "
        "prioriza la carga de cada abogado según su historial concreto, no según un "
        "promedio del despacho.")

    add_paragraph_apa(doc,
        "Conviene además situar el argumento en su marco económico. Fugini y Maggiolini "
        "(2018a) advierten, al analizar los costes de un sistema de información, que la "
        "parte visible de la inversión —licencias, equipos, desarrollo— suele ser la "
        "menor, y que los costes de aprendizaje, migración y cambio organizativo "
        "dominan el total. Nuestro modelo traslada casi toda esa carga al proveedor: el "
        "cliente no compra infraestructura ni asume actualizaciones, y la implementación "
        "se cobra explícitamente en lugar de disimularse. Es una aplicación directa de "
        "la lógica del software como servicio, que sustituye la licencia costosa "
        "instalada en servidores propios por una suscripción sobre infraestructura "
        "ajena.")

    # ─── 4. Plan de trabajo ───
    add_heading_apa(doc, "El plan de trabajo", level=2)

    add_paragraph_apa(doc,
        "El plan cubre doce meses, de septiembre de 2026 a agosto de 2027, y está "
        "organizado en ocho fases. La Tabla 5 detalla las actividades con sus fechas de "
        "inicio y término, su responsable y su entregable; la Figura 4 las representa en "
        "el tiempo para hacer visibles los solapamientos, que son deliberados.")

    add_table_caption(doc, "Tabla 5",
        "Plan de trabajo: actividades, tiempos, responsables y entregables")
    add_table(doc,
        ["Fase", "Actividad", "Inicio", "Término", "Responsable", "Entregable"],
        [
            ["F1", "Entrevistas de validación con quince despachos del sector",
             "01/09/2026", "15/10/2026", "M. F. Ruiz Paipilla",
             "Informe de validación de mercado"],
            ["F1", "Definición del producto mínimo viable y sus límites",
             "01/10/2026", "31/10/2026", "A. Oviedo Fadul",
             "Especificación funcional"],
            ["F2", "Diseño del modelo de negocio y lienzo Canvas",
             "16/10/2026", "30/11/2026", "M. F. Ruiz Paipilla",
             "Lienzo de modelo de negocio"],
            ["F2", "Estructura de precios y validación con clientes potenciales",
             "01/11/2026", "15/12/2026", "M. F. Ruiz Paipilla",
             "Tarifario validado"],
            ["F3", "Rediseño de la arquitectura para operación multiempresa",
             "01/11/2026", "31/01/2027", "A. Oviedo Fadul",
             "Documento de arquitectura"],
            ["F3", "Migración del núcleo y separación de datos por cliente",
             "15/12/2026", "28/02/2027", "A. Oviedo Fadul",
             "Entorno multiempresa operativo"],
            ["F4", "Centralización del catálogo de modelos y cascadas por tarea",
             "01/01/2027", "31/03/2027", "A. Oviedo Fadul",
             "Motor de inteligencia artificial"],
            ["F4", "Trazabilidad del origen del dato y auditoría de escrituras",
             "01/02/2027", "30/04/2027", "A. Oviedo Fadul",
             "Módulo de gobierno del dato"],
            ["F5", "Selección y contratación de tres firmas piloto",
             "01/03/2027", "15/04/2027", "M. F. Ruiz Paipilla",
             "Acuerdos de piloto firmados"],
            ["F5", "Acompañamiento, formación y medición del piloto",
             "16/04/2027", "31/05/2027", "Responsabilidad compartida",
             "Informe de resultados del piloto"],
            ["F6", "Adecuación a la Ley 1581 de 2012 y política de tratamiento",
             "01/04/2027", "31/05/2027", "A. Oviedo Fadul",
             "Política de tratamiento de datos"],
            ["F6", "Auditoría de seguridad y pruebas de intrusión",
             "01/05/2027", "30/06/2027", "A. Oviedo Fadul",
             "Informe de auditoría de seguridad"],
            ["F7", "Búsqueda de antecedentes marcarios y registro del signo ante la Superintendencia de Industria y Comercio",
             "01/06/2027", "31/07/2027", "M. F. Ruiz Paipilla",
             "Solicitud de registro de marca radicada"],
            ["F7", "Construcción de la marca y del material comercial",
             "01/06/2027", "15/07/2027", "M. F. Ruiz Paipilla",
             "Material comercial y sitio web"],
            ["F7", "Apertura de ventas y alianza con el gremio del sector",
             "16/07/2027", "31/08/2027", "M. F. Ruiz Paipilla",
             "Primeros diez clientes contratados"],
            ["F8", "Puesta en marcha del soporte y del acuerdo de servicio",
             "01/07/2027", "31/08/2027", "Responsabilidad compartida",
             "Protocolo de soporte"],
            ["F8", "Tablero de indicadores del negocio y primera medición",
             "01/08/2027", "31/08/2027", "A. Oviedo Fadul",
             "Tablero de indicadores"],
        ],
        widths=[Cm(1.2), Cm(4.6), Cm(1.9), Cm(1.9), Cm(3.0), Cm(3.4)],
        font_size=Pt(8.5))
    add_table_note(doc,
        "Elaboración propia. Los solapamientos entre fases son deliberados: la "
        "construcción técnica avanza en paralelo con la validación comercial para evitar "
        "desarrollar funcionalidades que el mercado no haya confirmado.")

    add_figure(doc, "figura_4_cronograma.png", "Figura 4",
        "Cronograma del plan de trabajo, septiembre de 2026 a agosto de 2027",
        "Elaboración propia. La línea punteada marca el cierre del año 2026. Las "
        "iniciales corresponden a los responsables de cada fase.")

    add_paragraph_apa(doc,
        "Los actores involucrados exceden al equipo de dos personas. Del proyecto "
        "original heredamos una estructura de roles que funcionó y que replicaremos. El "
        "patrocinador aprueba resultados y autoriza el cierre de cada fase. El "
        "responsable del proyecto coordina y valida el cumplimiento del plan. El equipo "
        "técnico implementa y prueba. Y hay un rol que aprendimos a no subestimar: los "
        "usuarios expertos, abogados en ejercicio que validan que el comportamiento del "
        "sistema corresponde a la realidad procesal. En el proyecto de referencia la "
        "fase de evaluación estuvo bloqueada al cero por ciento durante casi un mes "
        "porque el comité no había designado a esos validadores, y sin ellos ninguna "
        "métrica de calidad podía cerrarse. En nuestro plan, la contratación de las "
        "firmas piloto de la fase 5 cumple esa función y por eso antecede a la auditoría "
        "y al lanzamiento.")

    add_paragraph_apa(doc,
        "El reparto de responsabilidades entre los dos integrantes obedece a los "
        "perfiles. Alexander Oviedo Fadul asume producto, arquitectura, inteligencia "
        "artificial y gobierno del dato, por su formación dual en ingeniería de sistemas "
        "y derecho y por haber liderado técnicamente la implementación de referencia. "
        "Maria Fernanda Ruiz Paipilla asume validación de mercado, modelo de negocio, "
        "precios, relación con clientes y lanzamiento comercial. Las fases de piloto y "
        "de operación son compartidas, porque exigen traducir permanentemente entre lo "
        "que el sistema hace y lo que el cliente entiende que hace.")

    # ─── 5. Mercado ───
    add_heading_apa(doc, "El mercado y la competencia", level=2)

    add_paragraph_apa(doc,
        "Colombia es hoy el tercer ecosistema de emprendimiento tecnológico de América "
        "Latina, con más de cuatro mil empresas tecnológicas activas y una concentración "
        "cercana al 12 % de la inversión de riesgo regional, equivalente a unos "
        "quinientos trece millones de dólares, solo por detrás de Brasil y México "
        "(López Vargas, 2026). El sector digital representa cerca de trescientos setenta "
        "mil empleos y crece entre el 10 % y el 15 % anual. Ese contexto importa porque "
        "un inversionista global no apuesta al azar: apuesta cuando ve un mercado grande "
        "e ineficiente listo para ser transformado. El litigio en salud reúne las tres "
        "condiciones.")

    add_paragraph_apa(doc,
        "En cuanto a la competencia, el panorama se divide en cuatro grupos. El primero "
        "son los sistemas de gestión jurídica generalistas, encabezados en la región por "
        "la suite de Lemontech, que reporta más de trece mil usuarios en catorce países "
        "de América Latina. Cubren el expediente, los tiempos y la facturación, pero "
        "desconocen el dominio de la salud y no incorporan analítica de causa raíz. El "
        "segundo son las herramientas de vigilancia judicial, como CaseTracking, del "
        "mismo grupo, que rastrea movimientos procesales para firmas como Dentons, "
        "Garrigues, Deloitte, Grupo Sura y Falabella: resuelven una sola función muy "
        "bien y obligan al despacho a sostener el resto de su operación en paralelo "
        "(Lemontech, 2026).")

    add_paragraph_apa(doc,
        "El tercer grupo es el de los asistentes jurídicos con inteligencia artificial "
        "entrenados en derecho colombiano, un segmento que creció con rapidez: Lexivox "
        "opera sobre una base de millones de referencias normativas, IUSTIN se orienta al "
        "análisis de expedientes, Lexius a la consulta asistida y RuleX al mismo terreno "
        "con tarifa pública (RuleX, 2026). Responden preguntas; no gestionan la "
        "operación. El cuarto grupo son los desarrollos internos a la medida, que es lo "
        "que hoy hacen las entidades grandes y que resulta caro de mantener y difícil de "
        "actualizar.")

    add_paragraph_apa(doc,
        "El hallazgo relevante de este barrido es lo que no aparece. Al revisar los "
        "mapas disponibles del ecosistema legaltech colombiano no encontramos una sola "
        "plataforma especializada en derecho de la salud ni en el ciclo completo de la "
        "acción de tutela (Lemontech, 2026; RuleX, 2026). Existen sistemas de gestión "
        "que sirven a cualquier área del derecho y existen asistentes que responden "
        "consultas normativas, pero el nicho vertical está vacío. Esa es exactamente la "
        "posición que buscamos: profundidad de dominio equivalente a la de un desarrollo "
        "interno, con el costo y la velocidad de actualización de un producto de "
        "suscripción. Conviene no leer ese vacío como una garantía: un nicho desatendido "
        "puede estarlo porque nadie ha sabido atenderlo o porque no da para sostener una "
        "empresa, y distinguir entre ambas explicaciones es justamente el objetivo de la "
        "fase 1 del plan de trabajo.")

    add_paragraph_apa(doc,
        "Sobre el retorno esperado debemos ser explícitos. La propuesta técnica que la "
        "firma de referencia presentó a un cliente institucional en octubre de 2025 "
        "estimó, para una entidad con quinientos mil afiliados y seiscientas tutelas "
        "anuales, un beneficio de seiscientos dos millones de pesos frente a un costo de "
        "cincuenta y cinco millones, equivalente a un retorno del 994 % en el primer "
        "año. Ese cálculo es una proyección ilustrativa y el propio documento lo advierte "
        "en su texto. No es un resultado verificado, y no lo presentamos como tal. El "
        "retorno económico real sigue sin poder medirse por la ausencia del módulo de "
        "facturación, y establecer ese instrumento de medición es una de las tareas de la "
        "fase 8 del plan.")

    add_paragraph_apa(doc,
        "Mantener esa distinción no es escrúpulo académico. González et al. (2021) "
        "sostienen que una buena decisión financiera se juzga por la calidad de la "
        "información y del proceso que la sustentan, no por el resultado que termina "
        "produciendo, porque un acierto obtenido con datos deficientes solo enseña a "
        "repetir el método equivocado. Un inversionista al que se le presenta un 994 % "
        "de retorno sin advertirle que es una proyección no está tomando una decisión "
        "informada, y esa omisión se paga más tarde. Preferimos entrar a la conversación "
        "con la cifra pequeña que podemos defender antes que con la grande que no.")

    # ─── 6. Riesgos ───
    add_heading_apa(doc, "Riesgos y mitigación", level=2)

    add_paragraph_apa(doc,
        "La Tabla 6 recoge los seis riesgos que consideramos determinantes. Cuatro de "
        "ellos no son hipotéticos: se materializaron durante el proyecto de referencia "
        "y por eso la mitigación que proponemos ya está probada. Los dos restantes, el "
        "incumplimiento normativo y la erosión del margen, no llegaron a ocurrir, "
        "pero su impacto justifica anticiparlos.")

    add_table_caption(doc, "Tabla 6",
        "Matriz de riesgos del proyecto y medidas de mitigación")
    add_table(doc,
        ["Riesgo", "Prob.", "Impacto", "Mitigación", "Responsable"],
        [
            ["El proveedor de modelos retira o modifica los modelos sin previo aviso",
             "Alta", "Alto",
             "Catálogo centralizado, cascadas con respaldo local y verificación "
             "automática mensual del estado de cada modelo",
             "A. Oviedo Fadul"],
            ["El proceso automático genera datos plausibles pero falsos",
             "Alta", "Muy alto",
             "Marca obligatoria de procedencia en cada escritura; el campo sin dato se "
             "deja vacío y nunca se infiere",
             "A. Oviedo Fadul"],
            ["Incumplimiento del régimen de protección de datos personales",
             "Media", "Muy alto",
             "Adecuación a la Ley 1581 de 2012, cifrado, control de acceso por rol y "
             "auditoría de consultas",
             "A. Oviedo Fadul"],
            ["Baja adopción: la herramienta funciona pero nadie la usa",
             "Alta", "Alto",
             "Usuarios expertos vinculados desde el piloto, formación incluida en la "
             "implementación y medición mensual de uso",
             "Responsabilidad compartida"],
            ["Concentración del conocimiento técnico en una sola persona",
             "Alta", "Alto",
             "Documentación obligatoria por entregable, revisión cruzada del código e "
             "incorporación de un segundo perfil técnico en la fase 5",
             "A. Oviedo Fadul"],
            ["El costo variable de inteligencia artificial erosiona el margen",
             "Media", "Medio",
             "Cupo de procesamiento por plan, facturación del excedente y uso de reglas "
             "determinísticas donde sean suficientes",
             "M. F. Ruiz Paipilla"],
        ],
        widths=[Cm(3.6), Cm(1.4), Cm(1.5), Cm(6.0), Cm(3.0)],
        font_size=Pt(8.5))
    add_table_note(doc,
        "Elaboración propia. La probabilidad se califica como alta, media o baja "
        "según la frecuencia observada en el proyecto de referencia entre abril de 2025 "
        "y agosto de 2026.")

    add_paragraph_apa(doc,
        "El quinto riesgo merece un comentario, porque nos incomoda. En el proyecto de "
        "referencia, 2.182 de los 2.275 cambios registrados en el repositorio "
        "corresponden a una sola persona, es decir, el 95,9 %. Eso produjo una velocidad "
        "de ejecución notable y una fragilidad igual de notable. Un negocio que aspire a "
        "vender un servicio con acuerdos de nivel de servicio no puede sostenerse sobre "
        "esa concentración, y por eso la incorporación de un segundo perfil técnico está "
        "en el plan y no en la lista de deseos.")

    # ═══════════════════ CONCLUSIONES ═══════════════════
    doc.add_page_break()
    add_heading_apa(doc, "Conclusiones", level=1)

    add_paragraph_apa(doc,
        "El problema del que partimos era concreto: en el litigio en salud colombiano "
        "el volumen de expedientes desbordó la capacidad de gestionarlos manualmente, y "
        "esa saturación se traduce en términos vencidos, sanciones evitables y "
        "decisiones tomadas por intuición en lugar de por evidencia. La respuesta que "
        "construimos es Lexalud, una plataforma vertical de software como servicio que "
        "unifica el expediente, vigila los despachos de forma automática, extrae datos "
        "estructurados de los documentos mediante inteligencia artificial, estima el "
        "riesgo de incumplir un término y soporta el sistema de gestión de calidad de la "
        "firma.")

    add_paragraph_apa(doc,
        "La resolución del problema no es una promesa. Está medida sobre una "
        "implementación real. El tablero de analítica pasó de ciento cuatro segundos "
        "—es decir, de no funcionar— a menos de sesenta milisegundos. La vigilancia "
        "judicial pasó de entre doce y quince expedientes mensuales a mil ochocientos "
        "tres. "
        "El cumplimiento de plazos en la atención de requerimientos subió del 11,6 % de "
        "mayo al 70,9 % de agosto de 2026. La extracción documental mejoró del 78,9 % "
        "al 92,1 % de cobertura sobre treinta y ocho campos, y el tiempo por expediente "
        "bajó de unos treinta segundos a unos doce, lo que convirtió una tarea inviable "
        "—enriquecer once mil ochocientos expedientes— en un proceso de unas seis horas. "
        "El modelo de riesgo de incumplimiento alcanzó un área bajo la curva de 0,795 "
        "medido contra desenlaces reales, y en veintisiete días de operación autónoma el "
        "motor produjo ochenta mil quinientas cuarenta y nueve predicciones.")

    add_paragraph_apa(doc,
        "Los objetivos de aprendizaje que la actividad planteaba se alcanzaron por esa "
        "misma vía. Comprender la conceptualización de un negocio en la transformación "
        "digital dejó de ser un ejercicio abstracto cuando tuvimos que decidir, con "
        "argumentos, por qué la suscripción y la analítica sirven a este producto y por "
        "qué la comisión y el freemium no. Definir las herramientas necesarias dejó de "
        "ser una lista de tecnologías cuando el criterio de selección pasó a ser el "
        "costo de la dependencia: elegimos cascadas de modelos con respaldo local porque "
        "medimos qué ocurre cuando un proveedor retira diecinueve modelos sin avisar, y "
        "elegimos reglas determinísticas donde bastan porque medimos que resuelven en un "
        "segundo lo que un modelo tarda media hora.")

    add_paragraph_apa(doc,
        "Si tuviéramos que quedarnos con un solo aprendizaje, no sería técnico. Durante "
        "meses el sistema reportó una cobertura de información del 51,7 % que era "
        "falsa, porque contaba como campo cubierto una frase constante repetida en miles "
        "de expedientes. Al depurarla, la cifra bajó al 49,2 %. Ese descenso es el mejor "
        "resultado del proyecto: es el momento en que la métrica dejó de ser un adorno y "
        "empezó a soportar una decisión. En un negocio que vende analítica sobre datos "
        "sensibles, la trazabilidad del origen del dato no es una funcionalidad "
        "secundaria, es el producto. Un competidor puede copiar la interfaz en meses; la "
        "disciplina de distinguir lo que se sabe de lo que se supone se aprende "
        "equivocándose, y nosotros ya pagamos esa factura.")

    add_paragraph_apa(doc,
        "Quedan cosas sin resolver y preferimos nombrarlas. El retorno económico no "
        "está verificado, porque no existe todavía el instrumento que lo mida; las "
        "proyecciones que citamos son proyecciones. El modelo de éxito de tutela no "
        "discrimina y permanece en calibración hasta que un grupo de abogados valide una "
        "muestra con desenlaces confirmados por personas. Y la estructura de precios de "
        "la Tabla 3 es una propuesta de diseño que la fase 2 del plan deberá confirmar o "
        "corregir frente a clientes reales. Ninguna de las tres invalida la propuesta, "
        "pero las tres delimitan lo que hoy podemos afirmar.")

    add_paragraph_apa(doc,
        "Cerramos con la reflexión que la actividad propone. Apropiarse de los modelos "
        "de negocio digitales existentes forma líderes capaces de conducir procesos de "
        "transformación y genera confianza con la alta dirección. En nuestro caso el "
        "recorrido fue el inverso y quizá más útil: primero condujimos la "
        "transformación, con sus aciertos y sus rectificaciones, y solo después "
        "reconocimos en ella un modelo de negocio que puede sostenerse por sí mismo. La "
        "transformación digital, como se dijo en clase, no es una meta sino un camino "
        "continuo de aprendizaje, adaptación y creación de valor. Este proyecto es el "
        "punto donde ese camino deja de ser un servicio para un cliente y empieza a ser "
        "una empresa posible.")

    # ═══════════════════ REFERENCIAS ═══════════════════
    doc.add_page_break()
    add_heading_apa(doc, "Referencias", level=1)

    referencias = [
        "Chapman, P., Clinton, J., Kerber, R., Khabaza, T., Reinartz, T., Shearer, C. "
        "y Wirth, R. (2000). CRISP-DM 1.0: Step-by-step data mining guide. SPSS Inc.",

        "Congreso de la República de Colombia. (1999, 18 de agosto). Ley 527 de 1999. "
        "Por medio de la cual se define y reglamenta el acceso y uso de los mensajes de "
        "datos, del comercio electrónico y de las firmas digitales. Diario Oficial "
        "No. 43.673.",

        "Congreso de la República de Colombia. (2012, 17 de octubre). Ley 1581 de 2012. "
        "Por la cual se dictan disposiciones generales para la protección de datos "
        "personales. Diario Oficial No. 48.587.",

        "Corte Constitucional de Colombia. (2008, 31 de julio). Sentencia T-760 de "
        "2008 [M. P. Manuel José Cepeda Espinosa].",

        "Fugini, M. y Maggiolini, P. (2018a). El análisis de los costes de un sistema de "
        "información. En Sistemas y tecnologías de la información en las organizaciones "
        "(pp. 241-262). Difusora Larousse - Ediciones Pirámide.",

        "Fugini, M. y Maggiolini, P. (2018b). La economía de los sistemas de "
        "información. En Sistemas y tecnologías de la información en las organizaciones "
        "(pp. 199-225). Difusora Larousse - Ediciones Pirámide.",

        "González, M., Guzmán, A. y Trujillo, M. (2021). Chapter 1. What is a good "
        "financial decision? En Value-based financial management: Towards a systematic "
        "process for financial decision-making (pp. 18-30). Colegio de Estudios "
        "Superiores de Administración.",

        "Lemontech. (2026). Legaltech en Colombia: mapa de empresas y herramientas "
        "para abogados. https://blog.lemontech.com/firmas-legales/legaltech-colombia",

        "López Vargas, J. D. (2026, 13 de agosto). Modelos de negocio digital y "
        "herramientas para la creación de negocios en la transformación digital "
        "[Sesión de clase]. NRC-8775 Electiva en Transformación Digital, Corporación "
        "Universitaria Minuto de Dios.",

        "Martínez, J. (2019a). Integración de aplicaciones y cuadros de mando. En "
        "Industria 4.0: la transformación digital en la industria (pp. 111-136). "
        "Editorial UOC.",

        "Martínez, J. (2019b). Perfiles de negocio y de industria. En Industria 4.0: la "
        "transformación digital en la industria (pp. 105-108). Editorial UOC.",

        "Ministerio del Trabajo de Colombia. (2026, 19 de febrero). Decreto 159 de "
        "2026, por el cual se fija transitoriamente el salario mínimo legal mensual "
        "vigente para el año 2026.",

        "Osterwalder, A. y Pigneur, Y. (2011). Generación de modelos de negocio: un "
        "manual para visionarios, revolucionarios y retadores. Deusto.",

        "RuleX. (2026). Las mejores IA para abogados en Colombia. "
        "https://rulex.org/mejores-ia-para-abogados-colombia",

        "Ubimia. (2025). ¿Cuánto cuesta un software jurídico en 2025? Precios, "
        "licencias y lo que nadie te cuenta. "
        "https://legaltech.ubimia.com/cuanto-cuesta-un-software-juridico-en-2025-"
        "precios-licencias-y-lo-que-nadie-te-cuenta/",
    ]

    for referencia in referencias:
        add_reference(doc, referencia)

    return doc


def main():
    doc = build_document()
    doc.save(SALIDA)
    print(f"Documento generado: {SALIDA}")


if __name__ == "__main__":
    main()
