Kaiwa
AI-native social dining platform — built from zero to production in under 3 months.
A complete social dining platform — mobile apps (iOS + Android), 215+ API endpoints, 43 database models, AI-powered matching, WhatsApp chatbot with payment integration, and an affiliate marketing system. Built as the sole engineer in under 3 months.
Formally launched in Bengaluru on 24 February 2026 with curated dinners at restaurants across 3 locations every Tuesday. In under a month: 250+ users signed up, 60+ bookings for dinner events.
What Kaiwa Does
Kaiwa brings strangers together over weekly curated dinners at restaurants. The problem it solves: urban loneliness. The approach: AI-powered matching that puts the right people at the right table.
Users sign up, complete a personality quiz (optionally via voice), browse upcoming dinner events, and book a seat. Kaiwa’s matching engine — a genetic algorithm optimizer — assigns compatible tablemates based on personality embeddings, demographics, interests, location, and budget. After dinner, users give feedback, build a “food friends” network, and book again.
The entire experience spans four surfaces: a web app, iOS and Android apps (via Capacitor), a WhatsApp chatbot for conversational booking, and an admin dashboard for event management.
The Scale of the Build
This isn’t a landing page with a waitlist. The numbers tell the story:
- 215+ API endpoints across 28 route files
- 43 SQLAlchemy ORM models (users, events, bookings, payments, matching, affiliates, feedback)
- 44 service modules handling business logic
- 18 background task types (matching, reminders, payments, notifications, feedback)
- 766 frontend TypeScript files with file-based routing (TanStack Router)
- Full CI/CD pipeline with lint, type check, test, deploy
All built and deployed by one engineer.
AI-Powered Matching Engine
The matching engine is the core of Kaiwa — it determines who sits with whom. It’s not a simple filter. It’s a multi-phase orchestration system with a genetic algorithm at its heart.
Five Scoring Dimensions
Each potential table composition is scored across five dimensions:
- Personality — pgvector embeddings generated from the personality quiz, compared via cosine similarity
- Demographics — age range compatibility, gender balance, language overlap
- Interests — cuisine preferences, ambiance style, activity types
- Location — venue proximity using geolocation
- Budget — price sensitivity alignment
Genetic Algorithm Optimizer
The scoring feeds into a genetic algorithm (1,870 lines) that evolves table compositions across 100+ generations. Each generation mutates seating arrangements, evaluates composite scores, and selects the fittest configurations. The result: optimized tables where every diner is compatible with their tablemates.
Multi-Phase Orchestration
Matching runs in phases:
- Early matching (1-5 days before event) — initial table assignments
- Late matching (3-6 hours before) — fills remaining spots
- Real-time reassignment — handles cancellations, venue changes, and capacity constraints
WhatsApp Chatbot — Conversational Booking
A standalone FastAPI microservice that handles the full booking flow conversationally on WhatsApp — from discovery to payment to post-event feedback.
The booking flow:
- User sends “Hi” → Welcome + quick actions
- “What’s happening Saturday?” → LLM tool call → searches events via Kaiwa API
- User picks an event → seat count, dietary preferences
- Bot generates Razorpay payment link → user pays in browser
- Payment webhook confirms → bot sends booking confirmation with QR code
- Automated reminders at T-7, T-3, T-1 days and post-event feedback at T+1
Built with WhatsApp Cloud API (HMAC-verified webhooks), Azure OpenAI with tool calling, Redis sessions (24h TTL), per-phone locking for concurrency, and message deduplication.
More Features
- Bill Splitting with OCR — Azure Document Intelligence scans restaurant receipts, splits expenses across diners with tax and tip calculated per person, settles via Razorpay
- Subscription Billing — Razorpay subscriptions with tiered pricing, automated renewal with retry logic, grace periods, and invoice generation
- Affiliate & Referral System — Multi-touch attribution with QR codes, device fingerprinting (iOS), Play Store Referrer API (Android), Click-to-WhatsApp ad attribution, campaign-level analytics
- Voice Profile — Personality quiz via Azure Speech SDK, privacy-first (voice never sent to LLM, only text transcription), traits embedded as pgvector for matching
Tech Stack
Backend: FastAPI (async, asyncpg) · SQLAlchemy 2.0 · PostgreSQL + PgBouncer · Procrastinate (task queue) · Redis
Frontend: React 19 · TanStack Router + Query · Tailwind CSS 4 · Capacitor 8 (iOS/Android/PWA) · Vite · TypeScript strict
AI/Cloud: Azure OpenAI · Azure Speech · Azure Content Safety · Azure Document Intelligence · Azure Blob Storage · Azure Communication Services · Azure Notification Hub
WhatsApp Bot: FastAPI microservice · WhatsApp Cloud API v21.0 · Azure OpenAI (tool calling) · Redis sessions · Razorpay payments · APScheduler
Quality: pytest + Vitest + Playwright · Ruff + Biome · Mypy strict · Sentry · JWT + OAuth 2.0 (Google, Apple, GitHub)
Key Architectural Decisions
-
Procrastinate over Celery — PostgreSQL-backed task queue eliminates Redis as a single point of failure. Simpler operational model for a solo-run product.
-
Genetic algorithm over simple scoring — Rule-based matching doesn’t optimize across tables simultaneously. The genetic algorithm evaluates entire seating arrangements holistically, finding compositions a greedy approach would miss.
-
Standalone WhatsApp microservice — Decoupled from the main backend. Scales independently. Uses Kaiwa as an API, not a shared database.
-
Capacitor over React Native — One React codebase for web + iOS + Android. No native module headaches.
-
pgvector for personality embeddings — Keeps matching queries inside PostgreSQL. No external vector DB needed for this use case.
The App Experience
Want to build something like this?
Let's talk about your project. No commitment, no slides — just a conversation about what's possible.
Get in Touch