Notas de campo

Un core, muchas apps: cómo funciona una plataforma bancaria whitelabel

Una plataforma bancaria whitelabel es un core bancario con un front end intercambiable. El core es la parte que tiene que ser correcta: un libro mayor de partida doble, cuentas de clientes, KYC y onboarding, emisión y procesamiento de tarjetas, rails de cripto y stablecoins, y la consola de operador que funciona detrás de todo ello. La app es la parte que ve el cliente: su nombre, sus colores, la forma de sus pantallas, el subconjunto de funciones que activa. Whitelabel significa que un mismo core puede lucir muchas caras sin reconstruirse bajo cada una. Un core, muchas apps.

Dicho claramente, es una afirmación sobre dónde están las costuras. Todo lo que toca dinero se comparte, se audita y se concilia una sola vez; todo lo que toca al cliente se configura por tenant. La ingeniería que importa consiste en mantener honesta esa línea: dejar que el front end difiera libremente mientras el core sobre el que se apoya nunca se bifurca. Este es un análisis a fondo de cómo se traza esa línea y de por qué trazarla con design tokens es mejor que trazarla con un fork.

Lo que nunca varía: el core

Empecemos por la mitad a la que no se permite ser creativa. Una transferencia se contabiliza igual tanto si la app la llama envío, pago o abono: dos asientos en un libro mayor de partida doble, y nada se borra jamás. El libro solo añade, así que un reembolso es un contraasiento que referencia el original, no un borrado. Aquí viven las cuentas, los saldos y las retenciones de autorización. También el KYC y el onboarding, la emisión y liquidación de tarjetas, y los rails de cripto y stablecoins. Tras ellos hay una única consola de operador donde toda acción privilegiada exige un motivo y queda en un registro de auditoría.

Hay exactamente uno de cada uno, y ese es el punto. La liquidación, la conciliación y el cumplimiento normativo son difíciles de hacer bien y caros de hacer mal, así que se construyen una vez y cada app hereda el resultado. Cuando un tenant da de alta a un cliente, el nivel de KYC que decide el core sigue a ese cliente hasta la consola, sea cual sea la app cuyas pantallas capturaron los documentos. El core ni sabe ni le importa cómo se llama la app que tiene encima: ve cuentas y asientos, no marcas.

Lo que varía: lenguaje de diseño, arquitectura de la información, combinación de funciones

Todo lo que está por encima del core puede moverse libremente, en tres ejes. El primero es el lenguaje de diseño: color, tipografía, radio de esquina, espaciado, movimiento; la gramática visual de la marca. El segundo es la arquitectura de la información: qué hay en la pantalla de inicio, cómo se nombran y ordenan los flujos, qué acción queda a un toque y cuál a tres. El tercero es la combinación de funciones: qué módulos están activados. Una app de transferencias minimalista y una super-app densa pueden ejecutar el mismo core sin compartir una sola pantalla.

La página de producto /products/pay recorre cinco direcciones de ejemplo, que se leen mejor como muestras de infinitas posibles que como un menú de cinco. Halcyon es un exchange limpio: sobrio, pocas superficies y la operación en primer plano. Lumen es una super-app donde el dinero se mueve dentro de la conversación y los pagos por chat, las suscripciones y el ahorro comparten la pantalla de inicio. Fern prioriza las transferencias: primero los pagos en lote y la conversión FX basada en reglas. Volt es una versión oscura centrada en stablecoins, con un organizador de nómina y tarjetas de equipo. Meridian es multidivisa: una cuenta en EUR junto a USDC, un saldo de viaje en GBP y una cuenta en BTC donde llegan las recompensas de la tarjeta. Cinco marcas, cinco arquitecturas de la información, cinco combinaciones de funciones: un libro mayor, un KYC y un procesador de tarjetas por debajo de todas.

Nada de esto significa que el producto sean cinco apps. Las cinco son direcciones que el mismo pipeline puede tomar; el número que importa no es cinco, sino tantos tenants como incorpores. Cada una demuestra que el front end puede diferir hasta en la forma de la pantalla de inicio sin que el core de debajo se entere.

