← 返回 Skills 市场
d-zhangz

Autonomous Procurement Agent

作者 D-zhangz · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
121
总下载
1
收藏
0
当前安装
10
版本数
在 OpenClaw 中安装
/install autonomous-procurement-agent
功能描述
Enterprise procurement quote parsing and fraud detection. Use when: (1) A supplier quote arrives as messy plain-text, OCR scan, or SAP export, (2) Cross-plat...
使用说明 (SKILL.md)

Autonomous Procurement Agent

Stop overpaying. Stop missing fraud. Every week, procurement teams lose money because a supplier's quote arrived as a messy email, a merged-cell SAP export, or a PDF scan with OCR artifacts. The unit price got misread. The line math was wrong. Nobody caught it — until the invoice was already paid.

Autonomous Procurement Agent handles every format. Every currency. With fraud detection that actually blocks, not just warns.


First-Use Initialisation

Before processing any quotes, configure your environment:

# Required in production — server refuses to start without this
export LS_WEBHOOK_SECRET="your_ls_webhook_secret"

# Optional: enables GPT-4o fallback for messy formats (plain-text, OCR scans).
# Without this, Engine 2 is skipped and only regex parsing runs.
# All parsing is LOCAL without this key.
export OPENAI_API_KEY="sk-..."

# Optional: override default ports and directories
export PARSER_DATA_DIR="$HOME/.procurement-agent-data"
export PROCU_WEBHOOK_PORT="3002"

# Start the webhook server (receives LS payment events → activates license)
node webhook-handler.js &
# → Listening on http://localhost:3002/webhook/lemon-squeezy

Never log raw quote content, vendor names, or API keys to stdout. The parser runs entirely locally unless OPENAI_API_KEY is set — in which case Privacy Shield scrubs all sensitive fields before any external call.


Quick Reference

Situation Action
Supplier quote in plain-text or email Parse with Engine 1 (regex, \x3C50ms)
Invoice has merged cells or OCR artifacts Engine 2 triggers automatically (if OPENAI_API_KEY set)
F1 math error detected on a line item Line blocked → whole PO escalated to REVIEW
F2 price spike >20% above historical avg CRITICAL alert → auto-block
F3 duplicate PO within 7 days Warning logged → duplicate flagged
Circuit breaker trips 2 consecutive approver failures Safety-Freeze → all POs held for manual approval
Lemon Squeezy payment confirmed Webhook writes to data/licenses.json automatically
High-value PO (>$50,000) needs LLM hint generateLLMHint() called with USD-normalised structure
Receiving a quote without API key Engine 1 regex only; no external calls made

Installation

Via ClawHub (recommended)

clawhub install autonomous-procurement-agent

Manual

git clone https://github.com/arya-openclaw/autonomous-procurement-agent.git \
  ~/.openclaw/skills/autonomous-procurement-agent
cd ~/.openclaw/skills/autonomous-procurement-agent
npm install

Lemon Squeezy Webhook Setup

  1. Go to your Lemon Squeezy dashboard → Webhooks
  2. Add endpoint: https://your-domain.com/webhook/lemon-squeezy
  3. Copy the signing secret → set as LS_WEBHOOK_SECRET
  4. For local dev, use ngrok: ngrok http 3002

No PayPal: Lemon Squeezy handles global tax (VAT/GST included in price) and supports Payoneer / World First / Wise payouts. PayPal is not supported due to high dispute fees and China-market account ban risk.


Environment Variables

