Milkow Delivery CRM.
Milkow is a full-stack Customer Relationship Management (CRM) and route management application designed specifically for the unique, fast-paced operational needs of daily milk delivery businesses. Built on a robust tech stack, it acts as a mobile-first Progressive Web App (PWA) bridging the gap between chaotic physical logistics and digital precision.

This case study details the end-to-end UX research, design, and engineering process used to transform a legacy paper-based industry into a streamlined digital experience. The process began with direct immersion into the users' environment, conducting 'ride-alongs' with delivery drivers during their 4:00 AM morning shifts to understand constraints like one-handed operation, low light, and network unreliability.
The daily milk delivery industry operates with chaotic physical logistics and paper-based tracking. Drivers operate under severe environmental constraints (one hand, gloves, low/high light, poor network), while franchise owners struggle with irregular cash flow and inventory leakage.
Root Cause
Traditional logistics apps are overkill (requiring barcode scanning and signatures), while basic apps fail due to tiny buttons, multiple taps, and freezing when networks drop. Rigid billing cycles fail because customers pay ad-hoc, and end-of-shift physical stock reconciliation rarely matches paper ledgers.
The 'Three-Second' Rule
If logging a delivery takes more than three seconds, the driver abandons the app in favor of remembering it later, leading to massive data inaccuracy.
The UI must be instant. State mutations need to be staged locally, and background syncing is required to hide network latency.
Irregular Cash Flow & Ad-hoc Payments
Customers don't follow strict daily, weekly, or monthly payment schedules. They pay randomly (ad-hoc), making rigid billing cycles useless.
The billing system needs to act as a Unified Running Ledger. Any delivery debits the ledger, and any payment credits it.
Environmental Constraints Dictate Design
Drivers operate outdoors, often in blinding high sunlight, making standard subtle grays and low-contrast modern UI trends fail miserably.
The UI requires a stark black-and-white theme and extremely padded button hitboxes to accommodate gloved, walking users.
Decimal-Based Route Ordering
Options Considered
SQL linked list vs. String-based sorting vs. Decimal-based system
What I Chose
Decimal-based system for the delivery_order column with a visual Drag-and-Drop interface.
Rationale
We needed a way to dynamically insert new customers between existing ones. A linked list proved overly complex and fragile during bulk updates. String-based sorting had length limits. A decimal-based system provides ample numerical room to insert records without triggering massive, system-wide database recalculations.
Requires careful management of the decimal precision over time, but avoids immediate re-indexing performance hits.
Optimistic UI & Offline-First Execution
Options Considered
Traditional request-response model vs. Optimistic UI with Background Syncing
What I Chose
Optimistic UI where state mutations are staged in local storage and synced silently.
Rationale
To solve 'The Three-Second Rule', we couldn't wait for network requests. When a driver taps a delivery checkbox, the UI updates instantly. A custom syncBatchDeliveries() function batches interactions and pushes them to the backend when the network is restored.
Increases front-end complexity to handle conflict resolution and failed sync states.
Impersonation Mode for Superadmin
Options Considered
Standard admin panel vs. Impersonation Mode
What I Chose
Impersonation Mode that safely hijacks the activeFranchiseId.
Rationale
Superadmins need to troubleshoot franchise-specific issues without compromising strict Row Level Security (RLS) that isolates tenant data. Impersonation allows them to instantly view the exact dashboard and UI state that the franchisee sees, enabling rapid, safe debugging.
Requires strict auditing and logging to ensure the feature isn't abused for unauthorized data access.
Unified Running Ledger for Billing
Options Considered
Traditional 30-day invoicing vs. Unified Running Ledger
What I Chose
Unified Running Ledger where deliveries are debits and ad-hoc payments are credits.
Rationale
Franchise owners struggled with generating invoices for customers who paid random amounts in advance. Redesigning the system to act as a running ledger natively solved the unpredictable payment frequency problem.
Requires educating users to move away from the concept of a 'monthly bill' to a continuous balance.
By aligning technical architecture directly with physical, real-world user research, Milkow achieved significant operational improvements, demonstrating how physical context dictates every layer of the product.
Measurable Impact
Interaction Time Per Stop
< 1 Second
Achieved through Optimistic UI and high-contrast targets
Balance Drift
Eliminated
Real-time inventory deduction instantly updates balances
Manual Ledger Reconciliation
Eliminated
Automated daily bill generation replaced manual work
Lightning-Fast Route Execution
Reduced the time spent interacting with the app per stop to under one second by combining Optimistic UI with fat-finger friendly touch targets.
Elimination of Balance Drift
Implemented real-time inventory deduction the moment a delivery is marked complete, ensuring immediate accuracy without waiting for end-of-shift batching.
Frictionless Collections
Integrated dynamic high-resolution UPI QR code generation on an HTML5 Canvas, allowing admins to instantly share pre-filled payment requests via WhatsApp.
End-Customer Empowerment
Designed a minimalist Public View Bill Portal allowing customers to securely view their outstanding ledgers via phone number, drastically reducing support calls.
What I'd do differently
“Milkow serves as a prime example of how deeply understanding the physical context of the user (sunlight, network drops, ad-hoc payments) dictates every layer of the product, from the SQL schema to the CSS color palette.”
Project Gallery
© 2026 Shihab Saleem. All rights reserved.


