
RSVP
Apple Invites, if Apple built it
Why I Built This
Apple's Calendar invites stop at 'Yes/No/Maybe.' Eventbrite is overkill for a birthday party. Paperless Post charges $15 to send a digital card. I wanted to build the event tool I actually needed: something that handles the full lifecycle—create, invite, track, check-in—without requiring guests to download an app or create an account. The constraint: it has to work when you're standing at a door with 200 people waiting.
Who We Designed For
Event hosts who need more than calendar invites but less than Eventbrite
Social Hosts
People throwing birthday parties, dinner parties, or game nights who want real headcounts
Wedding Planners
Couples or coordinators managing 100+ guests with plus-ones and dietary requirements
Corporate Event Managers
Team leads organizing offsites or launch parties who need check-in accountability
Tech Stack
App Preview
Inspired by iOS 26 native library for a native experience.
Screenshot coming soon
Response rate at a glance
Screenshot coming soon
Response rate at a glance
Screenshot coming soon
Sub-second check-in
Screenshot coming soon
Headcount with plus-ones
Screenshot coming soon
Plus-ones and dietary info
Process
Modeled the domain with 5 Core Data entities (Event, Guest, RSVP, ScanLog, Template) designed for CloudKit compatibility. Relationships needed to support both host-centric views (all guests for my event) and guest-centric views (all events I'm invited to). CloudKit's eventual consistency shaped the conflict resolution strategy.
Click to reveal insights
Built QR generation with Core Image (CIFilter) and scanning with AVFoundation. The payload is JSON with event ID, guest ID, invite token, type, and timestamp. Verification checks the token against the stored hash, confirms the guest exists, and validates their RSVP status—all before the haptic fires.
Click to reveal insights
Implemented batch import that parses newline-separated emails, extracts names from address patterns (john.doe@ → John Doe), and deduplicates against the existing list. The RSVP form conditionally shows plus-one selection only when response is 'Yes' and limits choices to the guest's allocation.
Click to reveal insights
Configured NSPersistentCloudKitContainer with automatic migration and query generation. Implemented remote change notification handling to refresh UI when updates arrive from other devices. Tested extensively in Airplane mode to verify offline-first behavior.
Click to reveal insights
Optimized the scanner for the door scenario: large viewfinder, instant haptic feedback, automatic advance to next scan. The check-in counter updates in real-time. Added manual lookup for guests who forgot their QR code, with search across name and email.
Click to reveal insights
AI Collaboration
Tools
Approach
Leaned on Claude for framework-specific knowledge: Core Image filter chains for QR generation, AVFoundation capture session configuration, and CloudKit container setup. The QR verification flow was designed collaboratively—Claude suggested the HMAC approach for tamper-proofing invites.
Example Prompts
Generate a QR code using CIFilter with JSON payload. What error correction level balances information density with scan reliability?
Configure AVCaptureSession for QR scanning. How do I get 60fps metadata processing without dropping frames?
What's the NSPersistentCloudKitContainer setup for automatic sync with conflict logging?
Design a batch email import that extracts names from address patterns. Handle edge cases like john.doe+events@.
Key Learnings
CloudKit eliminates networking code but introduces new debugging challenges
QR codes are underutilized—they can carry structured data, not just URLs
AVFoundation is powerful but requires careful session lifecycle management
Offline-first isn't just a feature; it's an architectural commitment
The check-in moment is the product—everything else is setup
Batch operations need progress indication and error recovery, not just success
Features
Cool idea? Let's collaborate.
Have a passion project or experimental concept? I love exploring new ideas and building things that push creative boundaries.
Start a Conversation