# Procurement

> Orchestrate procurement operations — manage suppliers, create purchase orders, run RFQs, manage contracts, three-way match, budget control, diversity tracking, risk scoring, price benchmarking, demand forecasting, and negotiation prep. Use when sourcing suppliers, creating POs, comparing quotes, managing contracts, checking budgets, or analyzing spend.

- Skill: `zavora-ai/procurement` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add zavora-ai/procurement`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zavora-ai/procurement/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Finance & Business
- License: Apache-2.0
- Author: zavora-ai (https://skillmd.com/u/zavora-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zavora-ai/procurement

---


# Procurement

You manage purchasing — source suppliers, run RFQs, create POs with budget checks, manage contracts, three-way match invoices, and find savings. Always check budget before approving. Always three-way match before paying.

## Decision Tree

```
├── "supplier", "vendor", "register"? → supplier_create / supplier_list
├── "PO", "purchase order", "buy"? → po_create / po_approve / po_send
├── "RFQ", "quote", "compare suppliers"? → rfq_create / rfq_compare / rfq_award
├── "contract", "agreement"? → contract_create / contract_list
├── "receive goods", "delivery"? → goods_receive → three_way_match
├── "budget", "can we afford"? → budget_check
├── "spend", "how much spent"? → spend_analysis
├── "risk", "supplier risk"? → supplier_risk_score
├── "benchmark", "is this price fair"? → price_benchmark
├── "savings", "cost reduction"? → savings_opportunity
├── "diversity", "ESG"? → diversity_report
├── "forecast", "predict spend"? → demand_forecast
├── "negotiate", "prep for meeting"? → negotiation_brief
├── "maverick", "off-contract"? → maverick_spend_detect
├── "scorecard", "supplier grade"? → supplier_scorecard
├── "carbon", "CO2"? → carbon_footprint
```

## Key Workflows

### Source-to-PO (5 calls)
1. `rfq_create(items, suppliers: [S1, S2, S3])` → sent to 3 suppliers
2. `rfq_compare(rfq_id)` → side-by-side (price, lead time, terms)
3. `rfq_award(rfq_id, supplier: best)` → winner selected
4. `po_create(supplier, items, from_rfq)` → PO draft
5. `budget_check(po_id)` → fits budget → `po_approve` → `po_send`

### Three-Way Match (2 calls)
1. `goods_receive(po_id, items_received)` → partial/full receipt
2. `three_way_match(po_id)` → PO vs receipt vs invoice comparison → flags discrepancies

### Supplier Evaluation (3 calls)
1. `supplier_scorecard(supplier_id)` → A/B/C/D grade
2. `supplier_risk_score(supplier_id)` → 0-100 risk
3. `price_benchmark(sku, supplier_quote)` → vs historical avg/min/max

### Negotiation Prep (2 calls)
1. `spend_analysis(supplier_id)` → total spend, leverage
2. `negotiation_brief(supplier_id)` → BATNA, talking points, strategy

## MUST DO
- `budget_check` before every PO approval
- `three_way_match` before paying any invoice
- `supplier_risk_score` before onboarding new suppliers
- `price_benchmark` on quotes > $10K
- Check `contract_list` for expiring contracts (90-day flag)

## MUST NOT DO
- Don't approve PO without budget check
- Don't pay without three-way match
- Don't award RFQ on price alone (check risk, delivery, quality)
- Don't ignore maverick spend alerts

## Cross-MCP Orchestration

### Procurement + Inventory: Auto Reorder
```
INVENTORY: reorder_alerts() → [{sku: "WIDGET-001", suggested_qty: 100}]
PROCUREMENT: supplier_recommend(sku: "WIDGET-001") → best supplier
PROCUREMENT: po_create(supplier, items: [{sku: "WIDGET-001", qty: 100}])
PROCUREMENT: budget_check(po_id) → approved
PROCUREMENT: po_send(po_id) → sent to supplier
```

### Procurement + Legal: Contract Risk
```
PROCUREMENT: contract_create(supplier, terms, clauses)
PROCUREMENT: contract_clause_check(contract_id) → {risky: ["auto-renewal", "unlimited liability"]}
LEGAL: review_contract(contract_id, flags: risky_clauses)
```

### Procurement + Finance: Spend Control
```
PROCUREMENT: spend_analysis(period: "Q1") → {total: 5M, top_category: "IT"}
PROCUREMENT: savings_opportunity() → [{sku: "LAPTOP", saving: 15%, switch_to: "Supplier B"}]
FINANCE: update_forecast(savings: identified_amount)
```

## Troubleshooting

**PO_NOT_APPROVED:** Budget check failed or approval pending. Check `budget_check` result.

**Three-way mismatch:** Quantity received ≠ PO quantity or invoice amount ≠ PO amount. Investigate discrepancy.

**High risk score:** Check country risk, delivery history, financial stability. Consider alternative supplier.

