Multi-Level Purchase Order Approval with Budget Control

Procurement teams need to approve purchase orders fast while respecting department budget codes and multi-tiered approval thresholds.

The problem

Purchase orders routed through ERP or workflow systems are evaluated by Corules before proceeding. Small POs from approved vendors auto-approve. Large amounts or non-approved vendors escalate to the correct approval tier — manager, director, or executive — based on policy parameters. Budget codes are validated to prevent overspend.

Without deterministic enforcement, AI agents either block every edge case (adding manual overhead) or silently approve decisions that violate policy — with no audit trail to show auditors or regulators.

How Corules solves it

Corules sits between your AI agent and the action it wants to take. When the agent proposes a decision, Corules evaluates the full context against your compiled policy set in a single deterministic pass — no LLM, no ambiguity.

The result is a structured outcome: ALLOWPO $8,200 from approved vendor within manager authority ($10,000 limit). Budget remaining $42,000.

Decision outcome: ALLOW

PO $8,200 from approved vendor within manager authority ($10,000 limit). Budget remaining $42,000.

Policy example

Corules policies are written in CEL (Common Expression Language). They are compiled once at publish time and evaluated deterministically at request time — no LLM, no variability.

// PO approval policy (CEL)
context.vendor_approved == true
  && context.amount <= params.approval_thresholds[context.department][context.approver_level]
  && context.budget_remaining >= context.amount

This expression is evaluated against the structured context your agent sends in the /v1/validate request.

Integration options

Corules integrates with the tools your teams already use. All integrations call the same REST API or MCP server — your policy logic stays in one place.

SalesforceMicrosoft Power PlatformREST API

Frequently Asked Questions

Can thresholds differ by department or entity?

Yes. Thresholds are stored in params as nested maps keyed by department and approver level. Different entities (US, EU) can have different currency-converted thresholds.

What happens when budget is exhausted?

The decision is BLOCKED with specific reason: budget_remaining insufficient. The response includes current remaining budget and the overage amount.

Ready to enforce this policy?

Start free — evaluate up to 1,000 decisions per month with no credit card required.

Get started free