Variable Required Default Description
LS_WEBHOOK_SECRET Yes (prod) HMAC-SHA256 signing secret from LS dashboard. Server refuses to start without it.
OPENAI_API_KEY No OpenAI key. Only needed for Engine 2 (GPT-4o fallback). Without it, all parsing is local.
LS_PRO_VARIANT_ID No 999 Lemon Squeezy variant ID for Pro tier
LS_ENT_VARIANT_ID No 2999 Lemon Squeezy variant ID for Enterprise tier
PARSER_DATA_DIR No ~/.procurement-agent-data Local directory for license DB + historical price baseline
CB_THRESHOLD No 2 Circuit breaker failures before Safety-Freeze triggers
PROCU_WEBHOOK_PORT No 3002 Webhook HTTP server port
LS_STORE_ID No Lemon Squeezy store ID for API calls
LS_API_KEY No Lemon Squeezy API key for license management
OPENAI_MODEL No gpt-4o OpenAI model for LLM fallback (only when OPENAI_API_KEY is set)
EXCHANGE_RATE_URL No Fixed table Optional live FX rate API endpoint
HISTORICAL_PRICE_URL No Built-in baseline Optional API for F2 historical price baseline
PROCU_ALLOWED_TIER No Dev override — bypasses webhook signature check. Do not use in production.

Scenarios

1. Cross-Platform Quote Reconciliation

A manufacturing firm receives quotes from three suppliers: one as a CSV export, one as a plain-text email ("qty 8 × $2,800 = $22,400"), one as a scanned PDF forwarded from a WhatsApp photo. Procurement Agent normalises all three to a structured comparison table in under a second.

2. B2B Finance Real-Time Risk Audit

Finance receives a €47,000 PO from a long-term vendor. The line items all check out mathematically — but F2 flags that the unit price for the primary component is 34% above the 6-month average. The PO is auto-blocked before the CFO's signature is requested.


How F1 / F2 / F3 Work

F1 — Calculation Verification (Enterprise only)

Every line: unit_price × quantity ≠ line_totalline blocked, PO escalated.

Supplier quotes "8 units × $2,800 = $22,400". You calculate the same. F1 checks it. Supplier made a $200 arithmetic error in their favour. You catch it before signing.

F1 runs automatically on every parse. No configuration required.

F2 — Price Spike Detection (Enterprise only)

Current price > historical average × 1.20 → CRITICAL alert + auto-block.

Ball bearings purchased at $12/unit for 6 months. New quote: $16/unit. F2 flags this 34% spike before approval.

Baseline import (one-time):

node self-healing-parser.js import-baseline ./historical-prices.json

F3 — Duplicate Quote Detection (Enterprise only)

Same vendor + same total + within 7 days → duplicate warning.

Two RFQs sent. Supplier responds twice. Finance processes both. F3 catches the duplicate before you pay twice.


Architecture

Supplier quote (any format)
        │
        ▼
┌─────────────────────┐
│  Engine 1: Regex   │  ← JSON → HTML table → CSV → Plain text
│  (\x3C 50ms)          │
└──────────┬──────────┘
           │
    confidence \x3C 0.5
    or messy format
           │
           ▼
┌─────────────────────┐
│  Engine 2: GPT-4o  │  ← Only runs if OPENAI_API_KEY is set.
│  (opt-in LLM)       │     All parsing is LOCAL without this key.
└──────────┬──────────┘
           │
    ┌──────┴──────┐
    │  Risk Engine │
    │  F1 / F2 /F3 │  ← Enterprise only
    └──────┬──────┘
           │
    risk_score > 0.5
           │
           ▼
    STATUS: REJECTED_FOR_REVIEW

Parsing Output Format

Every parseQuote() call returns a structured result. Here is the canonical schema:

{
  "vendor_name":     "Acme Corp",
  "po_number":       "PO-2024-0041",
  "currency":        "USD",
  "line_items": [
    {
      "description":    "Industrial Ball Bearing",
      "quantity":       8,
      "unit_price":     2800.00,
      "line_total":     22400.00,
      "extracted_raw":  "8 × $2,800 = $22,400",
      "f1_flag":        false,      // true if unit_price × qty ≠ line_total
      "f2_flag":        false,      // true if >20% above historical avg
      "anomaly":        false,
      "reason":         null
    }
  ],
  "subtotal":        22000.00,
  "tax":             1980.00,
  "total":           23980.00,
  "confidence_score": 0.93,
  "parse_method":    "regex",      // "regex" | "llm_fallback" | "html_table" | "csv"
  "is_llm_fallback": false,
  "variant_detected": null,         // "V4" | "V8" | "V10" | null
  "anomaly_flags":   [],
  "fraud_flags":     [],
  "recommendation":  "AUTO_APPROVED", // "AUTO_APPROVED" | "REVIEW" | "REJECT"
  "safety_freeze":   false,
  "llm_error":       null
}

