Files
balam/propuesta/Propuesta-Balam.html
JohannVelazquez 2bdf5064d7 Propuesta v1.2: factura inicial de 30 h vinculada al arranque
Actualiza la propuesta comercial (fuente MD + HTML/PDF regenerado) para
dejar explícita la facturación inicial de 30 h ($18,000 + IVA) ligada al
arranque, conforme a lo pedido por Balam en el kickoff del 1-jul. Se
mantiene el mismo archivo (Propuesta-Balam.pdf/html) como única versión
vigente en el repo.
2026-07-02 17:31:02 -06:00

822 lines
64 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Propuesta Comercial — Plataforma de Automatización Financiera · Balam</title>
<style>
:root{
--ink:#1C2B39; /* deep slate navy — headings, dark fields */
--ink-2:#3C4A57; /* body text */
--muted:#6E7A86; /* meta, captions */
--hair:#E4E8EC; /* hairlines */
--hair-2:#C9D1D8; /* stronger hairlines */
--accent:#BC5B3E; /* terracotta accent */
--accent-d:#9A4530; /* darker terracotta for small text */
--accent-tint:#FBF1EC;/* pale terracotta wash */
--cream:#F8F5F0; /* warm panel */
--paper:#FFFFFF;
--ok:#2E7D5B;
--warn:#C0892E;
--no:#B23A48;
--serif:'Caladea','Bitstream Charter','DejaVu Serif',Georgia,serif;
--sans:'Carlito','DejaVu Sans','Noto Sans',system-ui,sans-serif;
--mono:'DejaVu Sans Mono','Liberation Mono',monospace;
}
*{ -webkit-print-color-adjust:exact; print-color-adjust:exact; box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
font-family:var(--sans);
font-size:10.25pt;
line-height:1.55;
color:var(--ink-2);
background:var(--paper);
-webkit-font-smoothing:antialiased;
}
@page{ size:Letter; margin:15mm 16mm 18mm 16mm; }
@page :first{ margin:0; }
p{ margin:6pt 0; }
strong,b{ font-weight:700; color:var(--ink); }
em,i{ font-style:italic; }
a{ color:var(--accent-d); text-decoration:none; }
code{
font-family:var(--mono); font-size:8.6pt;
background:var(--cream); border:.5pt solid var(--hair);
border-radius:3pt; padding:.5pt 3pt; color:var(--ink);
}
ul,ol{ margin:6pt 0; padding-left:17pt; }
li{ margin:3pt 0; line-height:1.5; color:var(--ink-2); padding-left:2pt; }
li::marker{ color:var(--accent); }
ol li::marker{ color:var(--accent-d); font-weight:700; }
/* ---------------- COVER ---------------- */
.cover{
width:216mm; min-height:279mm;
background:var(--ink);
color:#EAEDF0;
padding:30mm 26mm 24mm;
display:flex; flex-direction:column;
position:relative; overflow:hidden;
}
.cover::after{ /* faint geometric corner motif */
content:""; position:absolute; right:-60mm; top:-60mm;
width:150mm; height:150mm; border-radius:50%;
background:radial-gradient(circle at center, rgba(188,91,62,.18), rgba(188,91,62,0) 70%);
}
.cover .top{ position:relative; z-index:2; }
.cover .rule{ width:46pt; height:3pt; background:var(--accent); margin-bottom:14pt; }
.cover .eyebrow{
font-family:var(--sans); font-size:10pt; font-weight:700;
letter-spacing:.34em; text-transform:uppercase; color:#D89A82;
}
.cover .mid{ position:relative; z-index:2; margin-top:auto; margin-bottom:auto; padding:18mm 0; }
.cover h1{
font-family:var(--serif); font-weight:700;
font-size:37pt; line-height:1.06; letter-spacing:-.01em;
margin:0; color:#FFFFFF; max-width:150mm;
}
.cover .client{
margin-top:16pt; font-family:var(--sans); font-size:12.5pt; color:#C9D1D8;
}
.cover .client b{ color:var(--accent); font-weight:700; }
.cover .meta{ position:relative; z-index:2; }
.cover .meta-grid{
display:grid; grid-template-columns:34mm 1fr;
gap:7pt 14pt; border-top:.6pt solid rgba(255,255,255,.18);
padding-top:14pt;
}
.cover .meta-grid dt{
font-family:var(--sans); font-size:7.5pt; font-weight:700;
letter-spacing:.12em; text-transform:uppercase; color:#8FA0AD; padding-top:1.5pt;
}
.cover .meta-grid dd{ margin:0; font-size:9.5pt; color:#DDE3E8; line-height:1.45; }
.cover .meta-grid dd .who{ display:block; }
.cover .meta-grid dd .who b{ color:#FFFFFF; font-weight:700; }
.cover .meta-grid dd .who span{ color:#9FB0BC; }
.cover .conf{
position:relative; z-index:2; margin-top:18pt;
display:flex; justify-content:space-between; align-items:baseline;
font-family:var(--sans); font-size:8pt; letter-spacing:.06em;
text-transform:uppercase; color:#7C8B97;
border-top:.6pt solid rgba(255,255,255,.12); padding-top:10pt;
}
.cover .conf .badge{ color:var(--accent); font-weight:700; }
/* ---------------- TOC ---------------- */
.toc{ break-before:page; padding-top:6mm; }
.toc h2{
font-family:var(--serif); font-size:20pt; color:var(--ink);
margin:0 0 2pt; font-weight:700;
}
.toc .kick{
font-family:var(--sans); font-size:8pt; font-weight:700; letter-spacing:.2em;
text-transform:uppercase; color:var(--accent-d); margin-bottom:14pt;
}
.toc .rule{ width:46pt; height:2.5pt; background:var(--accent); margin:6pt 0 16pt; }
.toc-row{ display:flex; align-items:baseline; gap:9pt; padding:6.5pt 0; border-bottom:.5pt solid var(--hair); }
.toc-row .n{ font-family:var(--serif); font-weight:700; font-size:11pt; color:var(--accent); min-width:24pt; }
.toc-row .t{ font-family:var(--serif); font-size:11.5pt; color:var(--ink); }
.toc-row.section .t{ font-weight:700; }
.toc-row .dots{ flex:1; border-bottom:.6pt dotted var(--hair-2); transform:translateY(-3pt); }
.toc-row .pg{ font-family:var(--sans); font-size:9.5pt; color:var(--muted); font-variant-numeric:tabular-nums; min-width:14pt; text-align:right; }
.toc-row.annex{ margin-top:2pt; }
.toc-row.annex .n,.toc-row.annex .t{ color:var(--ink); }
.toc-row.annex .n{ color:var(--accent); }
/* ---------------- CONTENT ---------------- */
.content{ break-before:page; }
.sec{ margin-top:20pt; }
.sec:first-child{ margin-top:0; }
.sec-head{
display:flex; align-items:baseline; gap:14pt;
margin:0 0 9pt; padding-bottom:8pt;
border-bottom:1.2pt solid var(--ink); break-after:avoid;
}
.sec-head.no-num{ gap:0; }
.sec-num{
font-family:var(--serif); font-size:29pt; font-weight:700;
color:var(--accent); line-height:.85; letter-spacing:-.02em; min-width:38pt;
}
.sec-head h2{
font-family:var(--serif); font-size:18pt; font-weight:700;
color:var(--ink); line-height:1.12; margin:0;
}
.sec-head .kick{
display:block; font-family:var(--sans); font-size:7.5pt; font-weight:700;
letter-spacing:.16em; text-transform:uppercase; color:var(--accent-d); margin-bottom:3pt;
}
h3{ font-family:var(--sans); font-size:11.5pt; font-weight:700; color:var(--ink); margin:15pt 0 5pt; break-after:avoid; }
h3 .sn{ color:var(--accent-d); font-weight:700; margin-right:7pt; }
h4{ font-family:var(--sans); font-size:10pt; font-weight:700; color:var(--ink); margin:12pt 0 4pt; break-after:avoid; }
.mini-label{
font-family:var(--sans); font-size:8pt; font-weight:700; letter-spacing:.1em;
text-transform:uppercase; color:var(--accent-d); margin:10pt 0 4pt;
}
.lede{ font-size:11pt; line-height:1.62; color:var(--ink); }
/* drop cap for executive summary */
.dropcap > p:first-of-type::first-letter{
font-family:var(--serif); font-weight:700; color:var(--accent);
font-size:38pt; line-height:.82; float:left; padding:2pt 7pt 0 0;
}
/* ETAPA block */
.etapa{ margin:16pt 0 5pt; padding-top:9pt; border-top:.8pt solid var(--hair-2); break-after:avoid; }
.etapa .et-t{ font-family:var(--serif); font-size:13pt; font-weight:700; color:var(--ink); line-height:1.2; }
.etapa .et-meta{ font-family:var(--sans); font-size:8.5pt; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--accent-d); margin-top:3pt; }
/* ---------------- TABLES ---------------- */
table{ width:100%; border-collapse:collapse; margin:10pt 0; font-size:9.2pt; }
thead{ display:table-header-group; }
th{
text-align:left; font-family:var(--sans); font-weight:700; color:var(--ink);
font-size:7.8pt; letter-spacing:.045em; text-transform:uppercase;
padding:7pt 9pt; border-bottom:1.4pt solid var(--ink); vertical-align:bottom;
}
td{ padding:6.5pt 9pt; border-bottom:.6pt solid var(--hair); vertical-align:top; color:var(--ink-2); line-height:1.42; }
tr{ break-inside:avoid; }
td.k{ color:var(--ink); font-weight:600; }
.num,th.num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ctr,th.ctr{ text-align:center; }
tr.total td{ font-weight:700; color:var(--ink); background:var(--cream); border-top:1.2pt solid var(--ink); border-bottom:1.2pt solid var(--ink); }
tr.sub-total td{ font-weight:700; color:var(--ink); background:var(--accent-tint); border-top:1pt solid var(--accent); }
.cov{ font-size:11pt; text-align:center; line-height:1; }
table.compact td,table.compact th{ padding:5.5pt 8pt; }
/* ---------------- CALLOUTS ---------------- */
.callout{
break-inside:avoid; background:var(--accent-tint);
border-left:3pt solid var(--accent); border-radius:0 4pt 4pt 0;
padding:9pt 14pt; margin:11pt 0; font-size:9.4pt; line-height:1.5; color:var(--ink-2);
}
.callout strong,.callout b{ color:var(--accent-d); }
.callout.cool{ background:var(--cream); border-left-color:var(--ink); }
.callout.cool strong,.callout.cool b{ color:var(--ink); }
/* ---------------- FLOW CHIPS ---------------- */
.flow{
break-inside:avoid; display:flex; flex-wrap:wrap; align-items:center; justify-content:center;
gap:6pt; margin:14pt 0; padding:14pt 12pt; background:var(--cream); border-radius:7pt;
}
.chip{
font-family:var(--sans); font-weight:600; font-size:9pt; color:var(--ink);
background:#fff; border:.7pt solid var(--hair-2); padding:5pt 11pt; border-radius:20pt;
box-shadow:0 1pt 2pt rgba(28,43,57,.05);
}
.chip.accent{ background:var(--accent); color:#fff; border-color:var(--accent); }
.arrow{ color:var(--accent); font-weight:700; font-size:11pt; }
/* ---------------- SYNTHESIS CARDS ---------------- */
.synthesis{ display:grid; grid-template-columns:1fr 1fr; gap:9pt; margin:12pt 0; break-inside:avoid; }
.scard{ border:.7pt solid var(--hair); border-top:2.5pt solid var(--accent); border-radius:5pt; padding:9pt 12pt; background:#fff; }
.scard .lab{ font-family:var(--sans); font-size:7.3pt; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--accent-d); margin-bottom:3pt; }
.scard .big{ font-family:var(--serif); font-size:13pt; font-weight:700; color:var(--ink); line-height:1.15; }
.scard .val{ font-size:9pt; color:var(--ink-2); line-height:1.42; }
.scard .sm{ font-size:8.2pt; color:var(--muted); margin-top:2pt; }
/* sign-off */
.signoff{ margin-top:24pt; padding-top:14pt; border-top:1.2pt solid var(--ink); break-inside:avoid; }
.signoff .nm{ font-family:var(--serif); font-size:14pt; font-weight:700; color:var(--ink); }
.signoff .rl{ font-family:var(--sans); font-size:9pt; color:var(--muted); margin-top:2pt; letter-spacing:.03em; }
hr.div{ border:none; border-top:.6pt solid var(--hair); margin:16pt 0; }
.spacer{ height:4pt; }
</style>
</head>
<body>
<!-- ============ COVER ============ -->
<div class="cover">
<div class="top">
<div class="rule"></div>
<div class="eyebrow">Propuesta Comercial</div>
</div>
<div class="mid">
<h1>Plataforma de Automatización Financiera</h1>
<div class="client"><b>Balam</b></div>
</div>
<div class="meta">
<dl class="meta-grid">
<dt>Preparada por</dt>
<dd>Johann Velazquez — Consultor de Software · Monterrey, N.L.</dd>
<dt>Fecha</dt>
<dd>29 de mayo de 2026</dd>
<dt>Versión</dt>
<dd>1.2 — ajustes comerciales acordados 1-jul-2026</dd>
<dt>Vigencia</dt>
<dd>30 días naturales a partir de la fecha de emisión</dd>
</dl>
<div class="conf">
<span class="badge">Documento confidencial</span>
<span>Vigencia 30 días naturales</span>
</div>
</div>
</div>
<!-- ============ TOC ============ -->
<div class="toc">
<div class="kick">Contenido</div>
<h2>Índice</h2>
<div class="rule"></div>
<div class="toc-row"><span class="n"></span><span class="t">Resumen ejecutivo</span><span class="dots"></span><span class="pg">{{PG_execsum}}</span></div>
<div class="toc-row section"><span class="n">01</span><span class="t">Entendimiento del proyecto</span><span class="dots"></span><span class="pg">{{PG_1}}</span></div>
<div class="toc-row section"><span class="n">02</span><span class="t">Alcance detallado</span><span class="dots"></span><span class="pg">{{PG_2}}</span></div>
<div class="toc-row section"><span class="n">03</span><span class="t">Modelo de colaboración</span><span class="dots"></span><span class="pg">{{PG_3}}</span></div>
<div class="toc-row section"><span class="n">04</span><span class="t">Inversión</span><span class="dots"></span><span class="pg">{{PG_4}}</span></div>
<div class="toc-row section"><span class="n">05</span><span class="t">Soporte posterior al MVP</span><span class="dots"></span><span class="pg">{{PG_5}}</span></div>
<div class="toc-row section"><span class="n">06</span><span class="t">Costos de servicios de terceros</span><span class="dots"></span><span class="pg">{{PG_6}}</span></div>
<div class="toc-row section"><span class="n">07</span><span class="t">Supuestos y dependencias</span><span class="dots"></span><span class="pg">{{PG_7}}</span></div>
<div class="toc-row section"><span class="n">08</span><span class="t">Entregables y propiedad</span><span class="dots"></span><span class="pg">{{PG_8}}</span></div>
<div class="toc-row section"><span class="n">09</span><span class="t">Fuera del alcance de esta etapa</span><span class="dots"></span><span class="pg">{{PG_9}}</span></div>
<div class="toc-row section"><span class="n">10</span><span class="t">Garantía y condiciones generales</span><span class="dots"></span><span class="pg">{{PG_10}}</span></div>
<div class="toc-row section"><span class="n">11</span><span class="t">Próximos pasos</span><span class="dots"></span><span class="pg">{{PG_11}}</span></div>
<div class="toc-row annex"><span class="n">A</span><span class="t">Anexo A — Trazabilidad PRD ↔ MVP</span><span class="dots"></span><span class="pg">{{PG_anexoA}}</span></div>
<div class="toc-row annex"><span class="n">B</span><span class="t">Anexo B — Cotización indicativa de fases posteriores</span><span class="dots"></span><span class="pg">{{PG_anexoB}}</span></div>
</div>
<!-- ============ CONTENT ============ -->
<main class="content">
<!-- ===== RESUMEN EJECUTIVO ===== -->
<section class="sec">
<div class="sec-head no-num"><h2>Resumen ejecutivo</h2></div>
<div class="dropcap">
<p>Balam opera hoy un proceso financiero fragmentado: facturación, cobranza, conciliación y contabilidad viven en sistemas que no se comunican, y el trabajo de unirlos recae en personas. Cada traspaso manual introduce error, retrabajo y demoras de cobranza que erosionan la relación con los clientes estratégicos.</p>
</div>
<p>Esta propuesta plantea una <strong>primera etapa enfocada</strong>: una plataforma web que centraliza la facturación y las cuentas por cobrar sobre <strong>BIND ERP</strong>, el sistema ya confirmado como fuente de verdad. El MVP permite <strong>emitir facturas en MXN y USD</strong> desde la plataforma —creando la cotización y convirtiéndola en factura a través de la API de BIND, que conserva el timbrado CFDI— y entrega además visibilidad, dashboard, alertas y reglas de cobranza. Toda emisión opera con <strong>confirmación humana y modo de simulación</strong>, de modo que la prioridad #1 de Balam (facturación) se atiende sin asumir riesgos fiscales. La arquitectura queda preparada para incorporar conciliación bancaria, pagos en línea, contabilidad e integraciones adicionales conforme se validen.</p>
<p class="mini-label">En síntesis</p>
<div class="synthesis">
<div class="scard">
<div class="lab">Alcance</div>
<div class="val">MVP de facturación (consulta y <strong>emisión asistida</strong> MXN/USD) y cobranza sobre la API de BIND ERP.</div>
</div>
<div class="scard">
<div class="lab">Plazo</div>
<div class="big">6 a 7 semanas</div>
<div class="sm">a media dedicación.</div>
</div>
<div class="scard">
<div class="lab">Inversión</div>
<div class="big">$67,200 $81,600 MXN</div>
<div class="sm">+ IVA · tiempo y materiales con tope por etapa.</div>
</div>
<div class="scard">
<div class="lab">Modelo</div>
<div class="val">Transparencia total de horas, entregables verificables semana a semana, y código propiedad de Balam desde el primer día.</div>
</div>
</div>
<p>El enfoque responde directamente a la indicación del CTO de priorizar facturación e integrar únicamente BIND en esta primera fase, evitando comprometer alcance que dependa de integraciones aún no disponibles o no prioritarias.</p>
</section>
<!-- ===== 1. ENTENDIMIENTO DEL PROYECTO ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">01</div><div><h2>Entendimiento del proyecto</h2></div></div>
<h3><span class="sn">1.1</span>El problema</h3>
<p>Durante la sesión con el equipo directivo, la lectura del requerimiento fue clara: <em>"El proceso está tan desvinculado… pasa por varias manos… cada parte humana se está equivocando."</em> El reto no es de naturaleza técnica, sino operativa y económica. Cada traspaso manual entre nómina, facturación, cobranza, conciliación y contabilidad genera errores que se traducen en dinero perdido, retrabajo y deterioro en la relación con clientes clave.</p>
<h3><span class="sn">1.2</span>Contexto que define el alcance</h3>
<p>Tras la sesión de seguimiento y las actualizaciones del CTO del 25 de mayo, tres factores reordenan el alcance del MVP:</p>
<ol>
<li><strong>BIND ERP cuenta con API oficial</strong> (<code>api.bind.com.mx</code>, OData v3, 20,000 solicitudes/día). Esto permite una integración por API en tiempo cercano a real, superando el supuesto inicial de exportación manual de archivos.</li>
<li><strong>La dirección técnica priorizó la facturación.</strong> Conforme a la indicación de considerar "únicamente BIND ERP en una primera etapa", funcionalidades como pagos en línea, conciliación bancaria, recordatorios automáticos a clientes y asientos contables se difieren de manera explícita a fases posteriores.</li>
<li><strong>BUK dispone de API</strong>, confirmada por el equipo de Balam, aunque no constituye una prioridad inmediata. Queda contemplada en el roadmap sin condicionar el MVP.</li>
</ol>
<h3><span class="sn">1.3</span>Sistemas actuales</h3>
<table>
<thead><tr><th>Sistema</th><th>Función</th><th>Estatus en el MVP</th></tr></thead>
<tbody>
<tr><td class="k">BIND ERP</td><td>Facturación y contabilidad con PAC integrado</td><td>Integración principal (API confirmada)</td></tr>
<tr><td class="k">BUK</td><td>Recursos humanos, contratos, nómina</td><td>Fuera de alcance (API disponible, fase posterior)</td></tr>
<tr><td class="k">Jira</td><td>Gestión de proyectos y servicios</td><td>Fuera de alcance</td></tr>
<tr><td class="k">Banca (3 instituciones)</td><td>2 México + IBC Bank Texas, estados en PDF</td><td>Fuera de alcance</td></tr>
</tbody>
</table>
<h3><span class="sn">1.4</span>Solución propuesta</h3>
<p>Se propone una <strong>capa de operaciones financieras sobre BIND ERP</strong>, no un reemplazo. BIND conserva su rol como fuente de verdad para facturación, timbrado CFDI y contabilidad; la plataforma orquesta la visibilidad, las reglas de cobranza, el tablero directivo y la trazabilidad que hoy no existen de forma centralizada.</p>
<p><strong>Alcance funcional del MVP:</strong></p>
<ul>
<li>Integración con BIND ERP vía API: lectura primero y <strong>escritura asistida</strong> una vez validada en Discovery.</li>
<li><strong>Emisión de facturas desde la plataforma:</strong> creación de cotización y conversión a factura en MXN (con IVA) y USD (sin IVA, para clientes extranjeros) a través de la API de BIND, con timbrado a cargo del PAC de BIND, confirmación humana obligatoria y modo de simulación (<em>dry-run</em>) previo a cada emisión.</li>
<li>Catálogo central de clientes con lista blanca configurable (ACUNTIA + Top 3).</li>
<li>Vista unificada de facturación: estados, vencimientos, filtros y descarga de PDF/XML.</li>
<li>Cobranza operativa: antigüedad de cartera (<em>aging</em>) y alertas internas para el equipo de Finanzas.</li>
<li>Tablero financiero con indicadores de cuentas por cobrar, vencidas y próximas a vencer.</li>
<li>Reportes exportables en CSV/XLSX.</li>
<li>Operación multimoneda MXN y USD, con tipo de cambio del DOF capturado al momento de la facturación.</li>
<li>Autenticación y control de acceso por roles (Finanzas, Dirección, Operaciones, Administración).</li>
<li>Arquitectura preparada para multi-tenant y bitácora de auditoría universal.</li>
</ul>
<p><strong>Visión integral (fases posteriores, cotizadas en el Anexo B):</strong></p>
<p>La arquitectura del MVP se diseña para cerrar progresivamente el ciclo financiero descrito por la dirección:</p>
<div class="flow">
<span class="chip">Jira <small>(horas)</small></span><span class="arrow"></span>
<span class="chip">BUK <small>(nómina)</small></span><span class="arrow"></span>
<span class="chip accent">Plataforma</span><span class="arrow"></span>
<span class="chip">Factura</span><span class="arrow"></span>
<span class="chip">Cobranza</span><span class="arrow"></span>
<span class="chip">Conciliación</span><span class="arrow"></span>
<span class="chip">Asiento</span>
</div>
<p>La incorporación posterior de pagos en línea, recordatorios automáticos, conciliación bancaria, asientos contables o BUK se realiza <strong>sobre la misma base, sin reescribir lo construido</strong>.</p>
<div class="callout"><strong>Sobre la automatización y los "agentes".</strong> El MVP incluye automatización operativa <strong>por reglas</strong> (sincronización con BIND, alertas de vencimiento y reportes programados). Los <strong>agentes con IA/LLM</strong> (clasificación de transacciones, detección de anomalías) quedan para fase posterior, conforme el propio PRD los define como opcionales y a evaluar post-MVP.</div>
<h3><span class="sn">1.5</span>Criterios de éxito de la primera etapa</h3>
<ul>
<li>Emisión de facturas en MXN y USD desde la plataforma, con confirmación humana y sin incidentes fiscales.</li>
<li>Visibilidad en tiempo cercano a real del estado de facturación y cuentas por cobrar, para Dirección y Finanzas.</li>
<li>Reducción medible del trabajo manual de consulta y reporteo sobre BIND.</li>
<li>Aplicación correcta de la lista blanca: ACUNTIA y Top 3 nunca reciben recordatorios automáticos masivos.</li>
<li>Entrega del MVP funcional en el plazo comprometido, con alcance acotado y sin desviaciones.</li>
<li>Control fiscal: ninguna factura se emite sin confirmación humana explícita; el timbrado CFDI permanece a cargo del PAC de BIND.</li>
</ul>
<h3><span class="sn">1.6</span>Escala operativa de referencia</h3>
<ul>
<li>45 colaboradores en nómina y 5 freelancers.</li>
<li>Aproximadamente 50 facturas emitidas al mes.</li>
<li>3 instituciones bancarias (2 México + IBC Bank Texas) — fuera de esta etapa.</li>
<li>2 jurisdicciones fiscales (México y Texas, impuestos estándar en el MVP).</li>
<li>Interlocutores operativos: Pedro (contacto técnico) y gerencia administrativa, con supervisión ejecutiva de Noe (CTO), Araceli (CEO) y Erika (PM).</li>
</ul>
</section>
<!-- ===== 2. ALCANCE DETALLADO ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">02</div><div><h2>Alcance detallado</h2></div></div>
<div class="callout"><strong>Principio rector.</strong> Un MVP entrega valor real en el menor tiempo posible con el alcance <strong>mínimo viable</strong>, no con todo lo deseable. Lo que no forma parte de esta etapa se documenta en el roadmap (Anexo B) con cotización indicativa.</div>
<div class="callout cool"><strong>Posicionamiento.</strong> La plataforma es una capa de operaciones financieras sobre BIND ERP. BIND permanece como fuente de verdad para facturación, timbrado CFDI y contabilidad; la plataforma aporta visibilidad, reglas de cobranza, tablero y trazabilidad.</div>
<h3>Stack tecnológico propuesto</h3>
<p>La selección tecnológica privilegia robustez empresarial, mantenibilidad a largo plazo y afinidad con Azure. El binomio <strong>.NET + Azure</strong> es una combinación nativa de Microsoft, lo que reduce fricción de despliegue, seguridad y operación para una aplicación financiera.</p>
<table class="compact">
<thead><tr><th>Capa</th><th>Tecnología</th><th>Versión objetivo</th><th>Justificación</th></tr></thead>
<tbody>
<tr><td class="k">Frontend</td><td><strong>Angular + Angular Material</strong></td><td>Angular 21 · Material 21</td><td>SPA escalable, fuertemente tipada y de estructura opinada; componentes de datos listos para las vistas de facturación y cobranza.</td></tr>
<tr><td class="k">Backend</td><td><strong>C# / .NET (ASP.NET Core Web API)</strong></td><td>.NET 10 (LTS) · C# 14</td><td>Tipado fuerte, madurez empresarial y desempeño; soporte de primera clase en Azure.</td></tr>
<tr><td class="k">Acceso a datos</td><td><strong>Entity Framework Core</strong> (proveedor Npgsql)</td><td>EF Core 10 · Npgsql 10</td><td>Modelo tipado y migraciones versionadas, con control fino para multi-tenant y bitácora.</td></tr>
<tr><td class="k">Base de datos</td><td><strong>Azure Database for PostgreSQL Flexible</strong></td><td>PostgreSQL 17</td><td>Base productiva administrada (Azure SQL Database queda como alternativa nativa de .NET si Balam lo prefiere).</td></tr>
<tr><td class="k">Infraestructura</td><td><strong>Azure App Service · Key Vault · Application Insights · Blob Storage</strong></td><td>runtime .NET 10 (Linux)</td><td>Cómputo administrado, gestión de secretos cifrada y observabilidad integradas.</td></tr>
<tr><td class="k">Integración BIND</td><td><strong>Cliente .NET tipado</strong> sobre la API OData de BIND</td><td>.NET 10 · HttpClient + Polly</td><td>Reintentos, manejo de límites de uso y mapeo de errores; contrato validado previamente en el sandbox de descubrimiento.</td></tr>
<tr><td class="k">Control de acceso</td><td><strong>ASP.NET Core Identity + JWT</strong>, autorización por roles</td><td>incluido en .NET 10</td><td>Cuatro roles (Finanzas, Dirección, Operaciones, Administración).</td></tr>
<tr><td class="k">Entrega continua</td><td><strong>GitHub + CI/CD</strong> (GitHub Actions / Azure DevOps)</td><td></td><td>Despliegues controlados con validación automatizada.</td></tr>
</tbody>
</table>
<div class="callout"><strong>Sobre las versiones.</strong> Las versiones indicadas son la referencia vigente a mayo de 2026; se fijan al inicio del proyecto sobre la rama estable/LTS de cada tecnología. Se prioriza <strong>.NET 10</strong> por ser versión de soporte extendido (LTS), apropiada para una aplicación financiera de largo plazo.</div>
<p>El proyecto se organiza en cuatro etapas secuenciales. Cada una concluye con un entregable demostrable y se factura conforme a horas reales (ver §3).</p>
<div class="etapa"><div class="et-t">Etapa 0 — Discovery, infraestructura y prototipo visual</div><div class="et-meta">Semana 1 · 18 22 h</div></div>
<p><strong>Objetivo.</strong> Validar el comportamiento real de la API de BIND con la cuenta de Balam, preparar la infraestructura en Azure, dejar el repositorio operativo y <strong>entregar un prototipo visual navegable</strong> que alinee expectativas de producto antes de iniciar el desarrollo del backend.</p>
<div class="mini-label">Entregables</div>
<ul>
<li>Validación de la API de BIND con cuenta real: recursos <code>Invoices</code>, <code>Payments</code>, <code>Customers</code>, <code>Products</code> y <code>Activities</code>; confirmación de los campos <code>saldo</code>, <code>vencimiento</code> y <code>estado</code>, y del comportamiento de paginación OData.</li>
<li>Confirmación de los límites de uso (20,000 solicitudes/día) y definición de la estrategia de consumo.</li>
<li>Infraestructura base en Azure: App Service, PostgreSQL Flexible, Storage, Key Vault y Application Insights; ambiente de staging preparado.</li>
<li>Repositorio monorepo con CI/CD, gestión de secretos y guardrails de seguridad del flujo de trabajo asistido por IA.</li>
<li>Documento de hallazgos, decisiones de arquitectura (ADRs) iniciales y plan refinado de las etapas siguientes.</li>
<li><strong>Prototipo visual navegable</strong> (con la identidad del manual de marca aplicada) de las 56 pantallas principales: inicio de sesión, tablero financiero, listado de facturas, detalle de factura, catálogo de clientes con lista blanca y configuración de alertas. Con datos de ejemplo y navegación real, para validar las decisiones de experiencia con Pedro y Araceli antes de construir.</li>
</ul>
<div class="callout"><strong>Riesgo a validar en Discovery.</strong> BIND documenta públicamente los recursos <code>Customers</code>, <code>Products</code> y <code>Activities</code>; <code>Invoices</code> y <code>Payments</code> son esperados, pero los nombres exactos de campos y la disponibilidad del saldo abierto por factura solo se confirman con la cuenta real. Se contemplan tres escenarios: <strong>Plan A</strong> (BIND expone el saldo directamente) y <strong>Plan B</strong> (el saldo se calcula como total suma de pagos) están cubiertos por el rango cotizado; el <strong>Plan C</strong> (interfaz propia para registro manual de pagos por parte de Finanzas, con un esfuerzo adicional estimado de 68 h <strong>no incluidas en el rango</strong>) se evaluaría y aprobaría al cierre de esta etapa antes de continuar.</div>
<div class="etapa"><div class="et-t">Etapa 1 — Plataforma base y sincronización con BIND</div><div class="et-meta">Semanas 2-3 · 32 39 h</div></div>
<p><strong>Objetivo.</strong> Plataforma funcional que ingiere clientes y facturas de BIND vía API, los normaliza, mantiene su trazabilidad y habilita la capa de escritura controlada.</p>
<div class="mini-label">Entregables</div>
<ul>
<li>Backend con autenticación, control de acceso por roles (Finanzas, Dirección, Operaciones, Administración) y bitácora de auditoría universal.</li>
<li>Arquitectura multi-tenant a nivel de esquema (<code>tenant_id</code> + RLS), sin alta autoservicio.</li>
<li>Cliente de la API de BIND con doble encabezado de autenticación, reintentos con backoff, manejo de límites de uso, constructor de consultas OData y mapeo de errores.</li>
<li><strong>Capa de escritura controlada:</strong> operaciones de creación de cotización y conversión a factura, envueltas en un mecanismo de simulación (<em>dry-run</em>), confirmación y feature flag, con registro en bitácora de toda llamada de escritura.</li>
<li>Sincronización programada de clientes (normalización y deduplicación).</li>
<li>Sincronización programada de facturas y cotizaciones (estado normalizado, captura de tipo de cambio y manejo de paginación OData).</li>
<li>Modelo central de facturas con estados (Emitida, Vigente, Vencida, Pagada, Cancelada).</li>
<li>Migraciones versionadas y datos de prueba.</li>
</ul>
<div class="callout"><strong>Nota fiscal.</strong> La plataforma <strong>no timbra directamente</strong>; el timbrado CFDI permanece en el PAC integrado de BIND. La plataforma orquesta la creación de cotizaciones y facturas mediante la API de BIND. Toda operación de escritura permanece desactivada (feature flag) hasta validar su comportamiento en Discovery, y ninguna emisión ocurre sin confirmación humana explícita.</div>
<div class="etapa"><div class="et-t">Etapa 2 — Facturación (consulta y emisión), catálogo y multimoneda</div><div class="et-meta">Semanas 4-5 · 38 46 h</div></div>
<p><strong>Objetivo.</strong> Llevar a producción la interfaz validada en el prototipo, conectada al backend real, habilitando tanto la consulta como la <strong>emisión asistida de facturas</strong> en MXN y USD, con catálogo de clientes y soporte multimoneda.</p>
<div class="mini-label">Entregables</div>
<ul>
<li>Implementación productiva de las pantallas validadas (componentes de Angular Material con la identidad ya aplicada en la Etapa 0).</li>
<li>Integración del frontend con el backend (autenticación, ruteo, gestión de estado y caché).</li>
<li>Listado de facturas con filtros (cliente, moneda, fecha, vencimiento, estatus), búsqueda, paginación y ordenamiento.</li>
<li>Detalle de factura con descarga de PDF/XML desde BIND.</li>
<li><strong>Creación de cotizaciones</strong> desde la plataforma y <strong>conversión a factura</strong> vía API de BIND.</li>
<li><strong>Emisión multimoneda:</strong> MXN con IVA y USD sin IVA para clientes extranjeros, conforme a las reglas fiscales aplicables.</li>
<li><strong>Flujo de emisión con confirmación humana obligatoria y modo de simulación (<em>dry-run</em>):</strong> ninguna factura se emite sin aprobación explícita; toda operación de escritura queda registrada en bitácora.</li>
<li>Catálogo de clientes con la bandera de lista blanca configurable (ACUNTIA + Top 3), editable por el rol de Administración.</li>
<li>Tipo de cambio del DOF (proceso programado y captura al momento de la facturación) para la conversión MXN ↔ USD.</li>
<li>Exportación de facturas y clientes a CSV/XLSX.</li>
<li>Manual de usuario para los equipos de Finanzas y Dirección.</li>
</ul>
<div class="callout cool"><strong>Fuera de esta etapa:</strong> generación automática de facturas desde eventos de negocio (Jira → BUK → factura), soporte EUR e integración con BUK. El timbrado CFDI permanece a cargo del PAC de BIND.</div>
<div class="etapa"><div class="et-t">Etapa 3 — Cobranza, tablero, reportes y cierre</div><div class="et-meta">Semanas 6-7 · 24 29 h</div></div>
<p><strong>Objetivo.</strong> Cerrar el flujo operativo con visibilidad para Dirección y realizar la entrega formal.</p>
<div class="mini-label">Entregables</div>
<ul>
<li>Módulo de cobranza: antigüedad de cartera (30/60/90 días) y vistas de facturas por vencer y vencidas.</li>
<li>Alertas internas configurables para Finanzas (5 días antes del vencimiento, facturas vencidas y registros con datos faltantes).</li>
<li>Aplicación de la lista blanca: ACUNTIA y Top 3 nunca generan alertas automáticas de envío masivo.</li>
<li>Tablero directivo con indicadores de cuentas por cobrar totales y por cliente, vencidas, próximas a vencer, monto pendiente por cliente y estado de alertas.</li>
<li>Reporte operativo configurable (frecuencia, destinatarios y formato CSV/XLSX/PDF).</li>
<li>Endurecimiento de seguridad y revisión de secretos.</li>
<li>Respaldos automáticos y plan de recuperación documentado.</li>
<li>Documentación técnica: README, runbook operativo y ADRs.</li>
<li>Sesión de capacitación grabada (1.52 h) con Pedro y la gerencia administrativa.</li>
<li>Transferencia y soporte posterior al lanzamiento de 2 semanas (corrección de defectos).</li>
</ul>
<div class="callout cool"><strong>Fuera de esta etapa:</strong> recordatorios automáticos a clientes, pagos en línea, conciliación bancaria, asientos contables automáticos e integración bancaria en vivo.</div>
</section>
<!-- ===== 3. MODELO DE COLABORACIÓN ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">03</div><div><h2>Modelo de colaboración</h2></div></div>
<h3><span class="sn">3.1</span>Esquema: tiempo y materiales con tope por etapa</h3>
<p>El proyecto se desarrolla bajo un esquema de <strong>horas reales con tarifa transparente</strong>, no de precio cerrado. El alcance preciso de la integración con BIND —campos exactos, comportamiento de <code>Invoices</code> y <code>Payments</code>, manejo de saldos— solo se conoce al inspeccionar la API en vivo con la cuenta de Balam. Un precio fijo obligaría a incorporar un margen de contingencia que encarecería el proyecto de forma innecesaria.</p>
<p>A cambio de esta flexibilidad, el esquema ofrece controles concretos:</p>
<ul>
<li><strong>Rango estimado por etapa</strong> (mínimomáximo de horas), acordado por escrito antes de iniciar cada una.</li>
<li><strong>Tope por etapa:</strong> de aproximarse al máximo del rango, el trabajo se detiene y se revisa el alcance con Balam antes de continuar. El rango opera como referencia de control, no como sugerencia.</li>
<li><strong>Reporte semanal</strong> de horas trabajadas con desglose por tarea.</li>
<li><strong>Demostración semanal</strong> del avance entregado.</li>
</ul>
<h3><span class="sn">3.2</span>Dedicación y plazo</h3>
<p>La dedicación es de <strong>media jornada (aproximadamente 20 h/semana</strong>, con flexibilidad hasta 25 h en semanas de mayor carga). Sobre esa base, la primera etapa requiere <strong>112 a 136 horas</strong>, equivalentes a <strong>6 7 semanas</strong> de calendario.</p>
<h3><span class="sn">3.3</span>Tarifa y facturación</h3>
<ul>
<li><strong>Tarifa:</strong> <strong>$600 MXN por hora trabajada</strong> + IVA, con comprobante fiscal CFDI 4.0. Aplica de igual forma a las fases posteriores (Anexo B) y al paquete de mantenimiento opcional (§5).</li>
<li><strong>Facturación:</strong> semanal, los viernes, por las horas de la semana previa. Cada factura incluye el anexo con el desglose de horas por tarea y etapa.</li>
<li><strong>Pago:</strong> a 30 días naturales posteriores a la factura, mediante transferencia. Aplica a todas las etapas.</li>
<li><strong>Sin anticipo (política Balam).</strong> Se emite factura por las primeras 30 horas de arranque al inicio; pago a 30 días. Arranque condicionado a contrato u orden de trabajo firmado.</li>
</ul>
<h3><span class="sn">3.4</span>Comunicación</h3>
<ul>
<li>Reportes asíncronos 23 veces por semana (avance, siguientes pasos y bloqueadores).</li>
<li>Demostración semanal (30 min, viernes) con Pedro y la gerencia administrativa.</li>
<li>Sesión técnica con Noe (1 h) para decisiones de arquitectura y validación de reglas de negocio, que podría realizarse al comenzar cada fase.</li>
<li>Disponibilidad para reuniones urgentes con 24 h de anticipación, en horario laboral (9:0018:00, CST).</li>
</ul>
<h3><span class="sn">3.5</span>Metodología de desarrollo asistido por IA</h3>
<p>El desarrollo se apoya en herramientas de asistencia por IA (Claude Code, de Anthropic) como acelerador de productividad. Por transparencia y cumplimiento, se hacen explícitos los siguientes compromisos:</p>
<ul>
<li><strong>Responsabilidad humana.</strong> Todo el código entregado es revisado y validado por el proveedor. La IA es un asistente; la responsabilidad de cada línea integrada al repositorio es de Johann Velazquez.</li>
<li><strong>Protección de datos.</strong> Ningún dato real de Balam (clientes, montos, credenciales, XML reales) se comparte con modelos externos. El desarrollo se realiza con datos sintéticos derivados de la estructura, no del contenido. Las credenciales residen en gestores de secretos cifrados.</li>
<li><strong>Cumplimiento.</strong> La metodología se apega a la práctica habitual para el manejo de datos financieros: sin entrenamiento ni telemetría sobre datos del cliente, y con el código alojado en el repositorio de Balam desde el primer día.</li>
<li><strong>Auditabilidad.</strong> Las decisiones de arquitectura quedan registradas en ADRs versionados.</li>
</ul>
<div class="callout">El detalle técnico de esta metodología, así como la referencia a las políticas de Anthropic, puede ampliarse en una sesión específica o anexo a solicitud del equipo técnico de Balam.</div>
</section>
<!-- ===== 4. INVERSIÓN ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">04</div><div><h2>Inversión</h2></div></div>
<p>La inversión de la primera etapa se desglosa por entregable, conforme al esquema de tiempo y materiales:</p>
<table>
<thead><tr><th>Etapa</th><th>Entregable principal</th><th class="num">Rango (horas)</th><th class="num">Inversión (MXN)</th></tr></thead>
<tbody>
<tr><td class="k ctr">0</td><td>Discovery, infraestructura Azure y <strong>prototipo visual navegable</strong></td><td class="num">18 22</td><td class="num">$10,800 $13,200</td></tr>
<tr><td class="k ctr">1</td><td>Plataforma base, sincronización con BIND y capa de escritura</td><td class="num">32 39</td><td class="num">$19,200 $23,400</td></tr>
<tr><td class="k ctr">2</td><td>Facturación (consulta y <strong>emisión</strong> MXN/USD), catálogo y multimoneda</td><td class="num">38 46</td><td class="num">$22,800 $27,600</td></tr>
<tr><td class="k ctr">3</td><td>Cobranza, tablero, reportes y cierre</td><td class="num">24 29</td><td class="num">$14,400 $17,400</td></tr>
<tr class="total"><td colspan="2">Total primera etapa</td><td class="num">112 136 h</td><td class="num">$67,200 $81,600</td></tr>
</tbody>
</table>
<div class="callout cool">Cifras antes de IVA. Plazo estimado: <strong>6 7 semanas</strong> a media jornada (~20 h/semana, con flexibilidad hasta 25 h en semanas pico).</div>
<div class="callout">El esquema de control por etapa busca que la inversión se concentre en la parte baja del rango; el margen superior cubre eventualidades del Discovery con BIND. Toda variación se comunica antes de incurrir en ella.</div>
</section>
<!-- ===== 5. SOPORTE POSTERIOR AL MVP ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">05</div><div><h2>Soporte posterior al MVP</h2></div></div>
<h3><span class="sn">5.1</span>Garantía incluida</h3>
<ul>
<li><strong>Defectos en funcionalidad entregada:</strong> cobertura sin costo durante <strong>45 días</strong> posteriores a la entrega de cada etapa.</li>
<li><strong>Soporte posterior al lanzamiento:</strong> <strong>2 semanas</strong> tras el cierre del MVP, para corrección de defectos (no nuevo alcance).</li>
</ul>
<h3><span class="sn">5.2</span>Bolsa de horas de soporte (opcional)</h3>
<p>Concluida la garantía incluida, se ofrece una bolsa de horas a la misma tarifa de $600 MXN/h, con vigencia de 12 meses y sin caducidad mensual: las horas se consumen conforme se necesiten, sin obligación de uso mínimo por mes.</p>
<table>
<thead><tr><th>Bolsa</th><th class="num">Horas</th><th class="num">Inversión (sin IVA)</th></tr></thead>
<tbody>
<tr><td class="k">Bolsa 10</td><td class="num">10 h</td><td class="num">$6,000</td></tr>
<tr><td class="k">Bolsa 20</td><td class="num">20 h</td><td class="num">$12,000</td></tr>
<tr><td class="k">Bolsa 40</td><td class="num">40 h</td><td class="num">$24,000</td></tr>
</tbody>
</table>
<p><strong>Incluye:</strong> corrección de defectos fuera de garantía; ajustes menores y requerimientos pequeños dentro de las horas de la bolsa; mantenimiento de dependencias y compatibilidad ante cambios de la API de BIND; monitoreo de la plataforma con atención a incidencias en 1 día hábil; y reporte de horas consumidas tras cada intervención.</p>
<p><strong>No incluye:</strong> desarrollo de los módulos diferidos (Anexo B); migraciones o cambios mayores de arquitectura; ni incidentes atribuibles a terceros (Azure, BIND, SAT).</p>
<p><strong>Términos:</strong> las horas tienen vigencia de 12 meses desde la compra de la bolsa, sin caducidad mensual ni compromiso mínimo; se consumen en incrementos de 15 minutos. Su activación es opcional y puede contratarse al cierre del MVP o más adelante.</p>
</section>
<!-- ===== 6. COSTOS DE TERCEROS ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">06</div><div><h2>Costos de servicios de terceros <span style="font-size:11pt;font-weight:400;color:var(--muted)">(a cargo de Balam)</span></h2></div></div>
<p>Los siguientes son servicios de infraestructura externos, independientes de los honorarios del proveedor:</p>
<table class="compact">
<thead><tr><th>Servicio</th><th>Configuración</th><th class="num">Costo mensual (USD)</th></tr></thead>
<tbody>
<tr><td class="k">Azure App Service (Linux, Basic)</td><td>B1 (mínimo) → B2/B3 (recomendado); el proceso en segundo plano corre como WebJob en el mismo plan</td><td class="num">$13 $51</td></tr>
<tr><td class="k">Azure Database for PostgreSQL Flexible</td><td>Burstable B1ms (mínimo) → B2s (recomendado) + 3264 GiB de almacenamiento y respaldo</td><td class="num">$16 $65</td></tr>
<tr><td class="k">Azure Blob Storage (Hot, LRS)</td><td>PDF/XML y exportaciones (pocos GB)</td><td class="num">$1 $5</td></tr>
<tr><td class="k">Azure Key Vault + Application Insights</td><td>Secretos (Standard) + observabilidad (5 GB/mes incluidos, luego por GB)</td><td class="num">$0 $15</td></tr>
<tr><td class="k">Monitoreo de disponibilidad / Sentry <em>(opcional)</em></td><td>Plan gratuito → Team</td><td class="num">$0 $26</td></tr>
<tr><td class="k">PAC para CFDI</td><td>Ya incluido en BIND</td><td class="num">Sin costo adicional</td></tr>
<tr class="total"><td colspan="2">Total mensual estimado</td><td class="num">$30 $160 USD/mes</td></tr>
</tbody>
</table>
<div class="callout cool"><strong>Configuración esperada en producción</strong> (App Service B2 + PostgreSQL B2s con respaldo + observabilidad básica): <strong>≈ $90 $110 USD/mes</strong>. El extremo bajo de la tabla corresponde a una configuración mínima; el alto, a una holgada con redundancia y monitoreo de pago.</div>
<div class="callout"><strong>Detalle de tarifas unitarias verificadas</strong> (precios de lista <em>pay-as-you-go</em>, regiones de EE. UU. — East US / South Central US — referencia a mayo de 2026; la región Azure <strong>México Central</strong> puede variar ligeramente): App Service Linux <strong>B1 ≈ $13.14</strong>, <strong>B2 ≈ $25.55</strong>, <strong>B3 ≈ $51.10</strong>/mes · PostgreSQL Burstable <strong>B1ms ≈ $12.41</strong>, <strong>B2s ≈ $49.64</strong>/mes; almacenamiento ≈ <strong>$0.1150.138/GiB-mes</strong>, respaldo sobre lo provisionado ≈ <strong>$0.095/GiB-mes</strong> · Blob Hot LRS ≈ <strong>$0.018/GB-mes</strong> · Key Vault Standard <strong>$0.03 / 10,000 operaciones</strong> · Application Insights <strong>5 GB/mes incluidos</strong>, luego ≈ <strong>$2.302.76/GB</strong>.</div>
<div class="callout">Los costos de Azure pueden optimizarse mediante <strong>instancias reservadas</strong> (13 años, hasta ~3040% de ahorro en cómputo), una vez validado el consumo real (36 meses posteriores al lanzamiento).</div>
<div class="callout">En fases posteriores se incorporarían: Stripe (3.6% + $3 MXN por transacción con tarjeta; ~$3 MXN por SPEI), Claude API para el procesamiento de estados de cuenta en PDF ($5 $20 USD/mes), correo transaccional ($0 $20 USD/mes) y, opcionalmente, un agregador bancario como Belvo ($200 $500 USD/mes).</div>
</section>
<!-- ===== 7. SUPUESTOS Y DEPENDENCIAS ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">07</div><div><h2>Supuestos y dependencias</h2></div></div>
<p>El cumplimiento de las estimaciones depende de las siguientes condiciones. De no satisfacerse alguna, la etapa correspondiente se replantea de común acuerdo:</p>
<ol>
<li><strong>Acceso productivo a la API de BIND</strong>, con los permisos definidos —<strong>lectura y escritura</strong> (creación de cotización y conversión a factura)— y documentación oficial disponible, al inicio de la Etapa 0.</li>
<li><strong>Cuenta de Azure de Balam</strong> (o autorización para crearla a su nombre) disponible al inicio de la Etapa 0.</li>
<li><strong>Manual de marca</strong> entregado al inicio de la Etapa 0.</li>
<li><strong>Reglas de negocio finales</strong> validadas en Discovery: lista blanca de clientes (ACUNTIA + Top 3 confirmados), ciclos de cobranza, días de anticipación de alertas y frecuencia de sincronización.</li>
<li><strong>Disponibilidad de dos interlocutores</strong> (Pedro y la gerencia administrativa) con capacidad de resolver bloqueadores en menos de 48 horas.</li>
<li><strong>Producción como único ambiente disponible</strong> (sin sandbox de BIND). La plataforma opera en modo de simulación cuando exista riesgo de afectar BIND, requiriendo confirmación explícita antes de cualquier escritura.</li>
<li><strong>Acuerdo de uso de la metodología asistida por IA</strong>, con el compromiso de no entrenamiento sobre datos del cliente.</li>
<li><strong>El PAC integrado de BIND</strong> atiende los volúmenes actuales y futuros sin costo adicional; el timbrado CFDI permanece a cargo de BIND, no de la plataforma.</li>
<li><strong>El comportamiento de escritura de la API de BIND</strong> (creación de cotización, conversión a factura y timbrado) se valida en Discovery; la emisión productiva se habilita únicamente tras esa validación. Balam designa al rol responsable de confirmar cada emisión.</li>
</ol>
</section>
<!-- ===== 8. ENTREGABLES Y PROPIEDAD ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">08</div><div><h2>Entregables y propiedad</h2></div></div>
<p>Más allá del código funcional, la entrega incluye:</p>
<ul>
<li><strong>Código fuente en el repositorio de Balam</strong> (GitHub) desde el primer día; la propiedad intelectual es de Balam.</li>
<li><strong>Documentación técnica viva</strong> en el repositorio.</li>
<li><strong>Pruebas automatizadas</strong> para los flujos críticos (sincronización con BIND, lista blanca, multimoneda y control de acceso).</li>
<li><strong>Pipeline de CI/CD</strong> operativo, con despliegues controlados.</li>
<li><strong>Respaldos automatizados</strong> y plan de recuperación documentado.</li>
<li><strong>Sesión de transferencia de conocimiento</strong> grabada.</li>
<li><strong>Soporte posterior al lanzamiento</strong> de 2 semanas (corrección de defectos).</li>
</ul>
</section>
<!-- ===== 9. FUERA DEL ALCANCE ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">09</div><div><h2>Fuera del alcance de esta etapa</h2></div></div>
<ul>
<li>Rediseño visual integral o sistema de diseño propio (se emplea la identidad del manual de marca de Balam; un diseño a la medida requeriría sumar un diseñador).</li>
<li>Adquisición de licencias de terceros (PAC, agregadores, hosting Azure).</li>
<li>Gestión del cambio organizacional más allá de la sesión de capacitación.</li>
<li>Módulos diferidos: pagos en línea, recordatorios automáticos a clientes, conciliación bancaria, asientos contables, BUK e IA — cotizados de forma indicativa en el Anexo B.</li>
<li>Integraciones no listadas (Book, CRM, etc.), cotizables por separado.</li>
<li>Adaptaciones derivadas de cambios fiscales del SAT o modificaciones disruptivas en la API de BIND que impliquen retrabajo mayor (atendibles mediante el paquete de mantenimiento, §5.2).</li>
</ul>
</section>
<!-- ===== 10. GARANTÍA Y CONDICIONES ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">10</div><div><h2>Garantía y condiciones generales</h2></div></div>
<ul>
<li><strong>Garantía de defectos:</strong> cobertura sin costo durante 45 días posteriores a la entrega de cada etapa.</li>
<li><strong>Control de cambios:</strong> toda funcionalidad fuera del alcance acordado se documenta como solicitud de cambio (Change Request), se estima y se aprueba por escrito antes de ejecutarse.</li>
<li><strong>Propiedad intelectual:</strong> el código es propiedad de Balam desde el primer commit. El proveedor conserva el derecho de referir el proyecto en su portafolio sin divulgar información confidencial.</li>
<li><strong>Responsabilidad del código asistido por IA:</strong> todo defecto queda cubierto por la misma garantía. La responsabilidad final del código corresponde al proveedor, con independencia de las herramientas utilizadas.</li>
</ul>
<div class="callout cool">Las condiciones contractuales detalladas (confidencialidad, límite de responsabilidad, jurisdicción y demás cláusulas) se formalizan en el contrato de prestación de servicios previo al inicio.</div>
</section>
<!-- ===== 11. PRÓXIMOS PASOS ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">11</div><div><h2>Próximos pasos</h2></div></div>
<ol>
<li>Firma del contrato u orden de trabajo (prestación de servicios y confidencialidad).</li>
<li>Emisión de la primera factura por 30 horas de arranque (<strong>$18,000 MXN</strong> + IVA) e inicio del Discovery; pago a 30 días naturales.</li>
<li>Arranque del proyecto, con entrega del MVP en <strong>6 7 semanas</strong>.</li>
</ol>
<div class="signoff">
<div class="nm">Johann Velazquez</div>
<div class="rl">Consultor de Software · Monterrey, Nuevo León</div>
</div>
</section>
<!-- ===== ANEXO A — TRAZABILIDAD PRD ↔ MVP ===== -->
<section class="sec" style="break-before:page;">
<div class="sec-head"><div class="sec-num">A</div><div><span class="kick">Anexo</span><h2>Trazabilidad PRD ↔ MVP</h2></div></div>
<p class="lede">Este anexo relaciona cada funcionalidad y requerimiento del <strong>PRD de Balam</strong> con el alcance comprometido en la primera etapa, como referencia para alinear expectativas sobre lo incluido, lo parcial y lo diferido.</p>
<div class="callout cool">
<strong>Leyenda:</strong>&nbsp;&nbsp;✅ Cubierto&nbsp;&nbsp;·&nbsp;&nbsp;⚠️ Parcial&nbsp;&nbsp;·&nbsp;&nbsp;❌ Diferido a fase posterior (Anexo B)
</div>
<h3><span class="sn">A.1</span>Funcionalidades (PRD §3.1)</h3>
<h4>Facturación</h4>
<table>
<thead><tr><th>Funcionalidad PRD</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Detalle</th></tr></thead>
<tbody>
<tr><td class="k">Generación automatizada de facturas</td><td class="cov">⚠️</td><td><strong>Incluida la creación asistida:</strong> cotización → factura desde la plataforma vía API de BIND, con confirmación humana; el timbrado lo realiza el PAC de BIND. La generación <strong>automática desde eventos</strong> (Jira→BUK→Factura) depende de APIs no disponibles hoy — fase posterior.</td></tr>
<tr><td class="k">Multimoneda para clientes internacionales (USD sin IVA)</td><td class="cov"></td><td><strong>Emisión en MXN (con IVA) y USD (sin IVA)</strong> con tipo de cambio del DOF capturado al momento de facturación. <strong>EUR queda fuera del MVP.</strong></td></tr>
<tr><td class="k">Descarga automática de facturas / reporte</td><td class="cov"></td><td>Listado con filtros, búsqueda, detalle con PDF/XML y exportación a Excel.</td></tr>
</tbody>
</table>
<h4>Cobranza</h4>
<table>
<thead><tr><th>Funcionalidad PRD</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Detalle</th></tr></thead>
<tbody>
<tr><td class="k">Registro automático de pagos</td><td class="cov"></td><td>Diferido (vía webhook de pagos en línea). En esta etapa los pagos se reflejan según lo que reporta <code>Payments</code> de BIND.</td></tr>
<tr><td class="k">Identificación de pagos por cliente</td><td class="cov">⚠️</td><td>Vista de saldos por cliente con base en datos de BIND; conciliación avanzada en fase posterior.</td></tr>
<tr><td class="k">Seguimiento de CxC con lista blanca ACUNTIA y Top 3</td><td class="cov"></td><td>Lista blanca configurable, antigüedad de cartera y alertas internas para Finanzas. <strong>Recordatorios automáticos a clientes → fase posterior.</strong></td></tr>
</tbody>
</table>
<h4>Conciliación bancaria</h4>
<table>
<thead><tr><th>Funcionalidad PRD</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Detalle</th></tr></thead>
<tbody>
<tr><td class="k">Conciliación automática pagos vs. facturas</td><td class="cov"></td><td>Diferido — coincidencia exacta, por alias y cola de revisión humana.</td></tr>
<tr><td class="k">Integración con estados de cuenta (3 bancos, incl. IBC Texas)</td><td class="cov"></td><td>Diferido — carga de PDF y extracción estructurada.</td></tr>
<tr><td class="k">Identificación de discrepancias</td><td class="cov"></td><td>Diferido.</td></tr>
</tbody>
</table>
<h4>Contabilidad</h4>
<table>
<thead><tr><th>Funcionalidad PRD</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Detalle</th></tr></thead>
<tbody>
<tr><td class="k">Generación automática de asientos contables</td><td class="cov"></td><td>Diferido. Depende de la capacidad de escritura validada de la API de BIND.</td></tr>
<tr><td class="k">Integración con sistema contable existente</td><td class="cov"></td><td>Diferido — exportación en formato BIND para carga manual del contador.</td></tr>
</tbody>
</table>
<h4>Reportes y alertas</h4>
<table>
<thead><tr><th>Funcionalidad PRD</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Detalle</th></tr></thead>
<tbody>
<tr><td class="k">Tablero de estado financiero</td><td class="cov"></td><td>Indicadores de CxC totales, por cliente, vencidas y próximas a vencer.</td></tr>
<tr><td class="k">Alerta — pagos pendientes</td><td class="cov"></td><td>Alertas internas para Finanzas.</td></tr>
<tr><td class="k">Alerta — errores en conciliación</td><td class="cov"></td><td>Diferido (sin conciliación en el MVP).</td></tr>
<tr><td class="k">Alerta — facturas no cobradas</td><td class="cov"></td><td>Alertas internas; envío automático a clientes → fase posterior.</td></tr>
</tbody>
</table>
<h3><span class="sn">A.2</span>Requerimientos funcionales (PRD §6)</h3>
<table class="compact">
<thead><tr><th style="width:46pt;">ID</th><th>Descripción</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Notas</th></tr></thead>
<tbody>
<tr><td class="k">RF-01</td><td>Generar facturas automáticamente desde eventos</td><td class="cov">⚠️</td><td>Creación manual (cotización→factura) incluida; la generación automática desde eventos requiere Jira/BUK — fase posterior</td></tr>
<tr><td class="k">RF-02</td><td>Multimoneda USD/EUR/MXN</td><td class="cov">⚠️</td><td>Emisión MXN + USD en el MVP; EUR en fase posterior</td></tr>
<tr><td class="k">RF-03</td><td>Integración con sistemas existentes (BUK / nómina)</td><td class="cov"></td><td>API de BUK confirmada, no prioritaria</td></tr>
<tr><td class="k">RF-04</td><td>Registrar pagos desde fuentes bancarias</td><td class="cov"></td><td>Fase posterior</td></tr>
<tr><td class="k">RF-05</td><td>Asociar pagos a facturas</td><td class="cov">⚠️</td><td>Con base en <code>Payments</code> de BIND; conciliación avanzada después</td></tr>
<tr><td class="k">RF-06</td><td>Identificar pagos parciales y completos</td><td class="cov">⚠️</td><td>Según lo que reporte BIND</td></tr>
<tr><td class="k">RF-07</td><td>Conciliar transacciones bancarias</td><td class="cov"></td><td>Fase posterior</td></tr>
<tr><td class="k">RF-08</td><td>Detectar discrepancias</td><td class="cov"></td><td>Fase posterior</td></tr>
<tr><td class="k">RF-09</td><td>Reportes de conciliación</td><td class="cov"></td><td>Fase posterior</td></tr>
<tr><td class="k">RF-10</td><td>Asientos contables automáticos</td><td class="cov"></td><td>Fase posterior</td></tr>
<tr><td class="k">RF-11</td><td>Integración con sistema contable</td><td class="cov"></td><td>Fase posterior (exportación en formato BIND)</td></tr>
<tr><td class="k">RF-12</td><td>Tablero financiero en tiempo real</td><td class="cov"></td><td>Incluido</td></tr>
<tr><td class="k">RF-13</td><td>Alertas configurables</td><td class="cov">⚠️</td><td>Internas en el MVP; a clientes en fase posterior</td></tr>
<tr><td class="k">RF-14</td><td>Reportes exportables</td><td class="cov"></td><td>Incluido</td></tr>
</tbody>
</table>
<h3><span class="sn">A.3</span>Requerimientos no funcionales (PRD §7)</h3>
<table class="compact">
<thead><tr><th style="width:56pt;">ID</th><th>Descripción</th><th class="ctr" style="width:62pt;">Cobertura</th><th>Notas</th></tr></thead>
<tbody>
<tr><td class="k">RNF-01</td><td>Arquitectura modular y escalable</td><td class="cov"></td><td>Multi-tenant a nivel de esquema (<code>tenant_id</code> + RLS)</td></tr>
<tr><td class="k">RNF-02</td><td>Alta disponibilidad</td><td class="cov">⚠️</td><td>MVP en una sola región de Azure; HA multi-región → fase posterior</td></tr>
<tr><td class="k">RNF-03</td><td>Seguridad de datos financieros</td><td class="cov"></td><td>Secretos en Key Vault, control de acceso, bitácora y endurecimiento</td></tr>
<tr><td class="k">RNF-04</td><td>Cumplimiento fiscal (México y Texas)</td><td class="cov">⚠️</td><td>Impuestos estándar en el MVP; cumplimiento avanzado Texas → fase posterior</td></tr>
<tr><td class="k">RNF-05</td><td>Integración con APIs externas</td><td class="cov"></td><td>BIND API y DOF para tipo de cambio</td></tr>
<tr><td class="k">RNF-06</td><td>Trazabilidad completa de operaciones</td><td class="cov"></td><td>Bitácora de auditoría universal</td></tr>
</tbody>
</table>
<h3><span class="sn">A.4</span>Diferidos — resumen</h3>
<p class="mini-label">Bloqueado por terceros o sin prioridad actual</p>
<p>Generación automática de facturas (Jira→BUK→Factura); integración bancaria en vivo (Belvo / Plaid / IBC Texas); integración con BUK; integración con Jira.</p>
<p class="mini-label">Diferido por decisión de alcance</p>
<p>Pagos en línea; recordatorios automáticos a clientes; conciliación bancaria; asientos contables automáticos; EUR; flujo de efectivo proyectado; detección avanzada de anomalías; portal de cliente; multi-tenant comercial; cumplimiento avanzado Texas.</p>
</section>
<!-- ===== ANEXO B — COTIZACIÓN INDICATIVA DE FASES POSTERIORES ===== -->
<section class="sec" style="break-before:page;">
<div class="sec-head"><div class="sec-num">B</div><div><span class="kick">Anexo</span><h2>Cotización indicativa de fases posteriores</h2></div></div>
<p class="lede">Los siguientes son <strong>rangos indicativos, no compromisos contractuales</strong>. Se reconfirman mediante su propio Discovery al activar cada módulo, con datos reales de uso del MVP. La tarifa de $600 MXN/h y el esquema de tiempo y materiales con tope por etapa se mantienen.</p>
<h3><span class="sn">B.1</span>Módulos cotizados</h3>
<table>
<thead><tr><th>Módulo</th><th class="num" style="width:76pt;">Horas</th><th class="num" style="width:118pt;">Inversión (MXN)</th></tr></thead>
<tbody>
<tr><td class="k">Recordatorios automáticos por correo + editor de plantillas + bitácora de comunicaciones</td><td class="num">12 16</td><td class="num">$7,200 $9,600</td></tr>
<tr><td class="k">Pago en línea (Stripe Checkout) + webhook de conciliación + tarjeta y SPEI</td><td class="num">14 18</td><td class="num">$8,400 $10,800</td></tr>
<tr><td class="k">Conciliación bancaria por PDF (3 bancos, incl. IBC Texas) + extracción asistida + motor de coincidencia + cola de revisión</td><td class="num">28 36</td><td class="num">$16,800 $21,600</td></tr>
<tr><td class="k">Exportación de pagos conciliados y movimientos en formato BIND</td><td class="num">8 12</td><td class="num">$4,800 $7,200</td></tr>
<tr><td class="k">Integración con BUK (lectura de nómina y colaboradores)</td><td class="num">18 24</td><td class="num">$10,800 $14,400</td></tr>
<tr class="sub-total"><td>Subtotal</td><td class="num">80 106 h</td><td class="num">$48,000 $63,600</td></tr>
</tbody>
</table>
<div class="callout">El monto de esta fase es comparable al del MVP porque incorpora <strong>cinco módulos nuevos completos</strong>, cada uno con su propio diseño, integración y pruebas. No se trata de extensiones menores, sino de capacidades adicionales sobre la base ya construida.</div>
<h3><span class="sn">B.2</span>Roadmap posterior (sin cotización)</h3>
<p>Se cotiza al cierre de la fase anterior, priorizando con datos reales de uso: integración bancaria en vivo (Belvo, Plaid); conector con BIND para asientos contables automáticos; integración con Jira; flujo de efectivo proyectado (30/60/90 días); gestión cambiaria automática; pagos recurrentes; detección avanzada de anomalías; soporte EUR; clasificación asistida por IA; portal de cliente; multi-tenant comercial; aplicación móvil para tickets; y cumplimiento avanzado para Texas.</p>
<h3><span class="sn">B.3</span>Activación</h3>
<p>Al cierre del MVP se realiza una sesión de priorización (1 h) y se formaliza una orden de trabajo por módulo seleccionado. La tarifa, el esquema, la comunicación y la garantía aplican en los mismos términos que en la primera etapa (sin anticipo; facturación al inicio de cada módulo, pago a 30 días).</p>
</section>
</main>
</body>
</html>