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: €890,623 of committed spend across 6 commodities and 11 suppliers, 80.9% classified, 19.8% 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
06

Fleet Health & Circuit Breaker

The agents tell you when they stop working

The gap it closes

The LLM-backed fleet failed 100% for weeks in silence. All 23 cron jobs reported success — because a cron succeeds at EMITTING an event regardless of what the agent then does with it. The daily health check never fired once: it required queued work, and an agent that fails instantly leaves nothing queued.

The flow
Measure success rate per agent, not just staleness
→
Group failures by normalised error signature
→
Breaker opens on provider outage only
→
Held events stay pending — replayed on recovery
Detectsbroken, not just stalled
On outagework held, never burned
Closes onone successful run
VERIFIED LIVE

Live: 159 of 259 events had been silently burned at 63% failure. The repaired check now alerts on 8 agents where it previously alerted on none, and reports “9 agents are failing with the same error — this is one incident, not 9.”

route · /owner/fleet-health
07

Over-Receipt Guard

You cannot receive more than you ordered

The gap it closes

Goods receipt was completely unguarded. A receipt for 10× the ordered quantity was accepted by the database — and because the three-way match reconciles invoice against PO and GR, an equally inflated invoice would then reconcile cleanly and get paid.

The flow
Receipt entered against a PO line
→
Cumulative quantity checked, not per-line
→
Tolerance % read from the constitution
→
off / warn / block — enforced in the database
Enforced inthe database, not the route
Checkscumulative across receipts
Modesoff · warn · block
VERIFIED LIVE

Live: block mode refused a 5× over-receipt naming the PO and the numbers, still accepted the exact ordered quantity, refused a follow-up receipt of just 1 more unit, and allowed 105 against 100 under a 10% tolerance.

route · /receipts

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