Back to projects
mobileFeatured

LoyZee — B2B Loyalty Points Platform

LoyZee is a two-sided loyalty platform built with Flutter, available on the Apple App Store. It consists of two applications: a Customer App used by retailers to earn and redeem loyalty points, and a Provider App used by wholesalers to manage their loyalty programs and reward their retail partners.

LoyZee — B2B Loyalty Points Platform

LoyZee — B2B Loyalty Points Platform (Customer App and Retailer App)

LoyZee is a two-sided loyalty platform built with Flutter, available on the Apple App Store. It consists of two applications: a Customer App used by retailers to earn and redeem loyalty points, and a Provider App used by wholesalers to manage their loyalty programs and reward their retail partners.

The platform centers on a points-based rewards model where retailers earn points for every purchase made from a participating wholesaler, and can redeem those accumulated points for prizes through the app.

The Problem

Wholesalers operating in retail supply chains face a persistent challenge: retailer loyalty is fragile. A retailer will switch suppliers the moment a competitor offers a better price or faster delivery. Traditional methods of building retailer loyalty such as periodic discounts, phone-based relationship management, or manual rebate schemes are difficult to scale, hard to track, and offer no visibility into whether they are actually changing purchasing behavior.

LoyZee addresses this by giving wholesalers a structured, transparent, and gamified loyalty mechanism. Every purchase a retailer makes translates into visible, trackable points. The ability to redeem those points for meaningful prizes creates a tangible reason for retailers to consolidate their purchasing with a single preferred wholesaler. For the retailer, it turns routine procurement into a rewarding experience. For the wholesaler, it generates measurable loyalty data and a defensible relationship that goes beyond price alone.

What I Built

Customer App: Points Earning and Redemption

I built the retailer-facing application that serves as the primary touchpoint for end users of the loyalty program. Retailers can view their accumulated loyalty points, track points earned per purchase, and browse the rewards catalog available for redemption. The app is designed to keep the points balance and progress toward rewards front and center, making the loyalty incentive visible and motivating at every session.

Provider App: Loyalty Program Management

I built the wholesaler-facing application that gives program administrators control over their loyalty scheme. Providers can manage retailer accounts, configure point-earning rules tied to purchase events, define the rewards catalog, and track redemption activity. This app essentially serves as the operational backend made accessible through a mobile interface, allowing wholesalers to run and monitor their loyalty program without needing a desktop dashboard for routine tasks.

Points Awarding and Redemption Engine

The core of the platform is the points lifecycle: earning on purchase, accumulating over time, and redeeming against prizes. I built this engine to handle point transactions reliably across both apps, ensuring that point balances are consistent and accurately reflected in real time on the customer side. Redemption requests flow through a structured approval or fulfillment process on the provider side, keeping the wholesaler in control of prize delivery.

Prizes and Rewards Catalog

I implemented a dynamic rewards catalog on the customer app where retailers can browse available prizes and initiate redemption. The catalog is managed by the wholesaler through the provider app, giving them the flexibility to update offerings, set point thresholds per prize, and tailor incentives to their specific retailer base and product margins.

Cross-Platform Compatibility

The customer app is published on the Apple App Store and is compatible across iPhone, iPad, and Mac (via Apple Silicon), targeting iOS 12.0 and later. I ensured the Flutter UI adapted cleanly across form factors given the app is designed for iPad as a primary device, which is common in retail and trade environments where larger screens are preferred for catalog and order management tasks.

Technical Highlights

  • Built two separate Flutter applications sharing a consistent design language and domain model, shipped independently to the Apple App Store with distinct user roles and permission scopes.

  • Designed the app as iPad-first per the App Store listing, requiring careful use of Flutter layout primitives to ensure the UI scaled meaningfully across iPhone and iPad screen sizes rather than simply stretching a phone layout.

  • Implemented a points transaction model that records earning events tied to purchase activity and redemption events tied to prize claims, maintaining an accurate running balance visible to both the retailer and the wholesaler.

  • Built a dynamic rewards catalog on the customer side that is fully configurable by the wholesaler through the provider app, eliminating hard-coded prize structures and supporting program updates without requiring an app release.

  • Architected the two-app system around role-based data access: retailer accounts have read access to their own points and the rewards catalog, while wholesaler accounts have write access to program configuration, retailer management, and redemption fulfillment.

  • Shipped with a zero data collection privacy posture as declared on the App Store, meaning all data stays within the platform's own backend with no third-party analytics or advertising SDKs embedded in either app.

  • Achieved compatibility with Apple Vision, Mac (M1), iPhone, and iPad through a single Flutter codebase, with no platform-specific forks required for the core application logic.

Key Decisions

The decision to build LoyZee as two separate Flutter apps rather than a single app with role switching was driven by the nature of the two audiences. A retailer opening the app is in a consumer mindset: they want to quickly check their points balance, see what they can redeem, and feel rewarded. A wholesaler opening the provider app is in an operations mindset: they need to manage accounts, configure rules, and review activity data. Merging these two experiences into one app would have forced compromises on the navigation structure and information architecture of both. Keeping them separate allowed me to design each app around its user's actual context and goals.

Targeting iPad as the primary device was an intentional product decision that influenced a significant portion of the Flutter layout work. Retail and wholesale trade environments frequently use tablets as shared or counter-mounted devices rather than personal smartphones. Building with iPad screen real estate in mind meant I could present more information per screen without requiring deep navigation, which is important in environments where users want to complete a task quickly and put the device down. This also opened up Mac compatibility automatically through Apple's catalyst compatibility layer, giving the platform a wider footprint at no additional development cost.

The choice to declare zero data collection on the App Store was both a privacy principle and a trust signal for the target market. Retailers sharing purchasing data with a wholesaler's loyalty platform are implicitly trusting that their transaction history and business behavior will not be shared further. By ensuring no third-party SDKs with data collection were embedded in either app and by publishing a clear privacy policy, I helped establish the platform as a trustworthy business tool rather than a data harvesting exercise dressed as a loyalty program. This distinction matters significantly in B2B contexts where data sensitivity directly affects adoption.