My best shopping experiences came and come form the unexpected, as usually. Such only happens still in the offline retail world, especially small individual stores, where is no digital product catalogue, search index, recommendation and cross-selling.

In most cases, entering a store is already enough to be inspired by the overall atmosphere (smell, music, store owner, etc.). So somehow motivating customers, which are already around the corner, to enter such stores would result in an increased amount of transactions. Most small individual stores don't invest a lot in marketing and visibility, as they are passioned about their product/service assortment and probably have no time and money either.

What it does

A customer has to download an app, where he has to provide some personal information (phone number, mail) and a has to select some interests from a predefined list. Based on that, vouchers will be created which can be redeemed in stores which are with a specific geo location radius.

Store owners can participate by paying a small fee in order to create their vouchers. This is realised by another mobile app. The effort for doing so has to be very minimalistic

When a customer wants to redeem a voucher (e.g. 10% discount, buy one get two, free coffee, ...), he has to show it to the store owner (QR code within the app). Now, new vouchers will be created and the customers might enter the next store around the corner.

How we built it

For the mobile apps we were using react-native framework. Backend was build on Typescript for the microservices to integrate with Voucherify API and Twillio API within Azure Cloud. Voucherify was used for campaign/voucher creation and redemption. Such was based on customer segments (e.g. craft beer lover) and metadata as geo location and last redeemed voucher. Twilio was for verifying customers phone number and signing up/ in.

Challenges we ran into

The first challenge we ran into was something related to our code. We're using prettier and eslint to auto format our code, and because of that, it autocompleted one of the react hooks dependency array which triggered 300.000 requests to the google geocoding api, and consequently a $1000 bill. Hopefully for us, google understood the issue and didn't charge us the money to our credit card. See below: google

Another challenge was the assigning of a customer to specific vouchers, which were created out of a Voucherify campaign. For that we extended the Voucherify data model by using so called 'Metadata'.

Annoying API limits on Twilio and Voucherify for demo sandboxes during development.

The team was spread over 4 locations, Copenhagen (Federico), Berlin (Daniel), Düsseldorf (Christian) and a small danish village (Henning).

Accomplishments that we're proud of

We're proud of delivering not only one app but two. Thanks to yarn workspaces we were able to share components between apps and provide the same UX in both.

What we learned

We learned about great tools like twilio verify where you can verify phone numbers by triggering a text message. The integration was pretty seamless and easy to understand. Twilio also reached out to us and provide us support when needed.

Creating mobile apps with react native does speed up things enormously.

Voucherify is a pretty cool product to work with, well documented and supported. Kasjan, a guy who once explained us the basics, was totally mind-blowing.

What's next for VoucherChain - expect the unexpected

Conquer the world


Expo credentials to see both apps on iOS:

For the VoucherChain Merchant app no login is required. Just press "Sign In". Registration is available on the customer app thanks to Twilio Verify. Fore more information please contact:

Built With

Share this project: