Case Study

DateVibes

A full-stack, AI-powered dating-ideas platform — a responsive web app, a native mobile app, and a NestJS API — that helps couples discover personalized date ideas blended from their tastes, location, and the weather. Built as a production system, not a prototype.

React 18React NativeNestJSpgvectorOpenAIBullMQStripe
DateVibes — personalized AI date ideas
The concept

Date ideas that learn

Couples sign up individually or as linked partners, build a taste profile in under two minutes, and get AI-generated suggestions blended with real venue data. They swipe, like, and favorite — and the recommendation engine learns from every interaction.

< 2 min

From signup to a personalized swipe deck

Daily drop

A fresh, precomputed set of ideas per couple

SEO surface

Public discovery pages by city and topic

Three apps, one monorepo

Web, mobile, and API — sharing one type-safe contract

A pnpm monorepo with apps/backend, apps/frontend, and a shared packages/shared of typed API contracts and Zod schemas used across web, mobile, and server.

Web app

React 18 + TypeScript + Vite, TailwindCSS, Radix UI, TanStack Query, and React Router 6. A public marketing site with per-city and per-topic SEO landing pages, the authenticated explore/swipe/favorites experience, a date-plan builder, pricing, and an RBAC admin console.

React 18ViteTailwindRadix UITanStack QueryNetlify

Native mobile app

React Native + Expo (SDK 54) with React Navigation, React Query, Expo Secure Store, and Expo Location. Mirrors the core web flows — onboarding, taste profile, swipe-to-discover, daily drop, idea detail, plan builder, and a RevenueCat-powered paywall — with Sentry crash reporting.

React NativeExpo SDK 54RevenueCatExpo LocationSentry

Backend API

NestJS with ~30 feature modules, TypeORM over PostgreSQL/Supabase, pgvector for embeddings, Redis + BullMQ for caching and background jobs, JWT/Passport auth, and scheduled tasks. Deployed to AWS EC2 via PM2 with health checks, graceful shutdown, and auto-restart.

NestJSTypeORMpgvectorRedisBullMQAWS EC2 / PM2
The hard part

A recommendation engine that gets it right for two people

The centerpiece of DateVibes. Candidate ideas are embedded, stored in pgvector, and ranked against a per-couple preference profile by a configurable, weighted scoring service.

Vector recommendation core

OpenAI embeddings for every venue and idea live in pgvector and are ranked against a per-user preference vector by a configurable, weighted scoring service.

A real learning loop

Every like, dislike, favorite, and skip is captured as an interaction and fed back into the couple's profile, so the deck visibly sharpens as they swipe.

Partner compatibility

Date personas and partner-compatibility scoring mean suggestions account for two people at once, not a single user's taste.

Tunable weight profiles

Scoring weights are persisted per cohort and per user, so the ranking can be experimented with and tuned without shipping code.

The weighted scoring signals

Taste similarity

Cosine similarity between the venue/idea embedding and the couple's learned preference vector in pgvector.

Location & distance

Real venue coordinates from Google Places + Foursquare, distance-decayed against the couple's location.

Weather fit

Live OpenWeather data filters indoor vs. outdoor ideas in real time so a rainy night never surfaces a park picnic.

Trending & social

Trending scores and social signals nudge ideas other couples are loving right now up the ranking.

Novelty

A novelty term keeps the deck fresh, down-weighting ideas close to what the couple has already seen.

Budget & time-of-day

Budget bands and time-of-day appropriateness tune suggestions to the moment, from a coffee date to a night out.

External integrations

Real venue data, real weather, real payments

Every external call is wrapped in a Redis caching layer, and every webhook is handled idempotently.

Google Places + Foursquare

Venue & place data with caching layers and an image-proxy / enrichment pipeline.

OpenWeather

Real-time weather used to filter indoor / outdoor ideas before they ever reach the deck.

Stripe + RevenueCat

Payments on web and mobile with idempotent webhooks and subscription-history tracking.

Resend

Transactional email plus waitlist and contact flows.

S3-compatible storage

Stores AI-generated and enriched venue imagery served through the image proxy.

OpenAI

Embeddings for ranking plus AI suggestion, itinerary, and image generation with credit accounting.

What “done” looks like

A loop that pays off in minutes

A new couple signs up on web or mobile, completes a taste profile in under two minutes, and immediately swipes through location- and weather-aware date ideas that visibly improve as they interact. They save favorites, build and share a date plan, and upgrade to premium through a working paywall — all backed by an API that learns from their behavior and refreshes a personalized daily drop.

Want a product like DateVibes?

We build production-grade, AI-powered platforms end-to-end — web, mobile, and API. Let’s talk about yours.