Khosha Systems · Phygital Studio — Product Case Study

One brain.
Three surfaces.

An end-to-end real-estate sales platform for Venus Group and its flagship launch, The Universe. A reception kiosk, an Expression-of-Interest engine, and a full sales CRM — three products, one shared database, one identity, one project truth.

3 live applications 1 self-hosted Supabase brain 40+ screens shipped Ahmedabad · India
Scroll
3
Applications, one suite
657
Units under management
12
Lead-pipeline stages
4
Cross-app RPC contracts
1
System of record
The architecture idea

Not three apps that sync.
One system wearing three faces.

Most suites bolt separate tools together and reconcile later. Venus was built inside-out: a single Postgres brain, with each surface reading and writing the same truth in real time. There is never a second copy of the customer.

CRM · Orbitsystem of record
GRE Kioskwalk-in capture
EOI Enginebookings / KYC
Self-hosted Supabase
The central brain
Postgres · Auth · PostgREST
01

The CRM is the single system of record

Every prospect is one leads row. The kiosk and the EOI engine never keep a parallel customer list — they write into, or link to, the CRM.

02

One project list, shared by all three

public.projects is the single registry. The Universe is project one. GRE is Universe-only; EOI is multi-project; the CRM scopes everything by project.

03

One identity store

All three log in against the CRM's Supabase Auth. Users and roles are managed once, in CRM → Settings → Users, and mapped into each app.

04

Contracts, not integrations

Cross-app writes go through a handful of SECURITY DEFINER Postgres functions. The apps stay dumb; the database stays correct.

The spine

The lead lifecycle runs through everything

A visitor enters at reception, travels a single pipeline, and — if they book — becomes a customer through one atomic transaction. Every app is just a lens onto a stage of this journey.

S1
New inquiry
S2
Contacted
S3
Site-visit planned
S4 · GRE
Site-visit done
S5
Follow-up / revisit
S6 · EOI
Expression of interest
S7
Booked → Customer

Gold stages are where GRE and the EOI Engine hand the lead back to the CRM.

Orbit

crm.venusprojects.co.in · the system of record

A full real-estate sales CRM: capture, pipeline, inventory, channel partners, commissions and reporting — organised the way a sales floor actually works, from Capture to Deliver.

Lead pipeline12 stages, source & UTM attribution, duplicate detection, per-owner queues.
Live inventoryTowers, floors, typologies and status — the single source EOI blocks against.
Channel partnersPartner tagging on leads with an automatic commission ledger on booking.
Reports & AI insightsSource, status, site-visit and market dashboards, plus an AI-insights view.
Targets & commissionsSales targets per person and a transparent commission trail.
Role-based accessAdmin / manager / team-leader / user, enforced by Supabase RLS.
React + Vite SPASupabase / PostgRESTRow-level securityPWA
crm.venusprojects.co.in/leads
CRM Leads pipeline
Leads pipeline — 25 live leads across every stage, with source, project, owner and one-click journey.
CRM inventory
Inventory
Channel partners
Channel partners
Reports
Reports
AI insights
AI insights
eoi.venusprojects.co.in
EOI dashboard
EOI dashboard — the six-step booking process, from lifestyle pitch to allotment, at a glance.
Token queue
Token queue
Netting & shortlist
Netting & shortlist
Unit blockage
Unit blockage
Audit trail
Audit trail

The booking engine

eoi.venusprojects.co.in · multi-project · 12 modules

Expression-of-Interest management for high-demand launches: turn a cheque and a KYC into a fair, auditable allotment — without a spreadsheet or a fistfight at the sales gallery.

Applicants & KYCPAN / Aadhaar, unit-size preference, verified against the lead.
Cheques & receiptsBankable ₹5-lakh cheque capture with official receipts.
Token queueUnique serials shared on WhatsApp; fair, ordered demand.
Netting & shortlistBatch invites and shortlisting within the netting window.
Timed unit blockageHold a unit for a token-holder against live CRM inventory.
Full audit trailEvery decision logged; who did what, when, and why.
Node / ExpressReact + ViteSupabase DBWhite-label tokensKiosk mode
GRE · the Universe — reception kiosk

A walk-in, captured in under a minute — and it feels like a welcome, not a form.

The Guest Reception Experience is a cinematic, full-screen kiosk at the sales gallery. A visitor is greeted, verified by OTP, and gently profiled; the moment they finish, a lead lands in the CRM at site-visit-done. Its own design language — gold on black, Cinzel & Cormorant — sets it apart from the SaaS tools behind it.

GRE welcome
Welcome — the first breath of the experience.
GRE OTP
Verify — a 4-digit code, auto-advancing.
GRE name & email
Name & email — the lightest possible ask.
GRE profile
What you do — service or business, gently.
GRE intent
Living or business — intent for the sales team.
GRE budget
Budget envelope — a calm slider, up to ₹3 Cr.
Static PWA + Express relayWhatsApp OTPFully fluid · 360px → kioskintake_gre_walkin()
The contracts

Three apps, joined by four functions

Every cross-app write is a single Postgres function — atomic, auditable, and impossible to get half-done. This is the entire integration surface.

GRE → CRM

intake_gre_walkin()

name, phone, project, budget, source → lead_id (uuid)

De-dupes by phone, advances the lead to site-visit-done, and never regresses a booked or lost lead.

EOI → CRM

eoi_link_lead()

phone, name, email, project → lead_id (uuid)

Find-or-create on every applicant; new ones enter as source = 'EOI'. The lead id is stored on the applicant.

Booking → CRM

convert_lead_to_customer()

lead_id, sale_amount, unit, partner → customer_id (uuid)

One atomic move: stage → booked, insert the customer, and auto-fire the partner commission.

+ user_app_role() — the shared-auth contract every app calls to authorise a signed-in CRM user.

Under the hood

Self-hosted, single-server, no vendor lock

The whole suite runs on one hardened Ubuntu box behind Caddy, with a self-hosted Supabase brain. Owned end-to-end, deployable in an afternoon.

Data

Self-hosted Supabase

Postgres 17 with Auth (GoTrue), PostgREST and Realtime, behind a Kong gateway.

  • One public schema = the CRM
  • eoi schema references shared projects
  • Row-level security throughout
Edge

Caddy + automatic TLS

Every app on its own subdomain, Let's Encrypt certificates, localhost-only app ports.

  • crm · eoi · universegre
  • api gateway · Swagger docs
  • ufw: 22 / 80 / 443 only
Apps

Right tool per surface

Vite SPAs where interactivity leads; Express relays where the server must hold a secret.

  • CRM — React SPA (static)
  • EOI — Express + React
  • GRE — static PWA + relay
Ops

systemd + auto-deploy

Each service supervised by systemd; nightly uniform backups per project.

  • Per-project OPS.md runbooks
  • Keyed API gateway for partners
  • One-line backup manifest
The craft

Two design languages, one design system

Tools for the sales team should be fast and legible; the moment a customer sees, should feel like luxury. Both are built on the Khosha Design System — the same tokens, re-branded, never rewritten.

Internal · VENUS

Clarity for the sales floor

Dense tables, hairline borders, instant feedback. Red as a decisive accent on near-white. Built for speed, hundreds of times a day.

Customer · GRE

A cinematic welcome

Gold on black, Cinzel & Cormorant, choreographed motion. Every step is paced like a private viewing, not a data-entry form.

This very page is KDS too — Marquee editorial scale over a Filter-Coffee palette, ~9KB of tokens, zero UI dependencies.