Aleks Sánchez Logo
Aleks Sánchez
Volver a todos los proyectos
PortfolioMap · Lente 4 · Operations & GovernanceEn producción · portfoliomap · live

Operations: AI, gobernanza, automatización y compliance en una capa

La capa de gobernanza de PortfolioMap. AI advisor, marketplace, notifications, security, document vault, smart rules IF/THEN, history snapshots, reports, shared views scoped y RBAC con permission gates en App.tsx.

Mi rolProduct Designer · RBAC + smart rules engine + shared views scoping
CuándoEn desarrollo · 2026
EquipoSolo founder por ahora — diseño, sistema y producto
StackVite + SWC, React 18, TypeScript estricto, Tailwind con tokens HSL, shadcn/ui (Radix), lucide-react, react-router v6 (HashRouter), Storybook 10, MCP servers
Operations: AI, gobernanza, automatización y compliance en una capa

Resultados

11 submódulos de operativa

desde AI advisor hasta RBAC, todos detrás de permission gates

100+ notifications mock

feed unificado con 6 categorías y 3 niveles de severidad, deep-linkables

Shared views scoped

read-only por dominio (overview, accounts, portfolios, tax…) para advisors y auditores

El problema que ataca el módulo

Con 30 módulos, la operativa transversal es más crítica que cualquier feature individual:

  • Alertas, permisos, automatizaciones cross-módulo.
  • Compartir con asesores y auditores externos.
  • Reports KYC/AML y audit trail con base SOC 2.
  • Operations decide quién ve qué, qué se automatiza y cómo se mantiene la trazabilidad regulatoria.

Proceso y validación

  • Hipótesis inicial: "los users power configurarán smart rules complejas". Descartada tras 2 iteraciones — sin preview, los usuarios tenían miedo a romper el dashboard.
  • Versión actual: las smart rules obligan a previsualizar el resultado sobre datos reales antes de activarse. La adopción subió.
  • Shared Views empezó como "modo público" y acabó siendo objeto first-class con scope, status y audit log — porque los advisors externos están sujetos a PSD2 / KYB.
  • Validación: tasa de adopción de smart rules a 30 días + número de shared views revocadas voluntariamente (señal de control percibido real).

Decisiones de modelo

  • Notifications unificadas: categoría (spending, market, security, billing, lifestyle, tax) + severidad (info, warning, critical) + deep-link al recurso.
  • Smart rules IF/THEN con operadores (gt, gte, lt, eq, contains) sobre spend, balances y subs.
  • History como snapshots mensuales (net-worth, cashflow, category breakdown).
  • Reports en 6 tipos con formatos PDF/CSV/XLSX y status.
  • Audit log con timestamp + user + before/after — base para SOC 2.

Decisiones de UI

  • AI advisor con contexto financiero inyectado — conoce cuentas, portfolios y goals. No alucina cifras.
  • Marketplace usa la misma tabla canónica que Banking.
  • Shared views: objeto con scope, status (active / expired / revoked) y expiration. Genera link público read-only respetando permisos.

RBAC como wrapper, no como condicional

  • Wrapper RequirePermission en App.tsx con permisos explícitos.
  • Rutas y nav se filtran automáticamente por rol.
  • Añadir un permiso nuevo es una entrada en el array, no un audit por todo el codebase.
  • Soporta futuros perfiles regulatorios (compliance officer, risk reviewer, KYB analyst) sin reescribir el frontend.

Decisiones de diseño

Smart rules como expresiones IF/THEN serializables

Cada rule es {field, operator, value, action}. Serializable a JSON, ejecutable en cliente y servidor. Editor único renderiza la rule como grafo. Nuevo operador → solo toca el evaluator.

AI advisor con contexto financiero inyectado

No es un chatbot genérico. "¿Cuánto gasté en restaurantes?" → recibe transacciones, budgets y spending insights. "¿Debo rebalancear?" → recibe holdings, mandates y última snapshot.

Shared views como objetos first-class con scope

Objeto con scope, status (active/expired/revoked), expiration y audit log. El usuario crea "tax 2026" para su asesor y revoca el acceso al cerrar el ejercicio.

Reports con status visible, no spinners ocultos

Status visible en el listado (ready, generating, scheduled, failed). El usuario sigue trabajando y descarga cuando está ready. Asíncrono porque la realidad lo es.

Retrospectiva honesta

Qué funcionó

  • RBAC como wrapper en App.tsx en vez de condicional repetido. Añadir permisos nuevos es una sola línea.
  • Smart rules serializables a JSON. Permite previsualizar la rule antes de guardarla y ejecutarla sin cambiar de pantalla.
  • Shared views como objetos first-class con scope explícito. El recruiter de un asset manager entiende inmediatamente la metáfora y la trazabilidad.

Qué cambiaría

  • AI advisor empezó como chat genérico y tuve que rediseñar el contexto inyectado en sprint 5. Habría empezado por el contexto.
  • Reports cargaba el listado entero de una vez. Cuando llegaron 60+ reports el render se notaba — paginé y todo bien.

Qué queda abierto

  • Conectar AI advisor a Claude API real (hoy es mock con respuestas pre-cargadas) con prompts específicos por dominio.
  • Smart rules con triggers reales sobre webhooks de Banking (PSD2) cuando esa integración esté lista.

¿Te interesa que aporte este nivel de detalle a tu equipo?

Estoy disponible para incorporarme en plantilla, contrato indefinido, 100 % remoto desde cualquier lugar del mundo (vivo en Madrid).

Siguiente proyecto

PortfolioMap · Banking: cuentas, tarjetas y ledger unificado