SME Operations System
Enabling business owners to track stock, verify sales, and operate reliably under power and connectivity constraints.
Problem Statement
Small and medium enterprises often lack visibility into their operations—inventory discrepancies, unverified sales, and manual record-keeping create operational blind spots.
Business owners struggle to answer basic questions: What stock is available? How much was sold today? Are records accurate?
Existing tools assume reliable power, consistent internet, and technical literacy—assumptions that don't hold in resource-constrained environments.
System Goal
Provide business owners with real-time operational visibility—accurate inventory counts, verified sales records, and actionable insights—designed to work offline and sync when connectivity is restored.
Constraints Handled
Power instability
Frequent outages mean the system must preserve data integrity during unexpected shutdowns and resume operations without manual intervention.
Intermittent connectivity
Network access is unreliable. The system operates fully offline, queuing changes for synchronization when connectivity returns.
Concurrent operations
Multiple staff members may record sales or update inventory simultaneously across different devices. The system resolves conflicts using logical timestamps and merge strategies.
Low technical literacy
Interfaces are simplified and task-focused. No complex workflows or hidden features—every action is explicit and reversible.
Key Engineering Decisions
Offline-first architecture with local persistence
All data is stored locally first using SQLite, ensuring the system remains functional without network access. Changes are queued and synchronized in the background when connectivity is available.
Event sourcing for audit trails
Every inventory change and sale is recorded as an immutable event. This allows business owners to reconstruct state at any point in time and detect discrepancies.
Conflict-free replicated data types (CRDTs) for inventory
Used CRDT principles to merge concurrent updates without losing data. When multiple devices modify inventory offline, the system converges to a consistent state during sync.
Transaction batching for low-bandwidth sync
Instead of syncing every operation individually, changes are batched and compressed before transmission. This reduces bandwidth usage and improves sync reliability over slow connections.
Simplified state model
Avoided complex workflows. Inventory has three states: available, reserved, sold. Sales are either pending or confirmed. This reduces cognitive load and makes the system easier to reason about.
Tech Context
Built with SQLite for local data persistence, ensuring fast reads and writes without network dependency.
Used background sync workers to handle data replication when connectivity is detected.
Designed for mobile-first deployment on Android devices, minimizing hardware requirements.
System Model
Actors
Business owners, staff members, system
Resources
Inventory items, sales records, transactions
Actions
Record sale, update inventory, generate reports, sync data
Constraints
Inventory cannot go negative, sales must reference valid inventory, sync conflicts must be resolvable