AQUITA — Documento técnico de plataforma

Adjudicar un vehículo por sorteo y por oferta, sin que nadie tenga que confiar

Un grupo de ahorradores aporta cada mes y cada período alguien recibe su vehículo. Cómo se decide quién, por qué el sorteo tiene que ser auditable y no solo aleatorio, y cómo se garantiza que el fondo alcanza antes de prometer nada.

Modelo · autofinanciamiento por grupos Entidades · 29 · cinco módulos Adjudicación · sorteo y oferta País · Colombia
01

El negocio

Un conductor de aplicaciones de transporte rara vez califica para un crédito de vehículo. El autofinanciamiento por grupos resuelve eso sin banco: varias personas aportan una cuota mensual a un fondo común, y cada período ese fondo compra un vehículo para uno de ellos.

Quién lo recibe se decide de dos formas que conviven en la misma sesión: por sorteo, que es la vía gratuita, y por oferta, donde alguien adelanta cuotas para pasar antes. Ambas tienen que ocurrir sin que ningún participante tenga que creerle al operador.

La exigencia que ordena todo el diseño

Un sorteo entre personas que pusieron su dinero no basta con que sea aleatorio: tiene que ser demostrablemente aleatorio después del hecho. Y una oferta aceptada no puede prometer un vehículo que el fondo no puede pagar.

De ahí salen las dos piezas centrales: el congelamiento del fondo y el registro de auditoría del sorteo.

02

Planes, grupos y cuotas

Un plan define el vehículo, su valor y las condiciones. Un grupo es un conjunto de suscriptores sobre ese plan, con cupos limitados.

Al suscribirse
1) Verificar que quedan cupos → si no, se rechaza 2) Verificar que no está ya suscrito → si lo está, conflicto 3) Generar TODAS las cuotas del plan → con vencimiento el día 5 4) Activar el grupo si estaba en formación
Las cuotas se generan completas desde el primer día, no una por mes. Existir antes de pagarse es lo que permite decir «esta cuota está en mora» en vez de tener que inferirlo, y es lo que hace que el estado de cuenta muestre el plan entero desde el inicio.

Que el grupo pase de formación a activo con la primera suscripción es deliberado: un grupo sin nadie no es un grupo, y modelarlo como activo desde su creación permitiría abrir asambleas de un grupo vacío.

03

El fondo y su congelamiento

El grupo tiene un fondo, y ese fondo no es un solo número. Son dos, y la diferencia entre ellos es lo que hace posible adjudicar sin sobrecomprometer.

Los dos saldos
fondo actual lo que se ha recaudado fondo congelado lo comprometido con adjudicaciones ya hechas ────────────────────────────────────────────────────────── fondo disponible = actual − congelado
Al adjudicar —por cualquiera de las dos vías— el valor del vehículo pasa de disponible a congelado en el mismo instante. El dinero sigue en el fondo, pero ya tiene dueño.
Por qué un solo saldo no sirve

Con un único número, dos adjudicaciones en la misma asamblea verían las dos el fondo completo y ambas pasarían la comprobación de suficiencia — aunque juntas lo excedan. El grupo quedaría debiendo un vehículo que no puede comprar, y el error se descubriría al ir a pagarlo.

Con el congelamiento, la segunda adjudicación ve el fondo ya descontado por la primera y se rechaza si no alcanza. Es la misma idea que separar saldo contable de saldo disponible en una cuenta bancaria.

Todas las operaciones de adjudicación se ejecutan dentro de una transacción. Congelar el fondo, crear la adjudicación y cambiar el estado de la suscripción son un solo hecho: no puede quedar un fondo congelado sin adjudicación que lo justifique, ni una adjudicación sin respaldo.

04

Adjudicación por sorteo

La vía gratuita. Entre los suscriptores elegibles que no han sido adjudicados todavía, se elige uno al azar.

La selecciónGenerador criptográfico
candidatos = elegibles − ya adjudicados si no hay candidatos → se rechaza la corrida bytes = 4 bytes del generador criptográfico del sistema índice = bytes como entero sin signo mód número de candidatos ganador = candidatos[índice]
Se usa el generador criptográfico y no el aleatorio común del lenguaje. En un sorteo que reparte vehículos, un generador predecible a partir de la semilla no es un detalle académico: es la diferencia entre un sorteo y un reparto.

El registro que hace verificable la corrida

Cada adjudicación por sorteo guarda un bloque de auditoría con todo lo necesario para reconstruirla:

DatoPara qué sirve al auditar
Número de elegiblesEl tamaño del universo sobre el que se sorteó
Lista completa de elegiblesQuiénes estaban dentro — y por tanto quiénes no
Índice elegidoLa posición que resultó ganadora
Bytes aleatoriosEl valor crudo del que salió ese índice
InstanteCuándo ocurrió

