Shipped · verified live

Five enterprise modules.
Coupa parity, closed.

We mapped the gaps between this kernel and Coupa, then closed five of them end to end — schema, agents, APIs, and UI — each one walked through live on real data.

Migrations 648–652 · 6 pure libraries · ~76 new tests · 21 live modules on one kernel

🧭01

Guided Buying

One smart front door for any purchasing need

The gap it closes

Entry points were fragmented — a requisition form, a Telegram bot, a webshop. Employees had to know which process to use before they could ask.

The flow
Describe the need in plain language
AI classifies the spend type
Match catalog · contracts · suppliers
Convert to a governed requisition
Spend types7 classified
Routingcontract → catalog → type
Guardrailnever skips approvals
VERIFIED LIVE

Live: “5 boxes of A4 paper and two ergonomic chairs” → classified Catalog requisition at 90% confidence, matched to the Office Depot catalog, lines pre-filled and charged to Finance.

route · /buy
📊02

Spend Analysis

A real UNSPSC spend cube, not a flat KPI page

The gap it closes

The spend page showed totals and a trend line. There was no commodity taxonomy, no sliceable cube, and no way to see leakage.

The flow
Classify every line to UNSPSC
Tiered: catalog → keyword → LLM
Slice by commodity · supplier · CC · period
Surface maverick · tail · fragmentation
Classifiercatalog → keyword → LLM
Cube dimensions5
Insightsmaverick · tail · consolidation
VERIFIED LIVE

Live: €7,388 of committed spend, 100% classified, €3,390 (45.9%) flagged maverick — spend that skipped a preferred or contracted supplier.

route · /spend/analysis
💼03

Services Procurement

Statements of Work with service entry sheets

The gap it closes

Goods ran PO → goods receipt → invoice. Services spend — often half the total — had only timesheets, no SOW lifecycle or delivery proof.

The flow
Create a milestone-based SOW
Activate the engagement
Log a service entry sheet (services GR)
Approve → milestone becomes billable
Engagementfixed-fee milestones
Delivery proofservice entry sheet
Billableapproved milestones
VERIFIED LIVE

Live: a €20,000 SOW at €5,000 delivered (25%). Approving a service entry sheet moved billable value to €17,000 automatically via the value-rollup trigger.

route · /services
🔌04

cXML PunchOut

Shop supplier-hosted catalogs over standards cXML

The gap it closes

There was a mock REST connector and a SAP IDoc generator, but no standards-based PunchOut — the catalog integration every enterprise buyer expects.

The flow
PunchOutSetupRequest to the supplier
Shop the supplier-hosted store
Cart returns as a PunchOutOrderMessage
Convert → requisition; OrderRequest back out
ProtocolcXML 1.2 PunchOut
Roundtripsetup → cart → requisition
Demobuilt-in mock supplier
VERIFIED LIVE

Live: a full roundtrip through the built-in mock supplier — punched out, built a cart, and it returned as a real cXML PunchOutOrderMessage (UNSPSC codes intact, €1,405) onto the review screen.

route · /punchout
🧾05

Compliant e-Invoicing

Suppliers submit — PO-flip or UBL/PEPPOL

The gap it closes

Scan-to-Pay was the buyer re-keying a PDF. Suppliers had no way to submit an invoice themselves, and nothing validated structured e-invoices.

The flow
Vendor flips a PO into an invoice
…or sends a UBL/PEPPOL e-invoice
EN 16931 compliance check
Emit INVOICE_MATCH → 3-way match
ChannelsPO-flip · UBL/PEPPOL
ValidationEN 16931 rules
Feedsthe existing matcher
VERIFIED LIVE

Live: the demo vendor flipped a PO into invoice INV-DEMO-2026-001 — tagged PO-FLIP, compliance surfaced as a warning, and the 3-way matcher picked it up (status MATCHING).

route · /vendor/invoices

Same kernel. New surface area.

Every module above reuses the existing approval engine, treasury loop, and agent fleet — no new infrastructure. That is the whole point of a kernel.

Enter the systemBack to home