Skip to content

Repository files navigation

ProcureOps

ProcureOps is an autonomous hotel procurement recovery platform built for the Google hackathon. It turns purchase orders, supplier invoices, and goods receipts into an auditable exception and recovery workflow.

What It Does

  1. Collects PO, invoice, and GRN evidence for each procurement case.
  2. Uses Gemini multimodal extraction to return normalized, structured line items with confidence and source references.
  3. Runs deterministic three-way matching for quantity, price, missing-line, and exposure calculations.
  4. Applies persisted operating policy for evidence requirements, price tolerance, automatic approval, and financial escalation.
  5. Drafts a supplier recovery notice with Gemini using only verified facts and fixed financial amounts.
  6. Tracks approval, dispatch, supplier acceptance, partial recovery, and confirmed credit with a complete audit trail.

Application Modules

  • Command Center
  • Cases
  • Recoveries
  • Suppliers
  • Properties
  • Analytics
  • Audit
  • Policies
  • Integrations
  • Team & Roles

Run Locally

Prerequisites: Python 3.13, Node.js, Google AI Studio API access, and optional Google application credentials for Firestore.

python -m venv .venv
.venv/bin/pip install -e '.[test]'
npm install
npm run build:css
.venv/bin/uvicorn procure_agent.api:app --host 127.0.0.1 --port 8000

Open http://127.0.0.1:8000/control-room and sign in with the configured demo credentials. Defaults are demo@procureops.ai and Demo@2026.

Configuration

GOOGLE_API_KEY=...
GEMINI_MODEL=gemini-3.6-flash
GOOGLE_GENAI_USE_VERTEXAI=false
CASE_REPOSITORY=firestore
GOOGLE_CLOUD_PROJECT=your-project-id
UPLOAD_DIRECTORY=./uploads

Use CASE_REPOSITORY=memory for an ephemeral local run. Never commit .env or credentials.

Validation

npm run build:css
node --check procure_agent/static/app.js
.venv/bin/python -m pytest

Trust Boundary

Gemini extracts evidence and drafts supplier communication. Deterministic Python owns matching, tolerance enforcement, financial exposure, workflow transitions, and recovery amounts. This prevents generated text from becoming financial authority.

Data Sources

ProcureOps does not depend on a proprietary training dataset. Runtime evidence comes from purchase orders, supplier invoices, and goods receipts uploaded by an authorized operator. The built-in demonstration uses synthetic hotel, supplier, document, and recovery records created for this project; it contains no personal or confidential third-party data.

Findings and Learnings

  • Three-way matching is most trustworthy when unstructured extraction and financial authority are separated. Gemini normalizes evidence, while deterministic code calculates exposure and controls state changes.
  • A model-generated confidence value is useful only when paired with a source reference that an operator can inspect.
  • Recovery is not complete when an exception is detected. Approval, supplier communication, partial settlement, final credit, and rationale all need durable lifecycle states.
  • Operational settings must affect processing behavior. ProcureOps persists and enforces evidence, tolerance, approval, and escalation policies instead of presenting decorative administration controls.
  • Failed automation must remain visible. Processing failures are persisted as auditable case events rather than disappearing behind a transient error response.

Submission Materials

See ARCHITECTURE.md for the system design and DEMO.md for the submission walkthrough.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages