RetailKiosk — Unified Price Check System
PyQt6 · Flutter · ODOO · 24/7 Resilience · Live in 6 Branches

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:
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
Runtime unit-type resolution — no hardcoded product structure assumptions
Full Odoo pricelist engine traversal at query time
PowerShell Watchdog — monitors the process for auto-recovery and 24/7 uptime
Single codebase (Flutter) serving Mobile, Android Kiosk, and PDT Handhelds
Bilingual Intelligence — Regex-based parsing for English and Arabic product names

PyQt6 compiled .exe — zero runtime required
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