Inspiration

Restaurants work hard to earn a guest's first visit, then hand off every repeat interaction to a delivery platform that charges 20-30% commission. We wanted to find the moment a restaurant could reclaim that relationship without asking the guest to download anything.

What it does

Servd is an App Clip that lets a guest join a restaurant waitlist in under 10 seconds by scanning a QR code at the host stand. That single tap opens the 8-hour notification window, which the restaurant uses to send a table-ready alert, a post-meal feedback prompt with a discount code, and an evening takeout offer, all without requiring a login or explicit notification permission.

How we built it

We built Servd as a SwiftUI App Clip using the ReactivChallengeKit simulator framework, with three URL-routed flows (/waitlist, /feedback, /offer) sharing a single ClipExperience conforming struct. All state lives on the root view so it survives the framework's timer-driven re-renders cleanly.

Challenges we ran into

Keeping the app clip scope within 30 seconds was the hardest part.

Accomplishments that we're proud of

The waitlist join takes under 10 seconds with zero onboarding, which means the clip actually respects the 30-second constraint while still opening a meaningful re-engagement channel. We're also proud of how naturally the three notification slots map to a real restaurant's post-visit timeline.

What we learned

The 8-hour notification window is most powerful when the clip interaction itself is trivially small. The less friction at scan time, the more likely the guest stays opted in through all three touchpoints, and designing backwards from the notifications made the clip better.

What's next for Servd

The natural next step is a restaurant dashboard where owners configure their own discount codes, promo items, and notification copy without touching code. Longer term, the /feedback flow could feed into a first-party review system, letting restaurants capture sentiment before it ends up on other public platforms.

Built With

Share this project:

Updates