CASE STUDY 01
Live & Operational

RetailKiosk — Unified Price Check System

PyQt6 · Flutter · ODOO · 24/7 Resilience · Live in 6 Branches

RetailIoTOdooPyQt6Flutter
RetailKiosk — Unified Price Check System
SYSTEM_MONITOR // KIOSK
SCROLL
THE PROBLEM

Most ERP data never leaves the back office. RetailKiosk makes Odoo accessible on the shop floor.

Traditional web-based kiosks fail in high-stakes retail due to session expiry, app escaping, and high maintenance. RetailKiosk is a dedicated application layer that makes Odoo's live data accessible reliably, without staff intervention, across any hardware the store already owns.

THE STANDARD APPROACH FAILS BECAUSE:

Session Expiry — authentication drops, leaving customers with a blank login screen
App Escaping — customers exit the browser to open YouTube or random apps
High Maintenance — staff spend more time rebooting devices than helping buyers
Data Drift — browser-wrapped pages often show stale cached pricing
THE ENGINEERING CHALLENGE

Odoo's data model is not uniform across deployments. A product might exist as a 'Unit' in one database and a 'CTN (20 pcs)' in another. RetailKiosk resolves what was actually scanned at query time — scan a unit, show unit price; scan a carton, show carton price. No assumptions. No hardcoding.

"Runtime unit-type resolution at query time — no hardcoding, no cache, no assumptions."

— KEY ARCHITECTURAL DECISION

TECHNICAL DECISIONS // 5 MADE

01

Runtime unit-type resolution — no hardcoded product structure assumptions

02

Full Odoo pricelist engine traversal at query time

03

PowerShell Watchdog — monitors the process for auto-recovery and 24/7 uptime

04

Single codebase (Flutter) serving Mobile, Android Kiosk, and PDT Handhelds

05

Bilingual Intelligence — Regex-based parsing for English and Arabic product names

SYSTEM ARCHITECTURE
Windows KioskAndroid KioskStaff MobilePDT ScannerIntegration LayerRuntime ResolutionPricelist EngineodooSource of Truth
PRODUCTION_EVIDENCE // VAULT_01
Buffer_Active
SSD_R_1.2GB/s
WINDOWS KIOSK
WINDOWS KIOSK

PyQt6 compiled .exe — zero runtime required

LIVE_PROD
IMG_ID: 1042
WHAT WAS BUILT

Device Layer

ONE CODEBASE
  • Fixed Windows Kiosks — PyQt6, compiled .exe, zero runtime dependency
  • Android Kiosks — Flutter, fullscreen locked, touch-optimized
  • Staff Mobile — Same Flutter app for live promotions in aisles
  • PDT Handhelds — Direct integration with hardware barcode engines

Retail Intelligence

STABILITY
  • Search Guard — prevents race conditions and handles zero-prefixed barcodes
  • Bilingual Parser — optimized Regex for EN/AR retail environments
  • Lockdown Environment — PIN-protected exit and disabled system shortcuts
  • Weight-based conversions and custom price-point resolution

Odoo Integration

RUNTIME RESOLUTION
  • Unit-type resolver — resolves Unit vs Carton naming conventions
  • Full pricelist engine traversal — applies quantity and date rules
  • Silent session recovery — customer never sees an error state
  • Real-time promotion surfacing and loyalty validation