Pepsi Pass was a loyalty app aimed at attracting a younger demographic. To quote a press release of the time I worked on the app:
By leveraging mobile location to award points to friends who are hanging out together, PepsiCo is attempting to add more mobile fizz to its new loyalty program and gain an edge over Coca-Cola.
Pepsi is following in its competitor Coca-Cola’s footsteps by allowing fans to enter codes found on participating products to receive the in-app rewards points, but is aiming to expand consumer outreach by offering points to those who hang out with fellow users. Loyalty programs are a must-have for major beverage brands with significant amounts of customer consumption, and Pepsi is likely attempting to attract a younger demographic with its musically inclined approach.
“Pepsi is literally rewarding fans for having fun and hanging out with friends,” said Linda Lagos, director of marketing at PepsiCo, Purchase, NY. “One of the coolest features on Pepsi Pass is a location-based update that will award points to friends who have downloaded the app and are hanging out with each other.
“This happens seamlessly in the background,” she said. “No need to tag friends, or to check in.
“Additionally, the phone’s camera will act as a scanner of under-the-cap codes and UPC on cans to let users quickly capture their points via product purchase. Again, letting them gain points for their loyalty, more seamlessly than ever before.”
from Fetch press release
I built two core features of the initial Pepsi Pass app: the image scanning engine which scanned bottle caps and UPC barcodes (and unfortunately I am not able to share video footage of it as it's still under NDA) and some critical UI components of the application, shown and detailed later on below below.
The OCR engine used TesseractOCR, with Objective-C and Objective-C++ as an intermediary layer that communicated between the C++ code and the Swift code of the main app. The Android version used JNI to communicate between the C/C++ components.
-App architecture, which persisted the same navigation bar as users swiped between app views.
- Initial animation and sign-in
- Bubble animations and their tapping logic. These are particle emitters made via SpriteKit.
- Central pendulum-like UI, with physics animations. These were built using a custom UICollectionView layout with spring dynamics added after user input had ceased.
- Integration with bottle scanner and points redemption system.