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.
- Collects PO, invoice, and GRN evidence for each procurement case.
- Uses Gemini multimodal extraction to return normalized, structured line items with confidence and source references.
- Runs deterministic three-way matching for quantity, price, missing-line, and exposure calculations.
- Applies persisted operating policy for evidence requirements, price tolerance, automatic approval, and financial escalation.
- Drafts a supplier recovery notice with Gemini using only verified facts and fixed financial amounts.
- Tracks approval, dispatch, supplier acceptance, partial recovery, and confirmed credit with a complete audit trail.
- Command Center
- Cases
- Recoveries
- Suppliers
- Properties
- Analytics
- Audit
- Policies
- Integrations
- Team & Roles
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 8000Open http://127.0.0.1:8000/control-room and sign in with the configured demo credentials. Defaults are demo@procureops.ai and Demo@2026.
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.
npm run build:css
node --check procure_agent/static/app.js
.venv/bin/python -m pytestGemini 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.
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.
- 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.
- Devpost submission copy
- Architecture diagram and design notes
- Demonstration script
- Video recording checklist
See ARCHITECTURE.md for the system design and DEMO.md for the submission walkthrough.