尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗🔗 App en línea: https://prototipo-iind.vercel.app · versión que vio el cliente: /v2 y rama backup-main
| Versión | Enlace | Rama |
|---|---|---|
| Producción: la versión A (solo la app, con el recorrido paso a paso o automático como video), elegida por SOKA el 2026-10-21 | https://prototipo-iind.vercel.app | main |
| B · App + consola de Lulo (alternativa que no se eligió): lo mismo que A, más herramientas para el banco (decisiones en vivo, plan de campaña, tamaño del piloto y clientes de la base) | https://prototipo-iind-git-feat-claude-consola-lulo-proyects-soka.vercel.app | feat/claude-consola-lulo |
La rama B queda como referencia. Si Vercel pide iniciar sesión para verla, la protección de las vistas previas está activa: SOKA puede invitar al equipo al proyecto o apagarla en Vercel (Settings → Deployment Protection).
Más seguros, mejor ofrecidos, dentro de la app de Lulo Bank. Prototipo académico con datos simulados: una app con el look de la app real, un motor bayesiano que decide qué seguro ofrecer y aprende de cada respuesta, corriendo de verdad sobre la base sintética del reto (600 clientes, 20.473 movimientos) y sobre los tres personajes de la presentación, y un recorrido guiado que muestra qué es nuevo frente a la app real.
| Idea | Qué es |
|---|---|
| Pasado: Tu año en Lulo | Resumen de 12 meses calculado con los datos de cada cliente; el momento de protección de cada capítulo lo decide el motor. |
| Presente: Motor de disparadores | Lee lo que el cliente hace (nómina, transferencia fija, bolsillo, aerolínea, mascotas, peaje, desembolso), decide qué ofrecer, por qué canal y cuándo, y registra la respuesta. |
| Futuro: SOAT y disparos agendados | Flujo real del SOAT con Seguros Mundial, captura de canal para SOAT externos y disparos agendados (desempleo al sexto abono, vida al tercer mes). |
docs/MOTOR.md.scripts/validar_datos.py y scripts/train_motor.py --datos corren en el equipo de Lulo sin subir nada (docs/DATOS_REALES.md).?ritmo=0.5 lo acelera y ?ritmo=1.5 lo hace más lento. Los escenarios rápidos dicen qué decidió el motor y por qué. Están también «Resaltar lo nuevo», el cambio de personaje y «Descargar respuestas (CSV)», con las ofertas de la sesión en el formato de datos reales. La guía aparece al lado del teléfono solo cuando se pide; en el celular se abre como hoja desde «Guía».¿El motor convierte ofertas en ventas? La base del reto no trae respuestas a ofertas, así que eso solo lo dirá un piloto con grupo de control. La carpeta powerbi/ trae un dashboard de 8 páginas que muestra lo que hay hoy y cómo se va a saber.
docs/CASOS.md).powerbi/Lulo.pbip en Power BI Desktop, o powerbi/vista_previa.html en el navegador (mismas cifras). La guía, con supuestos, páginas y cómo cambiar al piloto real, está en powerbi/GUIA.md.main desde el 2026-10-14)lulo_app/core), reglas versionadas (hoy v2.1):
scripts/ingest_reto.py): lo posterior al corte (444 movimientos y 118 abonos) se excluye con su razón; conversion_impactados es en realidad ventas/elegibles y se recalcula; todo queda en lulo_app/dataset/manifest.json y CALIDAD.md.docs/MODELOS.md; en la app, GET /api/v3/models.Antes de tocar el código, lee CLAUDE.md: define el modelo de Claude permitido, qué se puede hacer sin consultar, qué cambios hay que consultar con SOKA y cómo se documentan. Todo cambio se anota en CAMBIOS.md. Se trabaja en ramas feat/<nombre>-<tema> creadas desde main, con pull request hacia main que aprueba SOKA. Nunca se hace push directo a main (es producción) ni a las ramas congeladas backup-main y v2-cliente.
Se necesita Python 3.12 o superior.
python -m venv .venv
.\.venv\Scripts\Activate.ps1 # en macOS/Linux: source .venv/bin/activate
pip install -r requirements-dev.txt
python run.py # abre http://127.0.0.1:8000
python -m playwright install chromium # una vez: navegador para las pruebas de punta a punta
python -m pytest # pruebas (las de punta a punta se saltan si no hay navegador)
Motor desde la terminal:
python -m lulo_app.core catalogo # productos con prima, comisión y conversión
python -m lulo_app.core reglas # parámetros (hoy v2.1)
python -m lulo_app.core cliente C00002 # traza completa de una decisión
python -m lulo_app.core explicar C00002 # de dónde sale cada probabilidad
python -m lulo_app.core motor # piezas del motor bayesiano y sus datos
python -m lulo_app.core campana --csv plan.csv # plan de campaña de los 600 (y la comparación con v1.3)
python -m lulo_app.core campana --motor regla # el mismo plan ordenado como v1.3
python -m lulo_app.core backtest # el año completo con invariantes
python scripts/ingest_reto.py # vuelve a ingerir el Excel (data/raw)
python scripts/train_models.py # reentrena los modelos (lulo_app/ml/modelos.json)
python scripts/train_models.py --check # verifica que modelos.json coincide (scikit-learn 1.8.0, numpy 2.4.6)
python scripts/train_motor.py [--check] # entrena el motor bayesiano (lulo_app/ml/motor.json, Python puro)
python scripts/laboratorio.py [--check] # laboratorio con verdad simulada (lulo_app/ml/laboratorio.json)
python scripts/validar_datos.py CARPETA # valida otra base con el mismo esquema (datos reales)
python scripts/exportar_powerbi.py [--check] # datos, proyecto y vista previa del dashboard (powerbi/)
/v2 dentro de esta misma app.backup-main y v2-cliente congelan el commit 04f1b26, que estuvo en producción hasta el 2026-10-14.prototipo-iind-4q3q7hpqv-proyects-soka.vercel.app).api/index.py entrada serverless para Vercel
data/raw/ Excel original del reto (no se despliega)
scripts/ingest_reto.py ingesta y validación
scripts/train_models.py entrenamiento y validación de los modelos M1 a M6
scripts/train_motor.py entrenamiento del motor bayesiano (embudo, momento, previas, respuestas)
scripts/laboratorio.py laboratorio con verdad simulada
scripts/validar_datos.py validación y manifiesto de otra base (datos reales)
scripts/exportar_powerbi.py datos del dashboard (base, motor, piloto simulado, laboratorio y casos) + proyecto
scripts/powerbi_modelo.py modelo semántico, medidas DAX, páginas y tema Lulo del proyecto de Power BI
scripts/powerbi_vista.py vista previa web del dashboard (las mismas cifras que las medidas)
powerbi/ Lulo.pbip, datos/ (CSV), medidas.dax, tema-lulo.json, vista_previa.html, casos.csv y GUIA.md
docs/CASOS.md 20 casos reales de éxito y fracaso con métodos como los del prototipo
docs/MODELOS.md método, resultados y límites de los modelos M1 a M6
docs/MOTOR.md el motor bayesiano: método, resultados, supuestos y preguntas difíciles
docs/DATOS_REALES.md cómo correr el motor con los datos de Lulo
lulo_app/
dataset/ CSV normalizados, manifest.json y CALIDAD.md
core/ motor v3: schema, store, personas, catalog, rules, features,
signals, eligibility, contact, experiment, engine, year, view, backtest
ml/ modelos M1 a M6 (vector, modelos.json) y motor bayesiano (bayes, rasgos, motor,
motor.json, laboratorio.json), todo calculado en Python puro
api_v3.py rutas /api/v3
main.py app FastAPI: / (v3), /v2 (versión del cliente) y API v2
simulator.py … engine.py prototipo v2 (personajes y motor anterior)
public/static/v3/ app v3 (JS sin framework y CSS): app.js (estado, flujos, guía y escenarios), screens.js,
content.js (lo nuevo), tour.js (recorrido guiado), film.js (recorrido automático como
video), aprende.js (probabilidad por pasos y
decisión en lenguaje claro), util.js, icons.js
public/static/js|css app v2
tests/ ingesta, motor, API v2 y v3, entrada de Vercel, dashboard (test_powerbi.py) y de punta a
punta (test_e2e.py, Playwright)
Documentación interactiva en /docs.
| Método | Ruta | Qué hace |
|---|---|---|
| GET | /api/v3/meta | Corte, reglas, catálogo y calidad de la base |
| GET | /api/v3/clients?q=&outcome=&ramo=&source= | Explorador de los 603 clientes con la decisión de hoy |
| GET | /api/v3/clients/{id}?as_of= | Todo lo que la app necesita para un cliente |
| GET | /api/v3/clients/{id}/movements · /movements/{mid} | Extracto paginado y detalle con la señal que alimenta |
| POST | /api/v3/clients/{id}/events | Evento de la app → movimiento → señal → decisión |
| POST | /api/v3/clients/{id}/evaluate?focus= | Evaluación con el contexto de la sesión |
| POST | /api/v3/clients/{id}/year · /upcoming | Tu año y disparos agendados |
| GET | /api/v3/campaign · /campaign.csv | Plan de campaña a una fecha |
| GET | /api/v3/backtest?every=14 | Backtest con invariantes |
| GET | /api/v3/models | Modelos entrenados: validación, uso en el motor y resultados |
| GET | /api/v3/motor | Motor bayesiano: embudo, momento, rasgos, previas, validación y laboratorio |
La base es 100% sintética y académica: sus cifras no son métricas de Lulo Bank. La señal media (× 0,6 de la fuerte) es una hipótesis con su duda que el motor corrige con las respuestas; el efecto del momento sale de compras orgánicas y se supone que se traslada a la aceptación de una oferta; el laboratorio usa una verdad simulada (muestra que el método aprende, no cuánto venderá Lulo); la afinidad del modelo de propensión estima parecido con quienes ya tienen el seguro (no respuesta a una oferta) y con esta base no pasa la compuerta en ningún ramo; el umbral de capacidad de pago (5 % del ingreso) y la lectura de cancelacion_pct como comisión devuelta en pago único son supuestos de v1.3 a validar con Lulo; Hogar no tiene campaña previa: el motor usa la predictiva de una campaña nueva (la regla v1.3 usaba la menor conversión observada); Pago protegido no está en la base y se ofrece solo al desembolsar; el uso de la app de los personajes es supuesto. Clientes, montos, placas y números de cuenta son simulados.
Julián Ordoñez, Nicolás Ramírez, Sebastián Socarrás y Tomás Carrillo.