Paytm Insider: offline POS and app performance
Worked on offline-first POS for events with 5K-50K footfall, reduced consumer app size by 36%, and cut Events module startup by 4 seconds.
- 36% smallerConsumer app size
- 4 seconds fasterEvents cold start
- 5K-50KEvent footfall
Figures are reported in my resume. Footfall describes event attendance, not a concurrent-user benchmark. App-size and startup results belong to the consumer app, not POS.
My contribution
- Helped architect the offline-first POS app, including caching and near-real-time synchronization.
- Reduced consumer app size by 36%.
- Improved Events module cold-start time by 4 seconds.
- Worked on feature flags, analytics, and error logging.
Overview
My work at Paytm Insider covered two areas: Android POS for live events and performance improvements in the consumer app.
Problem
Event operations couldn't depend on a steady network. Separately, the consumer app needed a smaller download and a shorter wait at startup.
Constraints
- Venue connectivity could be unreliable while staff were serving queues.
- Cached data needed to synchronize when connectivity returned.
- Performance changes had to fit an existing consumer app.
Approach
- Designed offline behavior and caching around event operations.
- Worked on near-real-time data synchronization.
- Optimized consumer app size and Events startup.
- Added production visibility through analytics and error logging.
Implementation notes
Offline-first POS
The app needed to remain useful when a venue's connectivity was unreliable.
Cache and synchronize operational data
Offline operation and up-to-date event data both mattered.
Tech stack
- Kotlin
- Android
- Caching
- Synchronization
- Feature flags
- Analytics
Result and impact
The POS work supported event operations with unreliable connectivity. The consumer-app work reduced download size and startup time.
Learnings
- Offline behavior needs to match how staff actually use the app at an event.
- App size and one module's startup time are different measurements and need clear scope.