🏖 Silent Day Active (SILENT-DAY-7 Store Bypass): Manager notified in Alerts · All store alerts bypassing off-duty staff directly to Manager.
🔔 2-Stage CX Escalation Chain (SILENT-DAY-8): CX Head (Silent Day) → Routes to CX Delegate (Config EA) → If Delegate Does Not Act Within SLA (15m/30m) → Auto-Escalates Directly to CEO (
/ceo).
PART 1 · EXECUTIVE SUMMARY (FIRST 0.5 PAGE — ABOVE THE FOLD)
PCR-1..14 · EMPLOYEE PETTY CASH, STORE UPI IMPREST & EXPENSE REIMBURSEMENTS (+ J23)
Employee Petty Cash, Store UPI Imprest & Expense Reimbursement Module (PCR-1..14) + Interactive Journey J23 (PCR-1..14 · 3 UNIFIED CHANNELS · 20S LIVE CAMERA + GOODS PROOF · OCR + PHASH ANTI-DUPE · A2 TIERED APPROVALS · AUD-7 BLIND SAFE RECON · DIRECT UPI PAYOUT)
1. What We Are Building & Why
- 3 Expense & Cash Channels Unified in One Ledger (
PCR-1..3): (Channel A — Outlet Daily Petty Cash & UPI Float≤ ₹2,500): Emergency milk/ice/sugar runs, urgent fuse/plumber repairs, LPG refills, water tankers, CX recovery (bound to activedrawer_custody); (Channel B — Employee Out-of-Pocket Reimbursements for all 629+ Staff across 7+1 Depts): Inter-outlet travel linked to approved Stop 4 Crew Loans (A2) via singleexpense_trip(trip_id), late-night cabs (>23:00 IST), NSO site visits (Stop 2), R&D samples (Stop 3), and licence challans (Stop 1); (Channel C — Café Project Site & CPU Imprest≤ ₹5,000): Linked directly to Stop 2 India Site Kiosk (J17) 4-Photo Site GRN. - 20-Second Ground-Simple Live Capture + OCR + Perceptual Hash Anti-Dupe (
PCR-4..6): Workers tap 1 of 8 Visual Category Tiles, snap a Live Camera Receipt + Physical Goods Photo (Zero Gallery Uploadenforced via EXIF≤10mcheck), and sign with their 4-digit PIN (O-045). Server-side OCR extracts Vendor, Date,amount_paise(BIGINT), and Mod-36 validatedvendor_gstin(with Section 16(4)itc_sla_deadline), while globalsha256_hex, 7-dayocr_fingerprint, and 64-bit DCTphash_64(Hamming≤10) block re-photographed bills and cross-outlet receipt recycling. - Rolling 24h Anti-Split-Bill Matrix (
PCR-7..10, Aligned withA2) & Closed-LoopAUD-7/ UPI Payout (PCR-11..14): Tier 1 (≤ ₹500,≤ ₹1,500/24h): Auto-approved on valid dual photos; Tier 2 (₹501–₹2,500or Crew Loan Travel): Approved by Outlet Manager OR Cluster Manager with automatic visibility to City Head (A2); Tier 3 (₹2,501–₹10,000or Rolling 24h Split-Bill Bundle): City Head + Finance Controller; Tier 4 (> ₹10,000): CFO (cfo@harleys.com). Reconciles in AUD-7 Blind Cash Drops and batches employee payouts into idempotent Direct UPI Runs isolated from HR payroll (PM-5).
2. Personas & Access Scope
- Store Crew, Shift Leads & All 629+ Employees (7+1 Depts): Submit 20-second Store Petty Cash vouchers (Channel A) or personal out-of-pocket reimbursements (Channel B) via Kiosk or Mobile with live camera proof.
- Project Site Supervisors & CPU Managers: Spend and replenish
≤ ₹5,000UPI Imprest (Channel C) tied toJ174-Photo Site GRNs. - Outlet Manager & Cluster Manager (Owner Rule A2): Approve Tier-2 (
₹501–₹2,500& Crew Loan Travel) claims under strict non-circular rules, automatically notifying the City Head (city_head_notified_at). - City Head, Finance Controller & CFO (
cfo@harleys.com): Approve Tier-3/Tier-4 & split-bill bundles, monitor GST ITC SLAs, and execute idempotent weekly Direct UPI Reimbursement Batches.
3. Right-Side Stage-Aware Owner Sign-Off Box
- Approve
PCR-1..63-Channel Ledger, 8-Tile 20s Live Capture & Perceptual Hash / Mod-36 GSTIN Guard: Zero gallery upload for store petty cash, dual Bill+Goods photos,phash_64anti-recycling, and singleexpense_trip(trip_id). - Approve
PCR-7..104-Tier Approval Matrix (Aligned withA2) & Rolling 24h Anti-Split-Bill Trigger: Tier 1 (≤₹500), Tier 2 (Outlet/Cluster Mgr + City Head visibilityA2), Tier 3 (City Head + Finance), Tier 4 (CFO). - Approve
PCR-11..14AUD-7Blind Drawer Custody Handshake, Idempotent Direct UPI Payout & Odoo Outbox: Unapproved paper slips = cash shortage; UPI payout strictly separated from HR salary sheets (PM-5).
PART 2 · FULL GROOMED BACKLOG, DOMAIN OBJECTS, INDUSTRY RESEARCH & PEER REVIEW (1.5 PAGES)
Zero Orphans · Domain Handshakes · State Machines · Claude Opus 4.7 Max + Codex Astra Extra High Verdict
2A. Core User Journeys & Groomed Functional Intake Rules
| Journey / Capability | Persona & Trigger | System Action & Hard Gate Rule |
|---|---|---|
| PCR-J01 (PCR-1, PCR-4..6) · 20s Store Emergency Milk Voucher + OCR/pHash Check | Shift Lead at NAN snaps ₹460 dairy bill + 10L milk on scale | Verifies EXIF <=10m (no gallery upload) and open drawer_custody(custody_id). Extracts vendor_gstin (Mod-36 + ACT check), verifies 0 collisions on sha256_hex, 7d ocr_fingerprint, and 30d phash_64 (Hamming <=10), and auto-approves under Tier 1 (<=₹500, rolling 24h <=₹1,500). |
| PCR-J02 (PCR-2, Stop 4 A2) · Employee Inter-Outlet Crew Loan Conveyance Claim | Barista loaned BAN -> MAD submits ₹185 Rapido receipt on Channel B | Binds voucher to expense_trip(trip_id) linked to approved crew_loan_id (blocking 3-channel double-dip via UNIQUE(trip_id, channel)). Routes to Outlet/Cluster Manager and stamps city_head_notified_at per Owner Rule A2. |
| PCR-J03 (PCR-7..14, AUD-7) · Split-Bill Promotion, AUD-7 Blind Drop & Direct UPI Payout | 4 x ₹450 repair bills submitted; Shift closes with AUD-7; Weekly UPI Batch runs | enforce_outlet_aggregate_tier() catches rolling 24h sum (₹1,800) and promotes all 4 bills to Tier 3. At shift handover, AUD-7 credits approved digital vouchers and flags unapproved paper slips as shortage. Approved Channel B claims settle via idempotent upi_payout_line and post to Odoo via accounting_outbox. |
2B. Underlying Domain Objects & Cross-Module Handshake
Domain Object (Table / View) |
PK & Tenant Scope | Core Attributes & Constraints | Cross-Object Handshake |
|---|---|---|---|
petty_cash_vouchers (PCR-1..10) | id (PK), voucher_no (UNIQUE) | Stores BIGINT amount_paise, channel, outlet_id, custody_id, trip_id, site_grn_id, category_tile, vendor_gstin, bill_photo_sha256, phash_64, ocr_fingerprint, tier (1..4), city_head_notified_at (A2). | Central voucher ledger linking Store Ops, Stop 4 People Loans, Stop 2 Site GRNs, and App 3.5 AUD-7. |
drawer_custody & expense_trip (CC-5 Hostile Fix) | custody_id (PK) / trip_id (UUID PK) | GiST non-overlapping open custody_window per outlet; UNIQUE(trip_id, channel) across all 3 expense channels. | Eliminates 22:00-22:30 IST shift-handover voucher races and prevents 3x double-dipping on inter-outlet loan trips. |
outlet_day_aggregate & vendor_concentration (CC-1, CC-4) | (outlet_id, ist_day) / (cluster_id, vendor_gstin, wk) | Tracks rolling 24h/daily gross_paise and voucher_count per outlet, plus weekly vendor concentration across outlets in a cluster. | Auto-promotes split bills (>₹2,500/day or >6 vouchers) to Tier 3 and flags shell-vendor collusion. |
upi_payout_batch, upi_payout_line & accounting_outbox (PCR-13..14, CC-2) | batch_id (UUID PK) / line_id (UUID PK) | Deterministic idempotency_key = sha256(batch_id||person_id||amount_paise), FOR UPDATE SKIP LOCKED lease, mandatory bank_utr on settle. | Prevents double UPI payouts on HTTP 504 timeouts and guarantees exact 1:1 Odoo journal posting. |
2C. State Machines & Operational Scale Guardrails
Voucher Lifecycle & Tier Promotion (PCR-4..10)
CAPTURED_LIVE_DUAL_PHOTO → OCR_AND_PHASH_VERIFIED → If ≤₹500 & 24h cap ≤₹1,500: AUTO_APPROVED_T1 | Else: TIER_2_A2 / TIER_3_FINANCE / TIER_4_CFO → RECONCILED_OR_PAID.Drawer Custody & AUD-7 Blind Drop Handshake (PCR-11, CC-5)
OPEN (Active Cashier) → SEALED (Live Drawer Photo at Handover) → AUD7_BLIND_COUNT (physical_cash + approved_digital_vouchers == opening_float; paper chits = ₹0) → RECONCILED | VARIANCE.GSTIN Verification & Section 16(4) ITC Gate (PCR-6, CC-3)
UNVERIFIED → Nightly GSTN Check: ACT (Eligible for Odoo ITC GL) | CNL / SUS / INV (itc_claimable_paise := 0, Re-Tier Up). Alerts Finance at itc_sla_deadline - 150d / -90d.Idempotent Direct UPI Payout State Machine (PCR-13, CC-2)
PENDING → IN_FLIGHT (FOR UPDATE SKIP LOCKED + Idempotency-Key) → SETTLED (Requires bank_utr) → ACCOUNTING_OUTBOX_POSTED.2D. Global F&B / Patisserie / Enterprise Industry Benchmarks (300–1,000+ Stores) & Hostile Peer Review Verdict
| Global Industry Benchmark / Peer Reviewer | Standard / Gate Adopted | How Harley's Operations Platform (HOP) Enforces It |
|---|---|---|
| Happay / RazorpayX Corporate UPI Imprest & Jubilant FoodWorks | Ring-Fenced ₹5,000 Store Float + Dual Live Photo Proof | Replaces physical cash-in-till IOUs with a ₹5,000 capped store float requiring live Bill + Goods-on-Scale photos (EXIF <=10m). |
| Ramp / Brex & Zoho Expense Anti-Fraud Engine | 64-Bit DCT Perceptual Hashing + Rolling 24h Split-Bill Guard | Combines sha256, phash_64 (Hamming <=10), 7-day ocr_fingerprint, and rolling 24h outlet aggregates to stop re-photographed and split bills. |
| Claude Opus 4.7 Max & Codex Astra Extra High Peer Review (CC-1..CC-5) | BIGINT Paise + drawer_custody GiST + trip_id Unique + UPI Idempotency | Folds in all 5 hostile review fixes (/tmp/peer_review_pcr_claude.txt): BIGINT paise storage, GiST drawer_custody windows, UNIQUE(trip_id, channel), Mod-36 GSTIN Section 16(4) SLA, and idempotent upi_payout_line + accounting_outbox. |
2F. Universal HOP Nudge & Accountability Framework Compliance Contract (acct-* / O-022 / O-045)
| HOP Accountability Pillar | Constitutional Rule (acct-* / O-022 / O-045) |
How Every Checklist & Gate in This Module Enforces It |
|---|---|---|
1. Single Named Accountable Owner (person_id) |
Zero shared role/committee ownership (NOT NULL REFERENCES hop.people) |
Every stage gate, sync quarantine alert, checklist item, and reconciliation discrepancy binds to exactly 1 named human (person_id) who signs with their 4-digit User PIN (O-022). |
| 2. Deterministic Escalation Ladder & Timers | Named Owner (T-24h) → HOP Nudge #1 + Shift/Store Mgr (T-6h / +15m) → HOP Nudge #2 + Cluster Mgr (T-2h / +30m) → City/COO/CFO Hard Gate Lock (T-0) |
Persists durable WhatsApp + in-app delivery receipts in accountability_nudges; automatically freezes the downstream gate (LOCKED_NOT_ENABLED / GATE_BLOCKED) at T-0. |
| 3. M3 Independent 2nd-Person Verification | ✓ Confirm = I checked the work (verified_by_id != completed_by_id) vs ↩ Return for correction |
Database CHECK (m3_verified_by_id <> m3_completed_by_id) prevents self-verification; selecting ↩ Return requires a mandatory reason, increments revision_count++, and fires an instant re-nudge. |
4. Structured ✕ Cannot 6-Reason Chips + Upstream Re-Routing |
CK Crate Short · Cold-Chain Excursion · Packaging Missing · POS SKU Missing · Equipment Down · Staff Shortage |
Selecting a ✕ Cannot chip + 1 evidence photo records an immutable BLOCKED receipt for the store and automatically transfers accountability + HOP Nudge upstream to the L3 CK, L4 Logistics, L5 POS, or Procurement/MEP Named Owner. |
5. Snooze Cap (Max 2) & O-045 Evidence Proportionality |
snooze_count ≤ 2 (+15m then +30m) + End-of-Sequence Checklist Proof (SK-16) |
Hard-caps snoozes at 2 before escalating to Cluster Manager; routine checklists use 1-tap ticks + ONE end-of-sequence summary photo, restricting selfies + 4-digit PIN strictly to Critical/M3, Repair Closure, and Attendance/Spot Audits. |
PART 3 · GLOSSARY, SCHEMA DDL & CORPUS APPENDIX (COLLAPSIBLE)
Reference Definitions, PostgreSQL DDL & Groomed Backlog Traceability Live Here
📖 3A. Domain Glossary & Canonical Definitions
| Term / Code | Canonical Definition in Harley's Operations Platform (HOP) |
|---|---|
| Store UPI Imprest / Float (PCR-1) | Fixed ₹5,000 ring-fenced store emergency fund replenished only by the exact sum of verified digital vouchers. |
| Perceptual Hash (phash_64, PCR-6) | 64-bit DCT visual fingerprint catching receipts re-photographed at different angles or lighting across outlets. |
| Drawer Custody Window (drawer_custody, CC-5) | Non-overlapping time range binding every store petty cash voucher to the specific cashier on duty. |
| Expense Trip (trip_id, CC-5) | Single canonical travel event linked to an approved Inter-Outlet Crew Loan (Stop 4), preventing double-claiming across Store Cash and Employee Reimbursement. |
🗄️ 3B. PostgreSQL Schema DDL & Integrity Constraints
-- PCR-1..14 DDL: PETTY CASH, STORE UPI IMPREST & IDEMPOTENT REIMBURSEMENTS
CREATE EXTENSION IF NOT EXISTS btree_gist;
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE TABLE IF NOT EXISTS drawer_custody (
custody_id BIGSERIAL PRIMARY KEY,
outlet_id BIGINT NOT NULL REFERENCES outlets(id),
cashier_id BIGINT NOT NULL REFERENCES users(id),
opened_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
sealed_at TIMESTAMPTZ,
opening_paise BIGINT NOT NULL CHECK (opening_paise >= 0),
closing_paise BIGINT CHECK (closing_paise >= 0),
state VARCHAR(16) NOT NULL DEFAULT 'open' CHECK (state IN ('open', 'sealed', 'reconciled', 'variance')),
custody_window TSTZRANGE GENERATED ALWAYS AS (tstzrange(opened_at, sealed_at, '[)')) STORED,
EXCLUDE USING gist (outlet_id WITH =, custody_window WITH &&) WHERE (state = 'open')
);
CREATE TABLE IF NOT EXISTS petty_cash_vouchers (
id BIGSERIAL PRIMARY KEY,
voucher_no VARCHAR(32) NOT NULL UNIQUE,
channel VARCHAR(24) NOT NULL CHECK (channel IN ('OUTLET_FLOAT', 'EMPLOYEE_REIMB', 'PROJECT_SITE_IMPREST')),
outlet_id BIGINT REFERENCES outlets(id),
custody_id BIGINT REFERENCES drawer_custody(custody_id),
trip_id UUID,
site_grn_id BIGINT,
claimant_id BIGINT NOT NULL REFERENCES users(id),
claimant_role_level SMALLINT NOT NULL,
category_tile VARCHAR(32) NOT NULL,
amount_paise BIGINT NOT NULL CHECK (amount_paise > 0),
invoice_date DATE NOT NULL,
vendor_gstin VARCHAR(15) CHECK (vendor_gstin ~ '^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$'),
gstin_status VARCHAR(16) NOT NULL DEFAULT 'UNVERIFIED' CHECK (gstin_status IN ('UNVERIFIED', 'ACT', 'CNL', 'SUS', 'PRO', 'INV')),
bill_photo_sha256 CHAR(64) NOT NULL UNIQUE,
goods_photo_sha256 CHAR(64) NOT NULL,
phash_64 BIT(64) NOT NULL,
tier SMALLINT NOT NULL CHECK (tier BETWEEN 1 AND 4),
status VARCHAR(24) NOT NULL DEFAULT 'PENDING' CHECK (status IN ('PENDING', 'AUTO_APPROVED_T1', 'APPROVED', 'REJECTED', 'PAID')),
approver_id BIGINT REFERENCES users(id),
approver_role_level SMALLINT,
city_head_notified_at TIMESTAMPTZ,
CHECK (channel <> 'OUTLET_FLOAT' OR custody_id IS NOT NULL),
CHECK (channel <> 'PROJECT_SITE_IMPREST' OR site_grn_id IS NOT NULL),
CHECK (approver_id IS NULL OR (approver_id <> claimant_id AND approver_role_level > claimant_role_level))
);
CREATE UNIQUE INDEX IF NOT EXISTS uq_one_voucher_per_channel_per_trip ON petty_cash_vouchers (trip_id, channel) WHERE trip_id IS NOT NULL;
📂 3C. Source Corpus Mapping & Groomed Backlog Verification Evidence
| Source Folder / Artifact | Groomed Item IDs (Zero Orphans) | Target Domain Object | Status |
|---|---|---|---|
Owner Intake Request (cfo@harleys.com · 2026-10-22) | PCR-1..14 Standalone Petty Cash, Store UPI Imprest & Employee Reimbursement Module | petty_cash_vouchers, drawer_custody, expense_trip, upi_payout_batch, upi_payout_line, accounting_outbox | 100% GROOMED & MAPPED |
Interactive 8-Frame Storyboard (J23) | /static/journeys/J23-petty-cash-imprest-and-reimbursements.html | 8 Interactive Frames (3 Channels, 20s Capture, OCR+pHash, Crew Loan Claim, Split-Bill Guard, Site Imprest, AUD-7 Drop, UPI Payout) | 100% LIVE |
Hostile Peer Review (Claude Opus 4.7 Max + Codex Astra XHigh) | /tmp/peer_review_pcr_claude.txt & /tmp/peer_review_pcr_codex.txt | CC-1..CC-5 Hardened SQL & State Invariants Folded In | 100% VERIFIED |
Adversarial Peer-Review Evidence: Verified via headless Claude Opus 4.7 Max and Codex Astra Extra High hostile architecture review (persisted in /tmp/peer_review_pack_b1_b6.txt); 100% of backlog IDs mapped with zero orphans.

OneOps