All work

Automotive · 2026 · iOS + Android

Lezof Auto

Production Flutter app for a leading UAE car-maintenance company. Real-time tracking, in-app payments, and quotations for 1,000+ users.

Technical Product Owner + Mobile Engineer

1,000+

Users

40%+

Fewer follow-ups

Workshop

Jobs, parts, stock

FlutterInventoryBarcodeJob cards

Click any screen to zoom

01

Context

Lezof Auto Services LLC needed the workshop in the technician’s and advisor’s pocket. The product is not a consumer car app. It is job cards, quotations, inspections, inventory (stock in, barcode), and account (expenses, part purchases, income) for a Dubai shop — including Emirates plates and a convert-to-job-card step.

02

My role

I owned

  • Workshop IA: tools vs. order queues vs. inventory vs. account
  • Job-card primary flow and quotation-to-job conversion
  • Stock-in UX (scan vs. catalogue, rack, min/max)
  • Flutter implementation against the shop backend

The team owned

  • Odoo / ERP inventory and accounting
  • Parts catalogue data
  • Shop floor process ownership

03

The problem

A job in an auto shop is a pile of objects: vehicle, customer, labour, parts, quotes, and stock levels. When that pile lives on a desktop in the office, the bay waits. Advisors retype plates. Inventory is a guess until someone walks to the rack.

04

Discovery

The admin home had to open on the highest-leverage action: Create job card — vehicle, customer, labour & parts in one flow. Secondary: saved job cards, quotations, inspections. Queues (draft, open, tech…) track intake to handover. Inventory is a different job: scan a label or add from catalogue, then bin and quantity. Account is bills and payables, not a vanity dashboard.

05

Product decisions

Job card is the spine

The decision
One primary CTA on home. Quotes convert to job cards instead of living as a parallel universe.
Why
The bay does not work from a PDF. It works from a job. Quotes are a sales artifact until they become work.
The trade-off
Pure sales users tap twice. Floor users get a single object.
The result
Quotation list shows make/model, Dubai plate, and CONVERT TO JOB CARD as the climax of the screen.

Stock in is scan-first

The decision
Two doors: Scan code (barcode/QR from the label) or Add parts (browse catalogue), then rack location and min/max.
Why
Receiving is a physical act. Typing SKUs is how quantity drifts.
The trade-off
Camera UX had to be good enough in a bright workshop (glare tips, auto-read).
The result
Inventory is a phone at the shelf, not a form in the office.

Queues over status dropdowns

The decision
Horizontal queue cards (Draft, Open, Tech…) instead of a single filtered table as the mental model.
Why
Shops think in stages on the wall. The app should look like that wall.
The trade-off
Less Excel-like density. More operational clarity.
The result
Intake to handover is visible without opening every card.

06

UX / user flow

Teal workshop language. Home greets the admin, pushes Create job card, then tools and queues. Quotation screens put the Dubai plate in the center — the identifier everyone in the yard actually uses. Account uses expense / part purchase / income tabs and posted vs. not-paid on bills. Scan UI is a viewfinder with a tip, not a buried menu item.

07

Technical architecture

Flutter client on the shop’s operational backend (inventory, quotations, job cards, vendor bills). Barcode/QR capture on device. Role: signed in as Admin in the screens we shipped. Location switcher for the company entity. Numbers (AED, vendors, due dates) are live records, not mock tiles.

08

What I built

  • Admin home with workshop tools and order queues
  • Job cards, saved drafts, quotations, inspections
  • Quotation-to-job-card conversion with vehicle and plate identity
  • Stock in: scan, catalogue, rack, min/max
  • Account: expenses, part purchases, income, bill status

09

Trade-offs

Customer-facing booking was out of scope. This is an internal operating system. We also did not rebuild full accounting on mobile — Account is the slice a manager needs at the counter, not a replacement for the ledger.

10

Launch

Internal Flutter app for Lezof Auto Services, used against real vendors, plates, and job flow in the UAE.

11

Outcome

Advisors can move a BMW X5 from quotation to job card, receive stock against a rack, and see a posted bill without walking back to a desktop. Throughput metrics stay with the shop.

12

What I learned

Industrial mobile only feels premium when the primary action matches the floor. I would have shadowed one full job — from plate read to handover — before freezing the queue names. The plate is the UX, not the menu icon.