Context
Operational context
Sales representatives worked in remote areas where unreliable connectivity delayed the transfer of customer and transaction information to the central operation.
Challenge
The problem
Paper-based and delayed transaction capture meant sales information could take up to two months to reach the central team. The delay limited management visibility, slowed decisions and weakened the ability to provide timely customer service.
Constraints
- Sales capture and receipt issuance could not depend on a live connection.
- Synchronisation needed to avoid lost or duplicated transactions.
- The mobile workflow had to stay practical for repeated field use.
Architecture
System design
A Cordova Android client stores transactions locally, generates field invoices and receipts, and synchronises through REST APIs when connectivity returns. Django and PostgreSQL provide the central application and system of record, while Docker, Kubernetes and Jenkins support deployment on AWS.
Solution
What was built
I built an offline-first sales application that lets representatives capture customer transactions, create invoices and receipts, and queue data for reliable synchronisation. The central platform receives completed records as connectivity becomes available, giving managers a more current view of field operations.
Engineering judgement
Decisions and trade-offs
Local transaction queue
Context: Connectivity could be unavailable for extended periods
Decision: Persist complete transactions on the device and synchronise later
Trade-off: Devices require conflict handling, storage protection and recovery states
Field document generation
Context: Customers needed immediate transaction evidence
Decision: Generate invoices and receipts from locally available data
Trade-off: Document numbering and reconciliation must remain consistent after synchronisation
API-backed central record
Context: Management needed consolidated visibility
Decision: Synchronise through Django REST endpoints into PostgreSQL
Trade-off: Eventual consistency must be communicated in central dashboards
Contribution
My role
- Analysed the door-to-door sales workflow and offline requirements.
- Built the mobile transaction, invoice and receipt workflows.
- Implemented local persistence and synchronisation with the central APIs.
- Integrated the application with the Django and PostgreSQL platform.
- Supported cloud deployment and automated delivery.
Product demonstration
See the system in use
Results
Operational impact
- Allowed representatives to complete sales workflows without a live connection.
- Reduced manual data handling and duplicate entry.
- Improved central visibility as queued transactions synchronised.
- Enabled customers to receive invoices or receipts during field visits.
Reflection
Lessons learned
- Offline-first applications need reconciliation and user-visible sync states from the beginning.
- Document numbering must be designed for independently operating devices.
- A simple field workflow improves data quality more effectively than adding more validation screens.