Built a QR-to-reward loyalty platform with a habit loop that brings back 69% of the customers
Built with PHP / Laravel 11 · Vue 3 / Inertia · TypeScript · PostgreSQL · Redis · FFmpeg
Overview
MyPlace2GO is a loyalty and discovery platform for restaurants, bars, and cafes. A customer scans a QR code at the table, draws a playful digital reward and fills a loyalty card that pulls them back. As the project CTO I built the product in-house.
It is one Laravel 11 and PostgreSQL app serving two audiences: a multi-tenant dashboard for venue owners, and a public, mobile-first Vue 3 and Inertia app for their customers in Bulgarian, English, and Dutch.
The problem
Restaurants live on repeat visits, but it costs several times more to win a new customer than to bring an existing one back. Most venues still run loyalty on paper cards, cannot tell who returns or why, and watch their slow days stay empty. An outsourced MVP had proven the idea with 40 venues, but it could not be evolved safely: every change was slow and risky. So when I joined, the call was to rebuild in-house.
What I built
For a restaurant, bar, or cafe, everything runs off the QR code on the table. A customer scans it and lands straight on the venue's profile, a fast mobile page with no app to install and no login to look around. There they find the venue's digital menu, with a separate lunch menu, prices, and photos, alongside its live offers, its atmosphere and contact details, and its star rating from other guests.
The profile is also where the engagement happens. One tap draws a playful digital reward, a fortune and sometimes a prize such as a free second cocktail, which the customer can share to social media as a short video. Coming back and scanning the QR on the cash-register receipt adds visits to a digital loyalty card that pays out a reward, and guests can rate the venue and open its offers. Scan, get rewarded, come back: that is the whole loop.
The results
In the first four months after relaunch, venues ran about 40,000 QR scans and customers opened roughly 4,200 rewards, redeeming nearly 88%. The number that matters most: 69% of registered customers came back more than once, and 36% visited four or more times. The loop does what it promises. The platform reached 25 paying venues, and four cross-marketing campaigns let them hand out each other's branded rewards through the same engine. All on one in-house codebase, behind a CI pipeline that type-checks, lints, tests against PostgreSQL, and ships on green.