One protocol per problem.
Everything inspectable.
This isn't a monolithic app with an “AI feature.” It's a stack of six narrow protocols, each doing one thing well, composed into a multi-agent pipeline where every step on screen maps to a specific file, function, or wire event.
One invoice, end-to-end.
What actually happens between “open the demo” and a posting record in the audit pane. Each edge is a real protocol carrying real traffic — animated so you can see the direction of flow.
Four layers, six protocols, one stack.
The same stack, flattened. Each layer is replaceable in isolation — that's why we're betting on protocols rather than a vertically-integrated framework.
Hypothetical: discovers ap-orchestrator via the L2 A2A card, registers it as a managed agent, renders the L4 A2UI Cards in its own chat surface — no code changes on this side
Declarative agent UI surfaces (A2UI) + sandboxed iframe artifacts (MCP Apps — Vendor KG, AP Analytics) with bidirectional postMessage
SSE streaming — every tool call, stage progress event, and emit_* payload reaches the client live via @ag-ui/client
Cross-agent discovery via /.well-known/agent.json — registerable with Gemini Enterprise as a managed agent without code changes
SequentialAgent orchestration, session/memory services, deterministic sub-agent dispatch
Six pillars, in order.
AILANG leads — it's ours, and it's the reason this stack can promise zero-LLM-token extraction. Everything else is industry protocol, picked for fit.
AILANG
Deterministic parse + effect-typed code generation
Reads invoices (DOCX, ODT, XLSX, EML, PDF) into structured JSON without burning a single LLM token on extraction. AILANG's effect system guarantees the parser can't perform any side-effect outside the parse — what comes out is auditable by construction.
Where to see it
Process a sample invoice and watch the Extract step in the pipeline rail finish in under a second on a clean DOCX. That's pure AILANG — Gemini is never asked to read the file.
Google ADK
Multi-agent orchestration framework
Four declarative SKILL.md files plus a SequentialAgent compose the AP pipeline (Intake → Extract → Validate → Post). No hand-rolled routing code: the workflow is deterministic Python orchestration, sub-agent dispatch is resolved by the ADK runtime, and session/memory/artifact services are stock ADK.
Where to see it
backend/skills/templates/ap-orchestrator/SKILL.md plus the three specialist SKILL.md siblings. Open the Audit View on any specialist chip to see the ADK Runner trace.
A2UI
Declarative agent UI (Agents-to-UI)
Every emit_* tool the pipeline calls writes a typed JSON payload that the frontend renders as an A2UI Card — invoice extraction, AP verdict, posting record. No bespoke component per skill: the same renderer handles every emit_* payload across the whole product, courtesy of the JsonAsA2UICard adapter.
Where to see it
Right-hand 'workspace' surface during a pipeline run. Each completed step pushes a Card with full inspectable detail.
MCP Apps
Sandboxed iframe artifacts with postMessage handshake
Two MCP Apps ride alongside the pipeline: the Vendor Knowledge Graph (a Cytoscape-rendered network of vendor, prior invoices, POs and audit citations) and the AP Analytics Dashboard (aging, vendor mix, GL breakdown — Chart.js, canvas-only, no CDN bloat). Both run on a separate-origin Cloud Run service and use the spec's bidirectional postMessage handshake — click a citation row in the KG or a stat tile in the dashboard and the iframe sends ui/update-model-context back to the host, which auto-drafts a follow-up question to the agent. Sandboxed UI primitives the agent can react to, not decorative embeds.
Where to see it
Workbench right pane during a pipeline run — Vendor KG appears under the Vendor tab, the dashboard under Analytics. Click any node or stat to see the round-trip fire a chat message.
AG-UI
Streaming event protocol between agent and client
The four-step pipeline rail you watch animate during a run is driven by AG-UI TOOL_CALL_START/END and STAGE_PROGRESS events streamed over SSE. The same channel carries the thinking output, the emit_* tool payloads, and the final assistant message — one connection, every observable.
Where to see it
Open the browser DevTools Network panel during a run — the /chat/stream request stays open and you can watch the event stream tick.
A2A
Agent-to-Agent discovery + capability negotiation
The ap-orchestrator publishes an /.well-known/agent.json with its full capability profile and X-A2A-Extensions header support. That makes it registerable with Gemini Enterprise as a managed agent without code changes — discovery and handshake follow the A2A spec.
Where to see it
curl https://gde-ap-agent-blqtqfexwa-ew.a.run.app/.well-known/agent.json — every field is there.
Who can consume this
- Gemini Enterprise — Hypothetical consumer — point Gemini Enterprise at the agent card URL and ap-orchestrator becomes a managed agent in the Agentspace catalogue, with A2UI Cards rendering natively in its chat surface.
The end-to-end flow.
- 01
Land on the orchestrator chat, pick a sample invoice or drop your own.
- 02
Pipeline rail animates Intake → Extract → Validate → Post in real time.
- 03
Each completed step pushes an inspectable A2UI Card to the workspace pane.
- 04
Click any specialist chip on the audit view to inspect tools, input, output.
- 05
Click a citation node in the Vendor KG — the iframe round-trips a chat message asking about that prior invoice.
- 06
Click a stat tile in the AP Analytics Dashboard — same handshake, agent answers with the matching invoice list.
- 07
Every decision is traceable to a specific tool call you can re-run standalone.
Where to verify each claim.
gde-ap-agent-blqtqfexwa-ew.a.run.appSingle Cloud Run service. Next.js front, FastAPI on /api/* via reverse proxy.mcp-sandbox-374404277595.europe-west1.run.appSeparate-origin Cloud Run. Vendor KG + AP Analytics artefacts, bidirectional postMessage./.well-known/agent.jsonDiscovery surface for Gemini Enterprise registration.That's the stack