Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Consola de sólo lectura de Albertitos: ficheros, decisiones de la norma y traza de cada factura.
Translation pending
FinancePython · TypeScriptGitHub @javiersaguarOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Albertitos · HackSpain 2026 · Maisa track "500 Sombras de Alberto"
In short (English). Alberto does accounts payable at a bank. He gets invoice PDFs (some scanned, some with
text that tries to give orders), a messy Excel of suppliers and purchase orders, and a 2009 ERP. For each invoice
the system decides PAGAR / NO_PAGAR / ESCALAR (pay / don't pay / send to a human).
The thesis: the LLM extracts, the rules decide. The model only fills a closed schema of facts; a versioned
set of rules in code makes the decision and records why, with evidence, so any decision can be replayed.Read the full README ↗In short (English). Alberto does accounts payable at a bank. He gets invoice PDFs (some scanned, some with text that tries to give orders), a messy Excel of suppliers and purchase orders, and a 2009 ERP. For each invoice the system decides PAGAR / NO_PAGAR / ESCALAR (pay / don't pay / send to a human).
The thesis: the LLM extracts, the rules decide. The model only fills a closed schema of facts; a versioned set of rules in code makes the decision and records why, with evidence, so any decision can be replayed.
We delivered 540 invoices decided: 468 PAGAR, 62 ESCALAR, 10 NO_PAGAR, both batches, audited, with 0 pending. 468 of the first 500 were read by deterministic templates at no model cost. A data change reprocesses only what it touches, not the whole set.
Try it: albertitos.vercel.app (read-only console, trace of any invoice and a chat over the decisions; it asks for a shared key, see Cómo verlo).
Sin ORM, sin cola, sin framework de agentes: SQLite en WAL, funciones puras para la norma y la CLI como única puerta de escritura. Lo que no está aquí, no está en el proyecto.
| Persona | De qué se ocupó |
|---|---|
| Javier Saguar (@javiersaguar) | Fuentes (ERP y Excel), extracción, entrega y despliegue |
| Miguel Vera (@Mveradc) | Contratos, pipeline, linaje y las decisiones de norma del lote 2 |
| Alejandro Cuevas (@DRO98) | La consola web |
| Alfonso Jimena (@AlfonsoJimena) | Documentación, plan de arquitectura y defensa |
| Mónica Fernández (@monicafdezlortal) | La norma de pagos y su validación |
Llegan 540 facturas en PDF: algunas escaneadas, algunas que en su propio texto piden «escalar», «ignorar el NIF» o «pagar el total impreso», y varias con trampas de verdad (una cuenta bancaria cambiada, un pedido ya pagado, totales que no cuadran). Hay que cruzarlas con un Excel de proveedores y pedidos y con un ERP de 2009 que se cae, tarda y devuelve errores de Oracle.
Por cada factura hay que decidir PAGAR, NO_PAGAR o ESCALAR, sin pagar dos veces y sin pagar lo que una persona debería mirar antes. La validación del reto es binaria: o están bien las 540, o no hay premio.
Las tres fuentes entran en una sola base de datos. El programa recorre los pasos y guarda lo que hace en cada uno. La consola, el chat y el calendario viven encima y no deciden nada: sólo miran.
sha256 y validadores. Las escaneadas se leen dos veces y, si no coinciden, se desempatan.Qué pasa cuando algo falla. Si el modelo se cae, la factura queda PENDIENTE y la entrega se niega a salir incompleta: nunca se paga sin hechos validados. Al volver, la misma pasada reanuda. Si cambia un dato de la Caja o del ERP, sólo se recalcula lo que ese dato toca, y el resto conserva la versión con la que se decidió.
Qué hacemos con las facturas que intentan darnos órdenes. El texto de una factura es un dato, nunca una instrucción: la frase se guarda como evidencia y la decisión la toma la norma. Las 31 que lo intentan acaban en ESCALAR o NO_PAGAR, y en la traza se ve por qué regla.
Cifras medidas, con sus condiciones y sus comandos en docs/CIFRAS.md:
La demo pública: albertitos.vercel.app. Pide una clave compartida, porque detrás hay un modelo de verdad y no queremos que cualquiera lo gaste; pídesela al equipo. Con ella se ven las 540 decisiones, la traza de cada una, el calendario de pagos y el chat.
En local, con el repositorio clonado:
./bootstrap.sh # uv, dependencias y verificación de la Caja
make erp-fast # en otra terminal: el ERP de 2009 en :8009
uv run albertitos run --fecha-corte 2026-09-18 # ingest → extract → decidir → empaquetar
uv run albertitos trace F26-2201_transportes.pdf # por qué esa factura escala, paso a paso
bash scripts/demo.sh arrancar # consola, puente y chat en http://localhost:3002
docs/README.md · el índice de los 100 documentos, ordenados por a qué vienes: producto,
defensa, código o el material de trabajo que se conserva como evidencia.docs/adr/ · las decisiones, con alternativas, consecuencias y evidencia. Las cinco que más se
preguntan están resumidas en el plan.docs/plan/albertitos_plan.md · arquitectura y ADRs; es el PDF que se entrega.docs/ESTADO-BACKEND.md · qué está hecho y qué falta, con dueño.CLAUDE.md · cómo trabaja el equipo y qué hay en cada módulo.Este repositorio es la solución. No es el repositorio de entrega
(HS-Maisa-Entrega), que sólo lleva outcomes.jsonl,
outcomes_lote2.jsonl y albertitos_plan.pdf.