Complete product mind map
The full system flow was mapped first: where the QR lives, how users arrive, how verification works, where rewards appear and what happens across alternate states.
A mobile web app for a QR-based loyalty program. A QR placed inside product packaging is scanned after purchase, the user completes verification, and an instant monetary reward is credited online. The full product flow, Figma prototype and frontend were built around the realities of installer and labour-class users.
The primary audience would often be using the experience quickly on a phone in a real working environment. That meant the product had to reduce reading, keep steps obvious, recover from input mistakes and make verification feel simple enough that the reward itself remained the focus.
The full system flow was mapped first: where the QR lives, how users arrive, how verification works, where rewards appear and what happens across alternate states.
The interface was designed specifically for a practical, mobile-first audience with large actions, clear language and minimal interaction depth.
A fully clickable mobile prototype was created so the business could experience the complete app flow before frontend implementation.
After design approval, the mobile web app frontend was built with the interaction logic and UI states needed for backend integration.
Six-digit OTP input was enhanced so pasting the complete code into one field automatically distributes each digit across all six boxes.
Useful interaction and notification states were implemented in JavaScript wherever possible to reduce unnecessary backend work and make the flow feel complete.
The reward entry point is protected inside the product box, connecting the physical purchase to the digital flow.
The system communicates a direct reward outcome instead of an abstract points mechanic.
Primary actions and status feedback are visually obvious for fast comprehension.
A small interaction detail removes a common source of frustration during verification.
Layouts and behavior were designed for the actual target surface rather than adapted down from desktop.
Frontend behavior anticipates verification, notification and response states so integration remains simpler.
A small JavaScript enhancement removes an unnecessary manual step during OTP verification.