El core es la parte que no se te permite reinventar; la app es la parte que no se te permite restringir. Una plataforma whitelabel es la disciplina de mantener ciertas ambas frases a la vez.
— Protocore · Ingeniería de plataforma

Por qué el theming a nivel de tokens supera a bifurcar el código

Hay dos maneras de hacer que un producto parezca muchos. La obvia es bifurcar: copiar el código por cliente, rediseñarlo y publicarlo. Funciona exactamente una versión. Después, cada corrección y cada cambio regulatorio hay que aplicarlos N veces en N copias que se van alejando, las copias se desincronizan y la superficie de seguridad que debes controlar se multiplica por el número de clientes. Bifurcar convierte un sistema que entiendes en muchos que no.

El theming por tokens lo invierte. Hay un solo código base. Una marca es un conjunto de valores (tokens de color, tipografía, radio y espaciado; una configuración de componentes; un conjunto de feature flags) que se resuelve en tiempo de compilación en una app de marca. Cambias un token y todas las pantallas que lo leen se mueven a la vez, porque nada lleva fijado un valor que deba venir de un token. Una corrección en el flujo de transferencias llega a todos los tenants a la vez, porque solo hay un flujo de transferencias que corregir. Las marcas difieren en su configuración, no en su código fuente.

Dónde encaja el sistema de diseño

Los tokens no son una idea vaga; son un artefacto publicado. El Protocore Design System (/products/pds) son 144 design tokens y 889 clases de utilidad: el vocabulario en el que se tematiza cada app. Es dark-first, está guiado por tokens y usa radio cero por defecto, y el mismo conjunto de tokens se emite para web, .NET y nativo, de modo que un color definido una vez es el mismo color en una pantalla React, en una consola de escritorio y en una build móvil nativa. La marca de un tenant se expresa como sobrescrituras sobre ese vocabulario, por eso cambiar el aspecto de una app es un cambio de configuración y no una reescritura.

Esto es también lo que hace que el front end sea realmente libre y no libre dentro de una plantilla. Como el lenguaje de diseño vive en tokens y clases de utilidad en lugar de en hojas de estilo ad hoc, un diseñador puede alejar a un tenant mucho de la build de referencia (con su propia paleta, tipografía, densidad y ritmo) sin tocar el core ni bifurcar la app. La pintura llega hondo, pero sigue siendo solo pintura; la fontanería de debajo es compartida.

La app es una configuración, no una build

La combinación de funciones sigue la misma regla. Cada módulo (pagos por chat, ahorro, cripto, tarjetas, suscripciones, tarjetas de equipo, referidos) es un interruptor que se activa por tenant, y un flag puede desplegarse a una parte de los usuarios antes de generalizarse. Los operadores los cambian desde un panel de configuración, no con un despliegue. Así, la diferencia entre una app de transferencias básica y una super-app completa no son dos proyectos, sino dos configuraciones de uno. La app de referencia de la que parte cada tenant es una build neutra con marca Protocore y todo el menú disponible; cada whitelabel es esa build con tokens sobrescritos y módulos activados o desactivados.

El límite, sin rodeos

Un core, muchas apps solo compensa la maquinaria cuando de verdad tienes muchas apps, o una app que piensas rediseñar, reorganizar y redefinir con el tiempo sin reconstruir el banco cada vez. Si vas a lanzar una única app fija que nunca vestirá una segunda marca, no necesitas una plataforma whitelabel; necesitas una app. Donde se gana su sitio es en el caso para el que fue creada: una plataforma que levanta productos bancarios de marca tenant tras tenant, cada uno claramente propio y ninguno un fork. El análisis completo (las cinco direcciones, la app de referencia y la consola de operador que hay detrás) está en /products/pay, y el sistema de diseño que lo sustenta, en /products/pds.

¿Tienes un sistema que construir?

Cuéntanos el problema. Volveremos con una arquitectura y un plan.