Confidence Tiers

Score Tier Meaning
≥ 0.85 high Regex pipeline succeeded cleanly
≥ 0.5 medium Partial parse; some fields recovered
\x3C 0.5 low Unparseable; falls back to LLM or returns error

Privacy Shield (v1.0.0+)

Before any quote content is sent to the OpenAI API, it passes through a Privacy Shield — a local regex sanitiser that runs before the HTTP request is made. No external services are called; no data leaves your server at this stage.

Field Replacement Example
Supplier/vendor name [VENDOR_MASKED] "Acme Corp" → "[VENDOR_MASKED]"
Monetary amounts [AMOUNT_MASKED] "$1,234.56" → "[AMOUNT_MASKED]"
Email / phone / fax [PII_REDACTED] "[email protected]" → "[PII_REDACTED]"
Street addresses [PII_REDACTED] "12 Main St, Shenzhen" → "[PII_REDACTED]"

Trigger: Privacy Shield is applied automatically whenever OPENAI_API_KEY is set and a quote requires GPT-4o fallback. It does not run in local-only regex mode.

GPT-4o receives enough structure to validate mathematical consistency and detect anomalies — but cannot see actual supplier prices or identities.


License Tiers

Free Pro ($9.99/mo) Enterprise ($29.99/mo)
Quotes/month 20 500 Unlimited
Parse formats JSON, HTML, CSV All formats All formats + LLM fallback
F1 Calculation Check ✅ Built in
F2 Price Spike Detection ✅ Built in
F3 Duplicate Detection ✅ Built in
CNY→USD Normalization
Approval flow
Safety-Freeze circuit breaker
Historical price baseline
Priority support

Generic Setup (Other AI Agents)

For Claude Code, Codex, Copilot, or other agents:

mkdir -p ~/.openclaw/skills/autonomous-procurement-agent
git clone https://github.com/arya-openclaw/autonomous-procurement-agent.git \
  ~/.openclaw/skills/autonomous-procurement-agent
cd ~/.openclaw/skills/autonomous-procurement-agent
npm install

Parse a quote:

node self-healing-parser.js parse '\x3Ccontent>' [format] '{"email":"[email protected]"}'

Periodic Review

Review flagged POs regularly:

# List POs with active risk flags
grep -r "REJECTED_FOR_REVIEW\|CRITICAL\|suspicious" \
  ~/.procurement-agent-data/logs/ 2>/dev/null | tail -20