Guardar la lista completa y no solo el conteo es lo que permite responder la pregunta que de verdad hace un suscriptor: «¿yo estaba en ese sorteo?». Con solo el número de participantes esa pregunta no tiene respuesta.

Un defecto corregido: los bytes auditados no eran los del sorteo

La primera versión generaba los bytes aleatorios, elegía al ganador con ellos y después, al construir el bloque de auditoría, generaba unos bytes nuevos y guardaba esos.

El registro parecía completo y no lo era: quien recalculara bytes mód elegibles obtenía un índice distinto del registrado, porque eran dos sorteos diferentes. Rompía exactamente la propiedad para la que el bloque existe. Ahora los bytes se capturan una sola vez y son los mismos que se auditan.

Queda anotada una imprecisión menor del método: el operador módulo introduce un sesgo hacia los primeros índices. Con cuatro mil millones de valores posibles y grupos de decenas de personas es despreciable, pero si el sorteo llega a tener valor legal, corresponde usar rechazo de muestras.

05

Adjudicación por oferta

La vía de pago: quien quiere adelantarse ofrece anticipar cuotas. Gana la oferta más alta, con dos condiciones que la hacen justa.

La evaluación
1) Excluir a los ganadores del SORTEO de esta misma asamblea 2) Ordenar las ofertas pendientes por monto equivalente, de mayor a menor 3) Comprobar fondo disponible ≥ valor del vehículo si no alcanza → se rechaza la corrida entera 4) Aceptar la mejor · RECHAZAR explícitamente todas las demás 5) Congelar el fondo y adjudicar
Las ofertas se comparan por monto equivalente y no por número de cuotas ofrecidas: dos suscriptores con planes distintos ofrecen cuotas de valor distinto, y ordenarlas por cantidad premiaría al del plan más barato.
No se puede ganar dos veces en la misma sesión

Quien ya salió favorecido en el sorteo de esa asamblea queda excluido de la oferta. Sin esa exclusión, alguien podría llevarse dos vehículos en una sola sesión mientras el resto del grupo sigue esperando — y el fondo, que es de todos, lo pagaría.

Las ofertas perdedoras se rechazan, no se dejan pendientes

Al aceptar la mejor, todas las demás pasan explícitamente a rechazada. Dejarlas en pendiente las haría reaparecer como candidatas en la siguiente asamblea, comprometiendo a esas personas con un monto que ofrecieron para otra ocasión y que quizá ya no pueden sostener.

La comprobación de suficiencia usa el fondo disponible, no el actual. Por eso una adjudicación por sorteo hecha momentos antes en la misma asamblea reduce lo que la oferta puede comprometer — que es exactamente lo que debe pasar.

06

Cartera y comprobantes

El resto del módulo financiero sostiene la operación del día a día.

PiezaQué resuelve
Comprobantes de pagoEl suscriptor sube el soporte de su consignación; queda pendiente hasta que alguien lo revisa y lo aprueba o lo rechaza. El pago no cuenta antes de esa revisión
Alertas de moraCuotas vencidas sin pago aprobado, para que la cobranza no dependa de que alguien recuerde mirar
Salud del grupoEstado agregado del grupo: recaudo, morosidad y capacidad de seguir adjudicando
Libro de fondosTodo movimiento del fondo queda asentado con su tipo y su referencia al hecho que lo originó
RetirosUn suscriptor que se va del grupo, con su liquidación
Estado de cuentaVista por suscripción de lo pagado, lo pendiente y lo vencido

La separación entre subir el comprobante y aprobarlo es la misma idea que aparece en el resto del sistema: un documento cargado es una afirmación del suscriptor, y no se convierte en dinero recaudado hasta que alguien la verifica. Un sistema donde subir la foto ya salda la cuota no puede sostener un fondo que compra vehículos.

07

Arquitectura

Monorepo con dos aplicaciones sobre una base común.

Los cinco módulos
auth usuarios, roles, permisos granulares, sesiones registro de auditoría financial planes · grupos · suscripciones · cuotas · pagos asambleas · ofertas · adjudicaciones · libro de fondos comprobantes · retiros fleet vehículos · asignaciones · documentos dispositivos GPS · posiciones · geocercas maintenance talleres · órdenes de trabajo · repuestos · incidencias documents contratos · estudios de crédito · documentos
29 entidades en total. La flota lleva control por GPS con geocercas porque el vehículo sigue siendo garantía del fondo hasta que la suscripción termina de pagarse.
CapaTecnología
APINestJS · TypeORM · PostgreSQL · Redis
AutenticaciónCódigo de un solo uso para el conductor · tokens con renovación
WebNext.js · React · Tailwind
EntornoContenedores para base de datos y caché

El acceso del conductor es por código de un solo uso y no por contraseña: el público objetivo entra desde el teléfono y una contraseña más es una barrera de abandono, no de seguridad.