Built Court, an AI dating coach for iOS that turns matches into dates
Court is your personal dating coach on iOS. Screenshot a conversation and get three ways forward, write openers from her profile, review your photos and bio, score a date recording on tone and pacing, and ask an advisor that remembers every connection. Court makes courtship a discipline.
Shipped the whole product solo: the iOS app, the NestJS backend, the AI stack, the landing site, and the subscription layer.
View Project →
What It Is
Court is an AI dating coach built for the parts of dating people actually get stuck on: the reply she left on read, the opener that reads like spam, the profile that quietly costs matches, the date that went nowhere for reasons you cannot name.
It ships as an iOS app with a matching landing site at moderncourting.com. The positioning is deliberate: not a pickup gimmick, a discipline. The whole product, brand, and voice are built around treating courtship as something you get better at.


The Toolkit
Message Help reads a screenshot of the whole thread and hands back three ways forward: match her energy, raise the stakes, or make the move. Openers are written from her actual profile, so a line feels like attention instead of a copy-paste.
Profile Review goes photo by photo and line by line on what reads well and what to change first. Conversation Analysis scores a voice recording on tone, pacing, and confidence, then points at the exact moments that decided the night. Photoshoot turns clean selfies into a studio-grade profile set.
Tying it together is the Advisor, a chat that remembers every connection: who you are talking to, every thread, and what happened last time, so its advice follows the story instead of starting over.







Under the Hood
The app is Expo and React Native, iOS only, with a NestJS API on Railway backed by PostgreSQL and Supabase for auth and storage. Subscriptions run through RevenueCat with per-feature usage limits and an async job queue for the slower AI work.
The AI layer is model-agnostic and slot-based: each task routes to the model that won a blind test for it, across x.ai Grok, OpenAI, and Google Gemini, with prompt-injection guards and usage tracking in front. The look is a neoclassical duotone system, orange and deep navy crosshatch, carried consistently across the app, the store listing, and the marketing.