CRM for interior design studios

Every lead called on time.
Every follow-up remembered.

Interior Sales OS replaces the lead spreadsheet. Your sales team opens one screen each morning, calls in order, taps how the call went, and the app plans the next step. You see everything, without asking anyone.

  • Works on any phone. No app store.
  • Your own portal, e.g. yourstudio.salescrave.in
  • Early studios: free for the first year

The problem

Studios sell on spreadsheets and memory.

๐Ÿ“ž

"Call me Saturday at 11"

Written in a remarks cell. Nobody is reminded. The client signs with another studio.

๐Ÿ—‚๏ธ

Columns stay empty

Next follow-up, last call, outcome: the sheet has columns for them, but busy people don't fill them in.

๐Ÿคท

The owner is guessing

Which source brings orders? Who is overdue? Where do leads drop? Answers need a meeting.

Workflow

From enquiry to order, in one loop.

Every lead always has a next step. The app asks for it, so nothing is forgotten.

Add new lead form on a phone

A lead comes in

Added by hand in seconds, imported from a spreadsheet, or sent from your website. Duplicate phone numbers merge into the existing lead instead of creating a copy.

  • Project / building, source, budget, BHK
  • Hot ยท Warm ยท Cold
  • Goes straight to the default owner, who gets an alert
Today queue on a phone

Today tells each person what to do

Overdue first. Meetings and times the client asked for are pinned. Hot leads come next. Leads with no next step are listed so they get planned.

  • Tick a task done in one tap
  • Morning summary on the phone
  • Owners switch between "My work" and "Team"
WhatsApp message templates

Call or WhatsApp in one tap

The studio's message templates fill in the client's name, property and meeting time. Phone numbers work however they were typed: 98765โ€ฆ, 098765โ€ฆ, +91 98765โ€ฆ.

  • First message ยท Follow-up ยท Meeting confirmation
  • The best template for the stage is suggested
  • Owner edits templates for the whole team
Log call outcome

Tap how the call went

Connected, not answering, busy, switched off, call back later, wrong number. Attempts are counted and every call is on the lead's timeline, with who made it.

  • A connected call counts as first contact
  • Owner sees calls made and the connect rate
Follow-up time picker

One tap plans the next step

"In 2 hours", "This evening", "Tomorrow"โ€ฆ it saves instantly. If the client asked for an exact time, switch on They asked for this time and the reminder always fires.

  • Reminders 2, 5 or 10 minutes before
  • Meetings use the same picker
Lost reason picker

Won, or lost with a reason

Moving a lead to Lost asks why. Lost leads keep their history on their own page, and the ones who already met you are flagged as the best to try again.

  • Lost reasons feed the owner's analytics
  • Reopen a lead in one tap

Features

Built from how studios actually sell.

โ˜€๏ธ

Today queue

Overdue, due today, pinned client times and hot leads in the right order, per person.

๐Ÿ“ž

One-tap contact

Call, WhatsApp with templates, or copy the number from any card.

โฐ

Fixed-time follow-ups

"They asked for 6 pm" is treated differently from "sometime today".

๐Ÿ“

Call logging

Outcome, attempt count and notes on every call, in two taps.

๐Ÿ”ฅ

Hot ยท Warm ยท Cold

Prioritise the leads most likely to sign. Filter and sort by it.

๐Ÿข

Projects & sources

Group leads by building or society; track your own list of lead sources.

โ™ป๏ธ

Lost-lead recovery

Reasons on every loss and a "had a meeting โ€” retry" list.

๐Ÿ“ฅ

Spreadsheet import

Upload a CSV, match columns, skip duplicates. Understands "15 lakh" and "1.2 Cr".

๐Ÿ””

Phone notifications

New lead assigned, follow-up and meeting reminders, and a morning summary.

๐Ÿ”

Instant search

Find any lead by name, phone or location, or jump to any page.

๐ŸŒ™

Light & dark

Comfortable on a phone in a site visit or a laptop in the office.

๐Ÿ”

Invite-only access

Only people the owner adds can join. Removing someone frees their leads for the team.

For studio owners

See where leads are lost, without asking.

Analytics: where leads drop, calls, what works

Where leads drop

New โ†’ contacted โ†’ meeting โ†’ proposal โ†’ won, and the biggest leak between steps.

What works

Results by lead source, by project and by salesperson.

Discipline

Calls logged, connect rate, follow-ups done on time, leads not yet called.

Team control

Add people by email, choose who gets new leads, remove access when someone leaves.

Default owner for new leads

How it's built

A multi-tenant SaaS, end to end.

Designed, built and run by one developer: product, frontend, database, auth, notifications and deployment.

18Postgres tables
51row-level security policies
50SQL functions
26versioned migrations
18klines of TypeScript
Studio portals on Vercel talk to Supabase (Postgres with row-level security, RPC functions, Edge Functions and pg_cron), which sends Web Push notifications to phones. Clients Studio portal (PWA)React 19 ยท TypeScript ยท Vite PhonesService worker ยท Web Push This website"Get your CRM" form Vercel Per-studiosubdomainsstudio.salescrave.inlocked to one tenant CI from GitHubpush to main = deploy Supabase PostgresRow-level securityper studioAudit trail RPC functionsStage changes,tasks, routing,call logging AuthInvite-only sign-upForced first passwordRemoved = no access Edge Functionsemployee-signupsend-notificationspg_cron ยท every minute Web Push (VAPID)

Multi-tenant by design

Every row carries a studio. Postgres row-level security decides what each user can read or change, so one studio can never see another's data, even through the public API.

Business rules in the database

Stage changes, follow-ups, meetings, reassignment and call logging run as security-definer SQL functions that validate permissions and write an audit trail in one transaction.

Invite-only auth, no email needed

Public sign-up is off. An Edge Function creates an account only for an email the studio admin added, and places it in that studio as an employee.

Reliable reminders

pg_cron calls a Deno Edge Function every minute. Each reminder is claimed atomically before sending, so a slow push never fires twice.

One phone parser, two places

The same normalisation rules run in TypeScript (for Call and WhatsApp links) and in SQL (for duplicate detection), so they always agree.

Per-studio portals

Each studio gets its own subdomain on Vercel, locked to its tenant by configuration, from a single codebase that deploys on every push.

React 19TypeScriptVitePostgreSQLSupabaseRow-level securityPL/pgSQLDeno Edge Functionspg_cronWeb Push ยท PWAVercelPlaywright

Get your CRM

Your studio's own sales portal.

Tell us about your studio. We'll call you, set up your portal at yourstudio.salescrave.in, move your existing leads in, and walk your team through it.

  • Free for the first year for early studios
  • Your leads stay yours: only your team can see them
  • Tell us what slows you down. We fix it fast.