Food safety & quality
Inspections & corrective actions
Scored food-safety and quality inspections that branches run on a tablet, with corrective actions that have to be closed and checked.
- One question per screen, photos from the camera, Arabic first
- Critical items fail an inspection whatever the overall score
- Corrective actions with due dates and a verification step; manager approval enforced on the server
- Rebuilt the inspection PDF: summary first, photos next to their item, about a fifth fewer pages
- Odoo 18
- OWL
- QWeb PDF
- 289 tests
Operations
Branch checklists
Daily, weekly and monthly branch checklists on a tablet, in place of paper. This is the app behind the 2,500+ checklists.
- Templates by shift, day of week and deadline, with automatic closing
- Answers as checkboxes, yes/no, temperatures with min/max limits, numbers, photos and ratings
- The central kitchen’s paper forms moved into the app
Inventory
Nightly and month-end stock counts
Branches count stock on a tablet after the till closes; the system checks the counts before anyone is blamed for a difference.
- A rotating list of items each night, compared with the last count; a recount before a gap is reported
- A morning email and PDF to management with the night’s differences
- Month-end count of 500+ items per branch; reviewers fix counts in place; approval posts to inventory
- Odoo 18
- OWL
- PostgreSQL
- 476 tests
Inventory
Stock requests and transfers
Branches request stock, and nothing moves until the request is approved. This is the app behind the 8,000+ stock requests.
- An approval workflow for every request
- Transfers and manufacturing orders created from the approved request
- A reorder report and a scrap export
Management reporting
Branch daily report
One screen per branch that replaced the nightly email to management.
- Orders, customers, average ticket, discounts, transfers, counts and staff lateness from HR shifts
- Incidents and complaints logged in the report; management opens follow-ups, the branch closes them, the opener confirms
- Arabic right-to-left PDF; branch managers see what was wasted, not what it cost, and no sales or cash figures, by design
Point of sale & HR
Staff meals and HR sync
The staff-meal policy enforced by the till, fed by employees, attendance and shifts synced from the HR system every 30 minutes.
- Each employee’s daily allowance, counted across branches over a 05:00–05:00 staff day
- Free only when the employee is checked in (live HR lookup with a 3-second timeout)
- One “Staff Pricelists” screen replaced about 15 pricelists cashiers picked by hand
- Leavers archived automatically, with a safety stop that refuses mass archiving
- Found staff who had left still active, closed their access and fixed the cause
- Measured cost: about 2% on till load time
- Odoo 18 POS
- KayanHR API
- 64 tests
- 46 tests
Point of sale
Bank card terminals
The till talks to the card terminals of two acquirers over one driver.
- Each branch has an active and a spare terminal, with one-click failover
- One shared payment method per acquirer across all branches; terminal settings visible to managers only
- Ported the module’s till front end to Odoo 18
Management reporting
Operations dashboard
The management dashboard for sales, menu and stock, with budget pace.
- Filters by branch, sales type, delivery platform, day and hour
- Menu engineering (Kasavana–Smith matrix), best sellers and slow movers
- Sales by hour, a weekday × hour heatmap, and the same weekdays last year
- A one-year view went from 18 s to 2–4 s after moving the heavy loops to SQL
- Damaged stock by branch, then by item, linked to the records
Training
AI staff academy
Staff courses and exams, drafted by AI from the company’s own SOPs, in Arabic.
- Outline first (editable), then pages, questions, marking rubrics and an exam draft
- AI marks open answers; a person reviews, and only a person releases results
- Model choice per step, retry and fallback, a monthly spending ceiling, every AI call logged
- Rebuilt in Aug–Sep 2026; Arabic SOP PDFs now read in the right order
- Odoo 18
- OWL
- LLM APIs
- Python
- 735 tests
Integration
Odoo-to-Odoo sync engine
A sync engine for POS sessions, journal entries and purchases, where nothing is written without approval.
- Mapping rules and dry runs before any write
- Approval before writing, and an audit log of what was written
- Crash recovery built in
- Every money write is signed by a named person
- CI and an integration test harness
Read the case study: Odoo-to-Odoo sync engine →
- FastAPI
- HTMX
- PostgreSQL
- 1,379 tests