Bitácora 8–30 jun: contrato firmado, plan de actividades y skill proposal-pdf

- Comunicaciones (REGISTRO #15–#21): respuesta v1.1 (10-jun), luz verde (16-jun),
  contrato (envío 25-jun, ajustes + firma 26-jun), arranque con Erika y kickoff 1-jul
- Evidencia en fuentes/ (correos 8/10/16-jun, WhatsApp Paola y Erika)
- Contratos (sin firmar y firmado) en propuesta/
- Plan de actividades Etapa 0–3 + guion del kickoff (planeacion/)
- Skill proposal-pdf instalado (.claude/skills) + Propuesta-Balam.pdf regenerada
- README/PENDIENTES al día; limpieza de archivos sueltos; .gitignore (locks de Office)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
JohannVelazquez
2026-06-30 12:42:45 -06:00
parent 633d05e330
commit 72b7602e8e
44 changed files with 2789 additions and 62 deletions
+673
View File
@@ -0,0 +1,673 @@
<!DOCTYPE html>
<!-- Propuesta Comercial Balam · v1.1 — render del design system proposal-pdf.
Contenido fiel a 00 - PROPUESTA-COMERCIAL.md. Build: python .claude/skills/proposal-pdf/scripts/build_pdf.py propuesta/pdf.config.json -->
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="author" content="Johann Velazquez">
<title>Propuesta Comercial — Plataforma de Automatización Financiera · Balam</title>
<style>
/* ===========================================================================
FUENTES DEL DISEÑO — embebidas, NO dependen de fuentes del sistema.
Los .ttf viven en ./fonts/ (junto a este HTML). Mantén esta carpeta al lado
del HTML al moverlo/copiarlo: sin ella, el PDF cae a Cambria/Calibri y pierde
el "look" del esperado. No hace falta editar este bloque.
=========================================================================== */
@font-face{ font-family:"Caladea"; font-style:normal; font-weight:400; src:url("fonts/Caladea-Regular.ttf") format("truetype"); }
@font-face{ font-family:"Caladea"; font-style:normal; font-weight:700; src:url("fonts/Caladea-Bold.ttf") format("truetype"); }
@font-face{ font-family:"Caladea"; font-style:italic; font-weight:400; src:url("fonts/Caladea-Italic.ttf") format("truetype"); }
@font-face{ font-family:"Caladea"; font-style:italic; font-weight:700; src:url("fonts/Caladea-BoldItalic.ttf") format("truetype"); }
@font-face{ font-family:"Carlito"; font-style:normal; font-weight:400; src:url("fonts/Carlito-Regular.ttf") format("truetype"); }
@font-face{ font-family:"Carlito"; font-style:normal; font-weight:700; src:url("fonts/Carlito-Bold.ttf") format("truetype"); }
@font-face{ font-family:"Carlito"; font-style:italic; font-weight:400; src:url("fonts/Carlito-Italic.ttf") format("truetype"); }
@font-face{ font-family:"Carlito"; font-style:italic; font-weight:700; src:url("fonts/Carlito-BoldItalic.ttf") format("truetype"); }
@font-face{ font-family:"DejaVu Sans Mono"; font-style:normal; font-weight:400; src:url("fonts/DejaVuSansMono.ttf") format("truetype"); }
:root{
--ink:#1C2B39; /* navy profundo — texto principal + portada */
--ink-soft:#33424F; /* texto secundario */
--muted:#6B7682; /* leyendas, footers */
--accent:#C0892F; /* dorado/ámbar Balam — único acento */
--accent-d:#9A6A1C; /* dorado oscuro para énfasis sobre tinte */
--accent-tint:#F6ECD7; /* relleno dorado tenue */
--cream:#F4EFEA; /* relleno cálido de panel */
--line:#D9DEE3; /* hairlines */
--serif:"Caladea", "Cambria", Georgia, "Times New Roman", serif;
--sans:"Carlito", "Calibri", "Helvetica Neue", Arial, sans-serif;
--mono:"DejaVu Sans Mono", "SFMono-Regular", Consolas, monospace;
}
@page{ size:Letter; margin:15mm 16mm 18mm 16mm; }
@page :first{ margin:0; } /* portada full-bleed */
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
font-family:var(--sans); color:var(--ink-soft);
font-size:10pt; line-height:1.5;
-webkit-print-color-adjust:exact; print-color-adjust:exact;
}
p{ margin:0 0 7pt; }
strong,b{ color:var(--ink); font-weight:700; }
em{ font-style:italic; }
code{
font-family:var(--mono); font-size:8.6pt;
background:var(--cream); padding:.5pt 3pt; border-radius:2pt; color:var(--ink);
}
a{ color:var(--accent-d); text-decoration:none; }
/* ---------- PORTADA ---------- */
.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{
content:""; position:absolute; right:-60mm; top:-60mm;
width:150mm; height:150mm; border-radius:50%;
background:radial-gradient(circle at center, rgba(192,137,47,.20), rgba(192,137,47,0) 70%);
}
.cover .top,.cover .mid,.cover .meta{ position:relative; z-index:2; }
.cover .logo{ margin-bottom:16pt; }
.cover .logo .txt{ font-family:var(--serif); font-weight:700; font-size:15pt; color:#fff; letter-spacing:.03em; }
.cover .logo .txt b{ color:var(--accent); }
.cover .rule{ width:46pt; height:3pt; background:var(--accent); margin-bottom:14pt; }
.cover .eyebrow{
font-size:9pt; letter-spacing:.32em; text-transform:uppercase; color:#9FB0BF; font-weight:700;
}
.cover .mid{ 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; }
.meta-grid{ display:grid; grid-template-columns:34mm 1fr; gap:6pt 10pt; margin:0; font-size:9.2pt; }
.meta-grid dt{ color:#8A98A5; text-transform:uppercase; letter-spacing:.12em; font-size:7.6pt; padding-top:1.5pt; }
.meta-grid dd{ margin:0; color:#D7DDE2; }
.cover .confidential{
margin-top:18pt; display:flex; justify-content:space-between;
font-size:8pt; letter-spacing:.18em; text-transform:uppercase; color:#7E8C99;
}
/* ---------- TOC ---------- */
.toc{ break-before:page; padding-top:6mm; }
.kick{ font-size:8.5pt; letter-spacing:.28em; text-transform:uppercase; color:var(--accent-d); font-weight:700; }
.toc h2{ font-family:var(--serif); font-size:26pt; font-weight:700; color:var(--ink); margin:2pt 0 4pt; }
.toc .bar{ width:40pt; height:3pt; background:var(--accent); margin:6pt 0 16pt; }
.toc-row{ display:flex; align-items:baseline; gap:8pt; padding:6.2pt 0; border-bottom:.6pt solid var(--line); font-size:10.5pt; }
.toc-row .n{ width:22pt; color:var(--accent-d); font-weight:700; font-variant-numeric:tabular-nums; }
.toc-row .t{ color:var(--ink); }
.toc-row.section .t{ font-weight:700; }
.toc-row .dots{ flex:1; border-bottom:1pt dotted var(--line); transform:translateY(-3pt); }
.toc-row .pg{ color:var(--muted); font-variant-numeric:tabular-nums; }
/* ---------- SECCIONES ---------- */
.content{ break-before:page; }
.sec{ margin-bottom:14pt; }
.sec-head{ display:flex; gap:12pt; align-items:flex-start; border-bottom:1.4pt solid var(--ink); padding-bottom:6pt; margin:0 0 11pt; }
.sec-head .sec-num{ font-family:var(--serif); font-size:30pt; font-weight:700; line-height:.9; color:var(--accent); min-width:42pt; }
.sec-head h2{ font-family:var(--serif); font-size:19pt; font-weight:700; color:var(--ink); margin:4pt 0 0; }
.sec-head .kick{ display:block; margin-bottom:2pt; }
.sec-head.no-num h2{ margin-top:0; }
h3{ font-family:var(--sans); font-size:11.5pt; font-weight:700; color:var(--ink); margin:13pt 0 5pt; }
h3 .sn{ color:var(--accent-d); font-weight:700; margin-right:7pt; }
h4{ font-family:var(--sans); font-size:9.5pt; font-weight:700; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.06em; margin:10pt 0 3pt; }
p.lede{ font-size:11pt; color:var(--ink-soft); }
p.drop::first-letter{
font-family:var(--serif); font-size:34pt; font-weight:700; color:var(--accent);
float:left; line-height:.82; padding:2pt 6pt 0 0;
}
p.mini-label{ font-size:8pt; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-d); font-weight:700; margin:9pt 0 1pt; }
ul,ol{ margin:4pt 0 8pt; padding-left:16pt; }
li{ margin:0 0 3.5pt; padding-left:2pt; }
li::marker{ color:var(--accent); }
/* ---------- TABLAS ---------- */
table{ width:100%; border-collapse:collapse; margin:10pt 0; font-size:9.2pt; }
thead th{
text-align:left; font-size:7.8pt; letter-spacing:.07em; text-transform:uppercase;
color:#FFFFFF; background:var(--ink); padding:5pt 8pt; font-weight:700;
}
thead th.num,thead th.ctr{ text-align:right; }
thead th.ctr{ text-align:center; }
tbody td{ padding:5.5pt 8pt; border-bottom:.6pt solid var(--line); vertical-align:top; }
tbody tr:nth-child(even) td{ background:#FBFAF8; }
td.k{ color:var(--ink); font-weight:600; }
.num,th.num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
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); }
td.cov{ font-size:11pt; text-align:center; line-height:1; }
table.compact tbody td{ padding:4pt 8pt; }
table.compact{ font-size:8.8pt; }
/* ---------- CALLOUTS ---------- */
.callout{
background:var(--accent-tint); border-left:3pt solid var(--accent);
padding:9pt 12pt; margin:10pt 0; font-size:9.4pt; color:var(--ink-soft); border-radius:0 3pt 3pt 0;
}
.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 / PIPELINE ---------- */
.flow{ display:flex; flex-wrap:wrap; align-items:center; gap:5pt; margin:10pt 0; }
.flow .chip{
background:#fff; border:1pt solid var(--line); border-radius:4pt;
padding:4pt 9pt; font-size:8.6pt; font-weight:600; color:var(--ink-soft); white-space:nowrap;
}
.flow .chip.accent{ background:var(--accent); border-color:var(--accent); color:#fff; }
.flow .arrow{ color:var(--accent); font-weight:700; }
/* ---------- STATS ---------- */
.synthesis{ display:flex; gap:10pt; margin:12pt 0; }
.synthesis .stat{ flex:1; background:var(--ink); color:#EAEDF0; border-radius:5pt; padding:11pt 13pt; }
.synthesis .stat .big{ font-family:var(--serif); font-size:21pt; font-weight:700; color:#fff; line-height:1; }
.synthesis .stat .lab{ font-size:8pt; letter-spacing:.08em; text-transform:uppercase; color:#9FB0BF; margin-top:4pt; }
/* ---------- ETAPA ---------- */
.etapa{ border:1pt solid var(--line); border-left:3pt solid var(--accent); border-radius:0 4pt 4pt 0; padding:9pt 12pt; margin:8pt 0; }
.etapa-h{ font-weight:700; color:var(--ink); font-size:10pt; margin-bottom:3pt; }
.etapa-h .tag{ float:right; font-size:8pt; color:var(--muted); font-weight:600; }
/* ---------- SIGNOFF ---------- */
.signoff{ margin-top:18pt; padding-top:10pt; border-top:1.4pt solid var(--ink); }
.signoff .nm{ font-family:var(--serif); font-size:14pt; font-weight:700; color:var(--ink); }
.signoff .rl{ font-size:8.5pt; color:var(--muted); letter-spacing:.04em; }
/* ---------- PRINT SAFETY ---------- */
h2,h3,h4,.sec-head{ break-after:avoid; }
thead{ display:table-header-group; }
tfoot{ display:table-footer-group; }
tr{ break-inside:avoid; }
.callout,.synthesis,.synthesis .stat,.etapa,.flow,.signoff,figure,img{ break-inside:avoid; }
.keep,.no-break{ break-inside:avoid; }
.break{ break-before:page; }
</style>
</head>
<body>
<!-- ============================= PORTADA ============================= -->
<section class="cover">
<div class="top">
<div class="logo"><span class="txt"><b>BALAM</b> · Talento Estratégico</span></div>
<div class="rule"></div>
<div class="eyebrow">Propuesta Comercial</div>
</div>
<div class="mid">
<h1>Plataforma de Automatización Financiera</h1>
<div class="client">Preparada para <b>Balam</b></div>
</div>
<div class="meta">
<dl class="meta-grid">
<dt>Preparada para</dt>
<dd>Noe Rocha (CTO) · Araceli Sánchez Jiménez (CEO/Operaciones) · Erika Chávez (PM) · Pedro Alberto Ayala Elizondo (Contacto técnico)</dd>
<dt>Preparada por</dt>
<dd>Johann Velazquez — Consultor de Software · Monterrey, N.L.</dd>
<dt>Fecha</dt>
<dd>Mayo 2026</dd>
<dt>Versión</dt>
<dd>1.1 — facturación BIND-first; ajustes comerciales acordados con Balam (8-jun-2026)</dd>
<dt>Vigencia</dt>
<dd>30 días naturales a partir de la fecha de emisión</dd>
</dl>
<div class="confidential">
<span>Documento confidencial</span>
<span>Vigencia 30 días</span>
</div>
</div>
</section>
<!-- ============================= TOC ============================= -->
<section class="toc">
<div class="kick">Contenido</div>
<h2>Índice</h2>
<div class="bar"></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 section"><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 section"><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>
</section>
<!-- ============================= CUERPO ============================= -->
<main class="content">
<!-- ===== Resumen ejecutivo ===== -->
<section class="sec">
<div class="sec-head no-num"><div><h2>Resumen ejecutivo</h2></div></div>
<p class="drop">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>
<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>
<div class="synthesis">
<div class="stat"><div class="big">67</div><div class="lab">Semanas</div></div>
<div class="stat"><div class="big">112136</div><div class="lab">Horas (T&amp;M)</div></div>
<div class="stat"><div class="big">$67.2K</div><div class="lab">a $81.6K&nbsp;+&nbsp;IVA</div></div>
</div>
<p class="mini-label">En síntesis</p>
<ul>
<li><strong>Alcance:</strong> MVP de facturación (consulta y <strong>emisión asistida</strong> MXN/USD) y cobranza sobre la API de BIND ERP.</li>
<li><strong>Plazo:</strong> 6 a 7 semanas, a media dedicación.</li>
<li><strong>Inversión:</strong> <strong>$67,200 $81,600 MXN</strong> + IVA, bajo esquema de tiempo y materiales con tope por etapa.</li>
<li><strong>Modelo:</strong> transparencia total de horas, entregables verificables semana a semana, y código propiedad de Balam desde el primer día.</li>
</ul>
<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 ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">01</div><div><h2>Entendimiento del proyecto</h2></div></div>
<p class="lede">Durante la sesión con el equipo directivo, la lectura del requerimiento fue clara y orientó por completo el alcance de esta primera etapa.</p>
<h3><span class="sn">1.1</span>El problema</h3>
<p><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 class="mini-label">Alcance funcional del MVP</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; 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); arquitectura preparada para multi-tenant y bitácora de auditoría universal.</li>
</ul>
<p class="mini-label">Visión integral (fases posteriores, cotizadas en el Anexo B)</p>
<div class="flow">
<span class="chip">Jira (horas)</span><span class="arrow"></span>
<span class="chip">BUK (nómina)</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; 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 cool"><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>
<h3><span class="sn">2.1</span>Stack tecnológico propuesto</h3>
<p>La selección 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>Angular + Angular Material</td><td>Angular 21 · Material 21</td><td>SPA escalable, fuertemente tipada; componentes de datos listos para facturación y cobranza.</td></tr>
<tr><td class="k">Backend</td><td>C# / .NET (ASP.NET Core Web API)</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>Entity Framework Core (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>Azure Database for PostgreSQL Flexible</td><td>PostgreSQL 17</td><td>Base productiva administrada (Azure SQL queda como alternativa nativa si Balam lo prefiere).</td></tr>
<tr><td class="k">Infraestructura</td><td>App Service · Key Vault · App Insights · Blob Storage</td><td>runtime .NET 10 (Linux)</td><td>Cómputo administrado, secretos cifrados y observabilidad integrados.</td></tr>
<tr><td class="k">Integración BIND</td><td>Cliente .NET tipado sobre la API OData</td><td>.NET 10 · HttpClient + Polly</td><td>Reintentos, manejo de límites de uso y mapeo de errores; contrato validado en el sandbox de descubrimiento.</td></tr>
<tr><td class="k">Control de acceso</td><td>ASP.NET Core Identity + JWT</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>GitHub + CI/CD (Actions / Azure DevOps)</td><td></td><td>Despliegues controlados con validación automatizada.</td></tr>
</tbody>
</table>
<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="etapa-h">Etapa 0 — Discovery, infraestructura y prototipo visual<span class="tag">Semana 1 · 1822 h</span></div>
Validar el comportamiento real de la API de BIND con la cuenta de Balam, preparar la infraestructura en Azure (App Service, PostgreSQL Flexible, Storage, Key Vault, App Insights), dejar el repositorio con CI/CD y <strong>entregar un prototipo visual navegable</strong> de las 56 pantallas principales con el manual de marca aplicado. Incluye documento de hallazgos y ADRs iniciales.</div>
<div class="callout"><strong>Riesgo a validar en Discovery.</strong> BIND documenta públicamente <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 el saldo abierto por factura solo se confirman con la cuenta real. <strong>Plan A</strong> (BIND expone el saldo) y <strong>Plan B</strong> (saldo = total pagos) están cubiertos por el rango; el <strong>Plan C</strong> (interfaz propia de registro manual de pagos, +68 h <strong>no incluidas</strong>) se evaluaría y aprobaría al cierre de la etapa.</div>
<div class="etapa"><div class="etapa-h">Etapa 1 — Plataforma base y sincronización con BIND<span class="tag">Semanas 2-3 · 3239 h</span></div>
Backend con autenticación, roles y bitácora de auditoría universal; arquitectura multi-tenant a nivel de esquema (<code>tenant_id</code> + RLS); cliente de la API de BIND con doble encabezado, reintentos con backoff y constructor OData; <strong>capa de escritura controlada</strong> (cotización → factura) envuelta en <em>dry-run</em>, confirmación y feature flag; sincronización programada de clientes y facturas; modelo central de facturas con estados.</div>
<div class="callout cool"><strong>Nota fiscal.</strong> La plataforma <strong>no timbra directamente</strong>; el timbrado CFDI permanece en el PAC integrado 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="etapa-h">Etapa 2 — Facturación (consulta y emisión), catálogo y multimoneda<span class="tag">Semanas 4-5 · 3846 h</span></div>
Implementación productiva de las pantallas validadas; listado de facturas con filtros, búsqueda y detalle con PDF/XML; <strong>creación de cotizaciones y conversión a factura</strong> vía API de BIND; <strong>emisión multimoneda</strong> MXN (con IVA) y USD (sin IVA); <strong>flujo con confirmación humana obligatoria y <em>dry-run</em></strong>; catálogo de clientes con lista blanca configurable (ACUNTIA + Top 3); tipo de cambio del DOF; exportación CSV/XLSX; manual de usuario.</div>
<div class="callout cool"><strong>Fuera de esta etapa:</strong> generación automática de facturas desde eventos (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="etapa-h">Etapa 3 — Cobranza, tablero, reportes y cierre<span class="tag">Semanas 6-7 · 2429 h</span></div>
Módulo de cobranza (antigüedad 30/60/90 días, vistas por vencer y vencidas); alertas internas configurables para Finanzas (5 días antes del vencimiento); aplicación de lista blanca (ACUNTIA + Top 3 sin alertas masivas); tablero directivo de CxC; reporte operativo configurable (CSV/XLSX/PDF); endurecimiento de seguridad, respaldos y plan de recuperación; documentación (README, runbook, ADRs); capacitación grabada (1.52 h) y soporte posterior al lanzamiento de 2 semanas.</div>
<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>
<p class="lede">El proyecto se desarrolla bajo un esquema de <strong>horas reales con tarifa transparente</strong>, no de precio cerrado.</p>
<h3><span class="sn">3.1</span>Esquema: tiempo y materiales con tope por etapa</h3>
<p>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. 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.</li>
<li><strong>Reporte semanal</strong> de horas trabajadas con desglose por tarea, y <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 también a las fases posteriores (Anexo B) y a la bolsa de horas de soporte (§5).</li>
<li><strong>Facturación:</strong> por etapa, conforme se entrega cada una (con anexo de desglose de horas por tarea). La Etapa 0 se factura al inicio del proyecto.</li>
<li><strong>Pago:</strong> a <strong>30 días naturales</strong> posteriores a la factura, mediante transferencia, conforme a la política de Balam.</li>
<li><strong>Arranque sin anticipo:</strong> conforme a la política de Balam, no se maneja anticipo. La <strong>Etapa 0 (30 horas, $18,000 MXN + IVA)</strong> se factura al inicio y su pago corre a 30 días, igual que los avances. El arranque queda condicionado a la <strong>firma del contrato / orden de trabajo</strong>, que formaliza el compromiso de ambas partes en sustitución del anticipo.</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 quincenal (1 h) con Noe para decisiones de arquitectura y validación de reglas de negocio.</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:</p>
<ul>
<li><strong>Responsabilidad humana.</strong> Todo el código entregado es revisado y validado por el proveedor; 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 se comparte con modelos externos; el desarrollo usa datos sintéticos derivados de la estructura, no del contenido. Las credenciales residen en gestores de secretos cifrados.</li>
<li><strong>Cumplimiento.</strong> 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>
</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">0</td><td>Discovery, infraestructura Azure y prototipo visual navegable</td><td class="num">18 22</td><td class="num">$10,800 $13,200</td></tr>
<tr><td class="k">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">2</td><td>Facturación (consulta y emisión 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">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>Total primera etapa</td><td></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). 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 ===== -->
<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. El plazo de 45 días cubre el primer cierre mensual de operación, cuando suelen hacerse visibles los defectos en un sistema financiero.</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 y el soporte incluidos, se ofrece una <strong>bolsa de horas</strong> para la operación y evolución incremental de la plataforma, contratable por bloques:</p>
<table>
<thead><tr><th>Bloque</th><th class="num">Horas</th><th class="num">Inversión (sin IVA)</th></tr></thead>
<tbody>
<tr><td class="k">Pequeño</td><td class="num">10 h</td><td class="num">$6,000</td></tr>
<tr class="sub-total"><td>Mediano <em>(recomendado)</em></td><td class="num">20 h</td><td class="num">$12,000</td></tr>
<tr><td class="k">Grande</td><td class="num">40 h</td><td class="num">$24,000</td></tr>
</tbody>
</table>
<p><strong>Vigencia:</strong> las horas son <strong>válidas por 12 meses</strong> desde su contratación, <strong>sin caducidad mensual</strong> (se consumen al ritmo que Balam necesite). Tarifa $600 MXN/h + IVA.</p>
<p><strong>Cubre:</strong> corrección de defectos fuera de garantía; ajustes menores y requerimientos pequeños; mantenimiento de dependencias y compatibilidad ante cambios de la API de BIND; atención a incidencias en 1 día hábil; y reporte de horas consumidas. <strong>No cubre:</strong> desarrollo de los módulos diferidos (Anexo B); migraciones o cambios mayores de arquitectura; ni incidentes atribuibles a terceros (Azure, BIND, SAT).</p>
</section>
<!-- ===== 6. Terceros ===== -->
<section class="sec">
<div class="sec-head"><div class="sec-num">06</div><div><h2>Costos de servicios de terceros</h2></div></div>
<p>Los siguientes son servicios de infraestructura externos, independientes de los honorarios del proveedor (a cargo de Balam):</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); 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 → B2s + 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">Key Vault + Application Insights</td><td>Secretos (Standard) + observabilidad (5 GB/mes incluidos)</td><td class="num">$0 $15</td></tr>
<tr><td class="k">Monitoreo / 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</td></tr>
<tr class="total"><td>Total mensual estimado</td><td></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 corresponde a una configuración mínima; el alto, a una holgada con redundancia y monitoreo de pago. Los costos pueden optimizarse con <strong>instancias reservadas</strong> (13 años, hasta ~3040% de ahorro), una vez validado el consumo real.</div>
<p>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).</p>
</section>
<!-- ===== 7. Supuestos ===== -->
<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 permisos de <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 (ACUNTIA + Top 3), 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 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> 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 ===== -->
<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, y <strong>soporte posterior al lanzamiento</strong> de 2 semanas (corrección de defectos).</li>
</ul>
</section>
<!-- ===== 9. Fuera de 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 la bolsa de horas de soporte, §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>Sesión de revisión de esta propuesta (1 h) para resolver dudas y ajustar lo que corresponda.</li>
<li><strong>Firma del contrato / orden de trabajo</strong> (prestación de servicios y confidencialidad) — formaliza el compromiso para arrancar sin anticipo.</li>
<li><strong>Factura de la Etapa 0</strong> (30 horas, <strong>$18,000 MXN</strong> + IVA), con pago a 30 días, para iniciar Discovery.</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 ===== -->
<section class="sec break">
<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.</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>A.1 Funcionalidades (PRD §3.1)</h3>
<h4>Facturación</h4>
<table class="compact">
<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>Creación asistida (cotización → factura) vía API de BIND con confirmación humana; el timbrado lo realiza el PAC de BIND. La generación automática desde eventos (Jira→BUK→Factura) — fase posterior.</td></tr>
<tr><td class="k">Multimoneda para clientes internacionales (USD sin IVA)</td><td class="cov"></td><td>Emisión en MXN (con IVA) y USD (sin IVA) con tipo de cambio del DOF. <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 class="compact">
<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). Los pagos se reflejan según <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, aging y alertas internas. <strong>Recordatorios a clientes → fase posterior.</strong></td></tr>
</tbody>
</table>
<h4>Conciliación bancaria</h4>
<table class="compact">
<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 · Reportes y alertas</h4>
<table class="compact">
<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.</td></tr>
<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>A.2 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:56pt;">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; 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>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>A.3 Requerimientos no funcionales (PRD §7)</h3>
<table class="compact">
<thead><tr><th style="width:46pt;">ID</th><th>Descripción</th><th class="ctr" style="width:56pt;">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>A.4 Diferidos — resumen</h3>
<p><strong>Bloqueado por terceros o sin prioridad actual:</strong> 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><strong>Diferido por decisión de alcance:</strong> 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 ===== -->
<section class="sec break">
<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>B.1 Módulos cotizados</h3>
<table>
<thead><tr><th>Módulo</th><th class="num">Horas</th><th class="num">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="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>B.2 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>B.3 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 (facturación por etapa con pago a 30 días, sin anticipo), la comunicación y la garantía aplican en los mismos términos que en la primera etapa.</p>
</section>
</main>
</body>
</html>