Skip to Content
GuidesRequisition Intake

Requisition Intake (Spend Approval)

Every purchase requisition is routed by a tiered spend-approval matrix. The granular approver routing is procurement-specific; the canonical allow/prepare/escalate/block verdict is delegated to the shared Guardian.

The approval ladder

Routes, in escalating order:

auto_approve → manager_approval → director_approval → cfo_approval → blocked

The default policy (DEFAULT_SPEND_POLICY, currency USD):

Amount (≤)Route
1,000Auto-approved
10,000Manager approval
50,000Director approval
no capCFO approval

Fail-closed escalation

Two conditions push a requisition one step above its amount tier:

  • Restricted cost centercapex and legal are restricted by default; any requisition in them escalates one step (raises restricted_cost_center).
  • Over budget — when amount > budgetRemaining, the request escalates one step rather than auto-clearing (raises over_budget).

Both conditions can stack. The resolved route maps onto the shared engine’s autonomy ladder before the Guardian returns the verdict:

RouteAutonomy level (@onoots/core)
auto_approvefull_auto
manager_approval / director_approvalai_prepare_human_approve
cfo_approval / blockedhuman_licensed_only

Worked example

A 7,400 requisition on cost center operations with 20,000 budget remaining lands in the manager tier (≤ 10,000), is not restricted, and is within budget → Manager approval. Switch the cost center to capex and it escalates one step to Director approval; drop the budget below the amount and it escalates again.

See the API Reference for the resolveApproval signature and the SpendPolicy shape (tiers are easily customized per tenant).

Last updated on