Pipeline de generación
Datos de entrada
billing.json
CSV / Excel
CSV / Excel
→
Plantilla Jinja2
HTML / DOCX
con variables
con variables
→
Motor Python
Jinja2 / docxtpl
render + export
render + export
→
Output masivo
47 PDFs / DOCXs
nombrados automático
nombrados automático
→
Distribución
Email automático
o carpeta Drive
o carpeta Drive
Datos de entrada — billing.json (extracto)
billing.json
{
"clientes": [
{
"id": "NF-0042",
"nombre": "Clínica Sant Pau",
"contacto": "Dra. M. Vidal",
"plan": "Enterprise",
"usuarios": 24,
"precio_mes": 890,
"vencimiento": "2026-07-31",
"sesiones_mes": 312,
"nps": 72,
"ahorro_horas": 48
},
// ... 46 clientes más
]
}
Plantilla Jinja2 — propuesta.html (extracto)
propuesta.html (template)
<h1>Propuesta para
{{ nombre }}
</h1>
<p>Estimada {{ contacto }},</p>
<td>Plan actual</td>
<td>{{ plan }}</td>
{% for item in lineas %}
<tr>
<td>{{ item.concepto }}</td>
<td>{{ item.precio }}€</td>
</tr>
{% endfor %}
{% if nps >= 70 %}
<div class="badge">
⭐ Cliente NPS Promotor
</div>
{% endif %}
Script de generación
generate_proposals.py — listo para ejecutar
generate_proposals.py
from jinja2 import Environment, FileSystemLoader
from weasyprint import HTML
import json, os
from datetime import datetime
# ── Configuración ───────────────────────────────────
TEMPLATE_DIR = "./templates"
OUTPUT_DIR = "./output/propuestas"
DATA_FILE = "./data/billing.json"
os.makedirs(OUTPUT_DIR, exist_ok=True)
env = Environment(loader=FileSystemLoader(TEMPLATE_DIR))
template = env.get_template("propuesta.html")
# ── Carga de datos ──────────────────────────────────
with open(DATA_FILE) as f:
clientes = json.load(f)["clientes"]
# ── Generación masiva ───────────────────────────────
for cliente in clientes:
# Enriquecer datos antes de renderizar
cliente["fecha_propuesta"] = datetime.today().strftime("%d/%m/%Y")
cliente["precio_anual"] = cliente["precio_mes"] * 12
cliente["descuento_anual"] = round(cliente["precio_anual"] * 0.10)
cliente["es_promotor"] = cliente["nps"] >= 70
html_str = template.render(**cliente)
output = f"{OUTPUT_DIR}/propuesta_{cliente['id']}.pdf"
HTML(string=html_str, base_url=TEMPLATE_DIR).write_pdf(output)
print(f"✓ {cliente['nombre']:30s} → {output}")
print(f"\n🚀 {len(clientes)} propuestas generadas en {OUTPUT_DIR}")
Datos de clientes — 5 de 47
| ID | Cliente | Contacto | Plan | Usuarios | €/mes | Sesiones | NPS | Estado |
|---|---|---|---|---|---|---|---|---|
| NF-0042 | Clínica Sant Pau | Dra. M. Vidal | Enterprise | 24 | 890€ | 312 | 72 ⭐ | Generado |
| NF-0051 | Centro Nutrición Vida | Lic. R. Torres | Business | 8 | 390€ | 134 | 65 | Generado |
| NF-0038 | HospitalNorte Dieta | Dr. J. Pérez | Enterprise | 41 | 1.450€ | 728 | 81 ⭐ | Generado |
| NF-0063 | Dietista Online Pro | A. Martínez | Pro | 3 | 149€ | 67 | 58 | Generado |
| NF-0029 | Clínica Barcelona Salud | Dra. L. Font | Enterprise | 18 | 720€ | 284 | 76 ⭐ | Generado |
Preview — Propuesta generada para Clínica Sant Pau (NF-0042)
NutriFlow
Nutrición Personalizada para Clínicas · nutriflow.app
Propuesta de Renovación de Contrato
Período 2026–2027 · Plan Enterprise personalizado
Información del cliente
Organización
Clínica Sant Pau
Interlocutor
Dra. M. Vidal
Plan actual
Enterprise
Usuarios activos
24 licencias
Uso y métricas del año anterior
312
Sesiones / mes
48h
Ahorro mensual
72 ⭐
NPS Promotor
Detalle económico renovación
| Concepto | Unidades | Precio unit. | Total |
|---|---|---|---|
| Licencia NutriFlow Enterprise (anual) | 24 usuarios | 445,00 €/sem. | 10.680,00 € |
| Soporte Premium 24/7 | 1 contrato | — | Incluido |
| Onboarding nuevos usuarios | hasta 5 | — | Incluido |
| 🎁 Descuento fidelidad 10% (NPS ≥ 70) | − | −1.068,00 € | |
| TOTAL ANUAL | 9.612,00 € |
* Precios sin IVA. Facturación semestral o anual a elección del cliente.
Para aceptar esta propuesta o hablar con su responsable de cuenta:
cuentas@nutriflow.app · +34 910 123 456Archivos generados en ./output/propuestas/
Ejecución completada en 1 min 47 s · 47 PDFs generados · Total: 12,3 MB · Script: generate_proposals.py
propuesta_NF-0042.pdf
Clínica Sant Pau · 284 KB
✓ OK
propuesta_NF-0051.pdf
Centro Nutrición Vida · 271 KB
✓ OK
propuesta_NF-0038.pdf
HospitalNorte Dieta · 291 KB
✓ OK
propuesta_NF-0063.pdf
Dietista Online Pro · 258 KB
✓ OK
propuesta_NF-0029.pdf
Clínica Barcelona Salud · 276 KB
✓ OK
propuesta_NF-[0001..0047].pdf
42 clientes adicionales · ~270 KB c/u
✓ OK