How we built a white-label SaaS platform
A case study on building a modular CRM + inventory platform with offline-first PWA architecture.

Part of the series: Under the Hood
Part 3 / 3
Table of Contents
Building a website is one thing. Building a platform that manages contacts, inventory, agents, and operations, and can be resold under different brands, is another level entirely. Here’s how we approached it.
The challenge
A client needed a unified system to handle:
- Contact management: thousands of entries with segmentation
- Inventory tracking: products, parts, stock levels across warehouses
- Agent/recruiter management: field teams with territory assignments
- Communication: WhatsApp integration for bulk messaging
- Administration: audit logs, role-based permissions, SMTP configuration
And critically, it needed to work offline in areas with unreliable connectivity.
Architecture decisions
Why a PWA?
Progressive Web Apps gave us the best of both worlds:
| Feature | Native App | PWA |
|---|---|---|
| Offline support | Yes | Yes (Service Worker) |
| Push notifications | Yes | Yes |
| App store required | Yes | No |
| Update distribution | Store review | Instant |
| Development cost | 2x (iOS + Android) | 1x |
| QR code scanning | Yes | Yes (Camera API) |
For a platform targeting field agents who might be in areas with spotty internet, offline-first wasn’t optional. It was the core requirement.
Service worker strategy
We implemented a cache-first strategy for static assets and a network-first with offline fallback strategy for API data:
Static assets → Cache first, update in background
API responses → Network first, serve cached if offline
Form submissions → Queue offline, sync when connected
This means agents can scan QR codes, update inventory, and log contacts even without internet. Everything syncs when connectivity returns.
Modular design for white-labeling
The platform was designed from day one to be reskinnable:
- Theme system: colors, logos, and typography configurable per tenant
- Feature flags: enable/disable modules per deployment
- Multi-tenant data: isolated data with shared infrastructure
- Custom domains: each deployment gets its own URL
This makes it possible to deploy the same codebase for completely different businesses, from logistics companies to real estate agencies.
Key technical challenges
Offline conflict resolution
When two agents edit the same contact offline, what happens when both sync?
We implemented a last-write-wins with audit trail approach. Every change is timestamped and logged, and the admin dashboard shows conflicts that may need manual review. It’s not perfect, but for this use case it strikes the right balance between complexity and reliability.
QR code scanning in a browser
Using the device camera for QR scanning in a PWA required careful handling:
- Camera permissions management
- Handling multiple camera devices (front/back)
- Efficient barcode parsing without native libraries
- Fallback for devices without camera support
This was trickier than expected. Browser camera APIs are inconsistent across devices, and we burned a few days on edge cases with older Android phones.
Bulk WhatsApp messaging
Integrating WhatsApp for group communication meant building:
- Contact group management
- Message template system
- Rate limiting to comply with WhatsApp policies
- Delivery status tracking
Role-based access control
With multiple user types (admin, agent, recruiter, viewer), we built a permission system that controls:
- Which modules each role can access
- Read vs. write permissions per section
- Data visibility scoping (agents see only their territory)
- Audit logging for all permission-sensitive actions
Results
The platform now handles:
- Tens of thousands of contacts with instant search
- Hundreds of products with stock tracking
- Multiple agent teams across territories
- Complete audit trails for compliance
What we’d do differently
- Offline-first is hard but worth it. Plan your data model around eventual consistency from day one. We underestimated this initially and had to refactor some early assumptions.
- White-labeling needs early planning. Retrofitting multi-tenancy is painful. Bake it in from the start.
- Field testing is non-negotiable. Lab conditions never match real-world connectivity. We learned this the hard way with a demo that worked perfectly in the office and failed at the client’s warehouse.
- Audit everything. When multiple users modify data offline, you need a clear history. This saved us more than once during dispute resolution.
Could this work for your business?
If your business needs:
- A custom platform that goes beyond what off-the-shelf SaaS offers
- Offline capability for field teams
- The ability to rebrand and resell the solution
- Full control over your data and infrastructure
Then a custom-built platform might be the right investment. It’s not cheap, and it’s not fast, but for the right use case the ROI is significant.
Get in touch to discuss whether a custom platform makes sense for your use case, or view our portfolio to see more of our work.