# Check Safety-Freeze status
grep "Safety-Freeze" ~/.procurement-agent-data/logs/*.log 2>/dev/null | tail -5

# Check license DB health
cat ~/.procurement-agent-data/data/licenses.json | python3 -m json.tool

Best Practices

  1. Always set LS_WEBHOOK_SECRET in production — the server refuses to start without it. There is no bypass flag.
  2. OPENAI_API_KEY is opt-in — without it, no quote content is ever sent to any external API.
  3. Import your historical price baseline before using F2 — without it, F2 spike detection uses a conservative built-in table.
  4. Keep PARSER_DATA_DIR backed updata/licenses.json is the source of truth for all license state.
  5. Do not commit data/licenses.json to git — add it to .gitignore. License records are per-install, not per-repo.
  6. Use PROCU_ALLOWED_TIER only in local dev — it bypasses webhook signature validation and must never be set in production.
  7. Webhook logs are sanitised automaticallysanitize() redacts email addresses and API keys before writing logs.
  8. Review F2 spike alerts promptly — F2 is silent until a spike is detected; configure alerts accordingly.

Multi-Agent Support

OpenClaw (primary platform)

Activation: Automatic skill loading via ClawHub or workspace injection.

Detection: Trigger keywords (supplier quote, purchase order, vendor risk, price spike, fraud detection, approval escalation, safety freeze).

Claude Code / Codex

Activation: Direct invocation or workspace injection.

Setup: Copy skill to ~/.openclaw/skills/autonomous-procurement-agent, then:

export LS_WEBHOOK_SECRET="your_secret"
node webhook-handler.js &

Detection: Chat triggers listed above.

GitHub Copilot

Activation: Manual prompt — reference the skill directly in conversation.

Setup: Add to .github/copilot-instructions.md:

## Procurement Fraud Detection

When reviewing vendor quotes or purchase orders, use:
~/.openclaw/skills/autonomous-procurement-agent/self-healing-parser.js

Set OPENAI_API_KEY for LLM fallback on messy formats.

Agent-Agnostic Guidance

Regardless of agent, apply Autonomous Procurement Agent when:

  1. A supplier quote arrives in a non-standard format — plain-text, merged-cell spreadsheet, OCR scan.
  2. Multiple currencies need to be compared — CNY, USD, EUR reconciliation.
  3. A high-value PO needs validation — F1 catches math errors; F2 catches price spikes.
  4. Duplicate invoices are suspected — F3 detects same-vendor same-total within 7 days.
  5. Approval thresholds need to be enforced automatically — Safety-Freeze on circuit breaker trip.
安全使用建议
Key things to check before installing: - Metadata mismatch: the registry header you gave says 'no required env vars' and 'instruction-only' but the package/manifest/SKILL.md require LS_WEBHOOK_SECRET (server refuses to start without it) and include code files. Do not rely on the top-line registry summary; inspect the manifest and SKILL.md. - LS_WEBHOOK_SECRET is mandatory in practice — keep it secret and treat the webhook server as a service that can receive remote requests. Verify X-Signature verification is working and that the secret is unique. - Do NOT set PROCU_ALLOWED_TIER in production. That env var is an explicit bypass for license checks and will enable enterprise features without proper webhook verification. - If you enable OPENAI_API_KEY: confirm masking is actually applied immediately before the network call. The code includes maskSensitiveData, but the truncated sources do not show every call path; review call sites to ensure no PII/amount/vendor data is sent unmasked. Consider testing with dummy keys and sample inputs. - Review where PARSER_DATA_DIR defaults (self-healing-parser defaults to /tmp/procurement-data; PRIVACY.md mentions ~/.procurement-data) and set a directory you control; check file permissions for licenses.json and historical-prices files. - Because this runs a local long-lived server and writes a local DB, review logs and the sanitize() function in webhook-handler.js to ensure no sensitive values are accidentally logged. The code takes precautions, but regex-based scrubbing can be brittle. - If you need enterprise features, validate the Lemon Squeezy integration end-to-end in a safe environment (ngrok/local dev) before enabling on production systems. If you want, I can: (1) point to the exact places in the code where masking and LLM calls occur so you can verify, (2) produce a short checklist to harden a deployment (systemd unit, restricted data dir, log retention), or (3) re-scan the full files for any other risky patterns.
功能分析
Type: OpenClaw Skill Name: autonomous-procurement-agent Version: 1.0.0 The skill bundle implements a legitimate procurement parsing and fraud detection tool. It features a dual-engine architecture (local regex and optional OpenAI fallback) with a built-in 'Privacy Shield' in `self-healing-parser.js` designed to mask PII and sensitive financial data before any external API calls are made. The `webhook-handler.js` includes proper security practices such as HMAC-SHA256 signature verification using `crypto.timingSafeEqual` and log sanitization to prevent credential leakage. No evidence of data exfiltration, unauthorized execution, or malicious prompt injection was found; the code's behavior is strictly aligned with its documented purpose.
能力标签
cryptocan-make-purchasesrequires-oauth-token
能力评估
Purpose & Capability
The code and docs implement a dual-engine parser, local risk checks (F1/F2/F3), a webhook license handler, and optional OpenAI fallback — all coherent with the stated procurement purpose. However the registry header you provided claims 'Required env vars: none' and 'instruction-only', while the SKILL.md/manifest and code require LS_WEBHOOK_SECRET (mandatory in production) and include code files (not instruction-only). This metadata mismatch should be resolved before trusting the listing.
Instruction Scope
SKILL.md instructs starting a local webhook server (webhook-handler.js) and setting LS_WEBHOOK_SECRET. It also documents optional use of OPENAI_API_KEY to enable LLM fallback, claiming sensitive fields are scrubbed before external calls. The code contains a maskSensitiveData function, but the SKILL.md's strong privacy claim (‘scrubs all sensitive fields before any external call’) cannot be fully verified in the truncated sources shown — it's unclear whether masking is always applied to the exact payload sent to OpenAI. Also the README/manifest/instructions reference local data directories and writing licenses.json — the instructions direct file I/O and network calls (webhook + optional OpenAI) which are within purpose but need explicit confirmation you want a long-running server and local license DB.
Install Mechanism
No hidden download URL or installer script; recommended install is git clone + npm install, and package.json declares only dotenv (and optional openai). No binary downloads from untrusted hosts are present. This is a low-to-moderate install risk consistent with typical Node packages.
Credentials
Requested environment variables (LS_WEBHOOK_SECRET mandatory in practice, optional OPENAI_API_KEY, LS_API_KEY, PARSER_DATA_DIR, etc.) are appropriate for a webhook/licensing + optional LLM integration. But the registry metadata you provided claims 'none' which contradicts the manifest and SKILL.md. Additionally, the PROCU_ALLOWED_TIER env var provides a dev fallback that bypasses webhook/license verification — if mis-set in production it would allow unauthorized access to enterprise features. The number and sensitivity of env vars is reasonable for the feature set, but the manifest/metadata mismatches and the bypass variable are notable risks.
Persistence & Privilege
The skill runs a local HTTP webhook server, stores a local license DB and historical-price files under a configurable PARSER_DATA_DIR, and does not request platform-wide or 'always' privileges. It does not modify other skills' configs. Requesting to persist its own license DB and event logs is proportionate to its purpose.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install autonomous-procurement-agent
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /autonomous-procurement-agent 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.2.2
Summary: Improved documentation for clarity, new privacy and usage details, no code logic changes. - Updated SKILL.md with clearer skill description, core functions, use cases, and privacy details. - Revised installation and operating environment instructions. - Clarified that order placement with ERP/third-party platforms is not supported. - README and SKILL.md reflect new privacy handling when using OpenAI API. - No functional or code logic changes in self-healing-parser.js.
v1.2.1
Version 1.2.1 - Updated PRIVACY.md file. - No changes to functionality or features.
v1.2.0
**v1.2.0 - Major documentation update and core enhancements** - Completely revised and condensed SKILL.md with streamlined instructions and new summary. - Quick Reference table is preserved for key fraud/risk scenarios. - Installation section now emphasizes ClawHub method. - Source files updated: install.sh, manifest.json, test-oversized-payload.js, webhook-handler.js, with focus on clarity and maintainability. - Some detailed usage and configuration information removed or relocated in README.
v1.1.0
v1.1.0: CompleteLemon Squeezy removal; all features freely available; R1 HTTPS enforcement; S2 10KB body limit; SMTP email; admin.js unfreeze; full ClawHub metadata compliance
v1.0.5
autonomous-procurement-agent v1.0.5 - Default data directory changed to `./data` (cwd-anchored) instead of `$HOME/.procurement-agent-data` - Updated documentation to highlight cwd-based storage paths and clarify never to use `$HOME` - Environment variable table and setup instruction updates reflecting the new default path - No changes to core fraud/RFQ parsing logic or output schema
v1.0.4
Autonomous Procurement Agent v1.0.4 - Adds support for dual-engine parsing: fast regex as primary, with GPT-4o fallback for complex or messy quotes. - Enterprise-level fraud detection: F1 (math errors), F2 (price spikes), and F3 (duplicate quote) with automatic escalation and blocking. - Cross-platform currency and format handling (CNY, USD, EUR; plain-text, OCR, SAP exports). - Real-time risk auditing and approval threshold automation for finance teams. - Lemon Squeezy-based license management with local privacy-first processing unless LLM fallback is enabled. - Updated documentation for deployment, environment variables, and clear output schema.
v1.0.3
Autonomous Procurement Agent v1.0.3 - Adds robust support for parsing non-standard supplier quotes, including messy plain-text, OCR scans, and SAP exports. - Implements dual-engine extraction: fast local regex (Engine 1) with GPT-4o fallback (Engine 2) for difficult formats. - Introduces F1 (math errors), F2 (price spikes), and F3 (duplicate detection) fraud checks for real-time risk auditing. - Streamlines invoice reconciliation across multiple currencies (CNY, USD, EUR) and supports automated approval escalation. - Integrates with Lemon Squeezy for MoR subscription management, featuring mandatory webhook and secure local data handling. - Emphasizes privacy: all parsing is local unless GPT-4o is explicitly enabled, with sensitive fields scrubbed on external calls.
v1.0.2
autonomous-procurement-agent v1.0.2 - Updated listing, manifest, and package metadata files. - No breaking changes to API, behavior, or documentation content. - Internal metadata improvements for store/listing consistency.
v1.0.1
autonomous-procurement-agent 1.0.1 - Adds detailed documentation for setup, environment variables, and supported scenarios - Describes dual AI engine architecture (regex and GPT-4o fallback) for parsing supplier quotes in any format - Outlines F1 (math error), F2 (price spike), and F3 (duplicate) fraud detection features, with auto-blocking and escalation - Supports invoice reconciliation across multiple currencies and automatic approval threshold enforcement - Enables optional Lemon Squeezy webhook integration for license/feature gating - All parsing runs locally by default; external API usage (GPT-4o) is opt-in and privacy-shielded
v1.0.0
Initial release of Autonomous Procurement Agent for enterprise quote parsing and fraud detection. - Parses supplier quotes from plain-text, OCR scans, or SAP exports into structured data. - Dual-engine parsing: fast regex (local) with optional GPT-4o fallback for messy formats. - Automated fraud/risk checks: F1 arithmetic error detection, F2 price spike alerts, F3 duplicate PO flagging. - Cross-currency reconciliation (CNY/USD/EUR) for B2B finance teams. - Circuit breaker and approval escalation for high-risk or high-value POs. - Full local processing unless external LLM is explicitly enabled (privacy safeguards included). - Integrated with Lemon Squeezy for license management and webhook-based activation.
元数据
Slug autonomous-procurement-agent
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 10
常见问题

Autonomous Procurement Agent 是什么?

Enterprise procurement quote parsing and fraud detection. Use when: (1) A supplier quote arrives as messy plain-text, OCR scan, or SAP export, (2) Cross-plat... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 121 次。

如何安装 Autonomous Procurement Agent?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install autonomous-procurement-agent」即可一键安装,无需额外配置。

Autonomous Procurement Agent 是免费的吗?

是的,Autonomous Procurement Agent 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Autonomous Procurement Agent 支持哪些平台?

Autonomous Procurement Agent 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Autonomous Procurement Agent?

由 D-zhangz(@d-zhangz)开发并维护,当前版本 v1.0.0。

💬 留言讨论