-
-
WingWard app icon.
-
Conversation quiz: ten short questions about lifestyle, values and relationships shape your profile.
-
Voice profile: pick a conversation partner style and start a spoken interview.
-
Live voice interview with an AI partner. The transcript is saved and you confirm your profile yourself.
-
Your profile, built from conversations with Ward. After a fictional demo meetup, you confirmed 3 new items.
-
RevenueCat Test Store purchase sheet. Test purchase only, no real charge.
-
RevenueCat Premium confirmed by the server and restored on the same install (Test Store).
Inspiration
There are so many people in the world I haven't met yet. Some of them would be people I really click with. But when I think about how to actually find them today, the path is full of small walls: endless swiping, first messages that go nowhere, awkward back-and-forth just to pick a day. A lot of people who want something real give up somewhere in the middle.
I think AI can do more than save time. It can help people get closer to each other. That's the idea behind WingWard. Your AI agent, Ward, takes care of the online part, all the way to suggesting where and when to meet, so you can spend your energy on meeting someone in person. For me, a relationship starts when two people are actually in the same room. Ward's job is to get you there faster, and you still make every decision.
What it does
WingWard is an iOS app. Here's the flow as it works today:
- You answer a 10-question quiz, then have three short real-time voice conversations with AI voices you pick. The aim: people show more of who they are when they talk than when they fill in a form. If you skip a question, it's treated as unknown, not held against you.
- The app builds a profile from those conversations. You read it and confirm it before it's used for anything.
- Matching scores compatibility across 14 features in three layers. Then your Ward has a text conversation with the other person's Ward. You see the match along with the reasons.
- If you both tap "I'd like to meet," that's free and has to be mutual.
- Before scheduling, both people have to pass an identity-verification gate. Then Ward suggests a place and a time for you, so nobody has to go back and forth about where and when. Both of you approve it, and that's the plan. Arranging the meetup is the paid step.
- After you meet, you talk it through with Ward by voice. The traits you confirm and Ward's understanding of you get updated for next time.
I'm not claiming WingWard can predict who you'll fall for. What it tries to do is shrink the distance between "we might get along" and "let's meet."
How we built it
The iOS app is SwiftUI (iOS 17+). The API is Hono 4.9 on Cloudflare Workers, written in TypeScript 5.9, and the Ward-to-Ward conversations run inside Durable Objects. Supabase (PostgreSQL 17) handles auth and data, with row-level security so only the two people in a match can read it.
For voice I use OpenAI gpt-realtime-2.1-mini, with gpt-4o-mini-transcribe for transcripts. The phone only ever gets a short-lived session credential, never a permanent key. Analysis happens after the call with Mistral (mistral-large-2512 and ministral-8b-2512). I kept analysis out of the live conversation on purpose, so the voice side can just listen and ask one thing at a time.
RevenueCat
Signing up, matching, and saying you'd like to meet are all free. You pay at the point where you're most sure: when you're actually arranging to see someone, once you're past the free allowance.
The app uses the RevenueCat Purchases iOS SDK (5.88). It shows the current Offering and supports purchase and restore. There are two products: a monthly subscription, wingward_premium_monthly (entitlement premium), and a consumable wingward_meetup_credit. RevenueCat webhooks hit our API, where they're authenticated and checked with HMAC, then written to the database in one transaction that updates entitlements and the credit ledger. The app asks our API for billing status, so a purchase on the device alone never unlocks anything on the server.
Challenges we ran into
The hardest part was keeping everything consistent when things go wrong halfway. A voice call drops, someone cancels, transcripts arrive out of order. I ended up tying completion to the session, checking ownership on every write, and writing tests for exactly those broken cases.
Another one was stopping the AI from deciding who you are. That's why skipped answers stay unknown, profiles need your OK, and every match comes with its reasons.
And payments had to be trusted on the server, not the phone, which is why everything goes through the webhook path above.
What I learned
Finding someone you truly click with shouldn't take this much effort. Working on WingWard taught me to keep lowering the barriers for the user, as far as they can go, until the app can step out of the way and let people have a real, human experience offline.
I also spent a lot of time on where to ask for money, and where the paywall should even appear. If it shows up too early, before you've seen a single match, people just leave. If you have to pay to say "I'd like to meet," it feels like paying for a maybe. So I put the paywall at the point where both people have already said yes and are actually arranging the meetup, beyond the free allowance. That's when Ward is picking a place and time for both of you, the moment the app is doing real work for you, and I think it's the moment people understand why it costs something.
What's next
- Research. I'm planning to do neuroscience research at university, focused on what it really means for two people to click. The goal is to use voice conversation data to make better matches between people who genuinely get along. This is future research, not something the app does now.
- Cafés. Cafés have quiet hours with empty tables. I want to partner with them and send WingWard meetups into exactly those hours. The café gets customers it wouldn't have had, and WingWard earns a referral fee for each real visit. That would give WingWard a second revenue stream next to in-app purchases, one that only grows when people actually meet. No partnerships exist yet.
- ID review. The verification gate is built. Document upload and review come next.
Built With
- cloudflare-workers
- durable-objects
- hono
- ios
- mistral-ai
- openai
- postgresql
- revenuecat
- supabase
- swift
- swiftui
- typescript
- webrtc
Log in or sign up for Devpost to join the conversation.