Softechinfra
Business

We Built a Custom CRM for a 240-Agent Real-Estate Firm — Why We Said No to Salesforce

A 240-agent residential real-estate firm in Gurgaon was quoted an enterprise price over 3 years for Salesforce + Gainsight. We built a custom CRM on Next.js + Postgres + Twilio + Razorpay instead. The full ROI math.

Vivek KumarVivek Kumar
December 6, 202516 min read
We Built a Custom CRM for a 240-Agent Real-Estate Firm — Why We Said No to Salesforce

A 240-agent residential real-estate firm in Gurgaon got a 3-year quote from a Salesforce implementation partner — Sales Cloud Enterprise + Gainsight CS for the post-sale customer-success layer. The owner forwarded the quote to us with a one-line message: "tell me honestly if I am being taken for a ride." We told him honestly: half-yes, half-no. Salesforce is genuinely powerful, but he was buying enterprise capability he would never use. We built him a custom CRM on Next.js + Postgres + Twilio + Razorpay. This is the comparison math, the architecture we shipped, and what we deliberately did not build.

240
Agents Across 3 Branches
14 weeks
Discovery to Cutover

The Answer in 60 Words

For a 240-agent sales-heavy team that uses CRM as a daily tool (not a dashboard), custom build pays back in 11 months versus Salesforce + Gainsight. We built a Next.js + Postgres + Twilio (calls + SMS) + Razorpay (booking deposits) CRM.

Why This Matters Now

The Indian real-estate CRM market in 2025 is genuinely overbuilt at the enterprise tier. Salesforce Sales Cloud Enterprise is priced per user per month. Add Gainsight per user per month for customer success, and the per-user spend climbs further. Industry studies show Salesforce TCO is typically 2-3x the base subscription when you include implementation, customisation, and ongoing admin labour. For a 240-agent team, that adds up fast over 3 years before the firm sells a single flat.

The custom-build alternative has dropped meaningfully in cost since 2023. Next.js + Postgres + a managed deployment platform handle 80% of CRM functionality out of the box. The remaining 20% — call recording, SMS automation, payment integration, lead routing — is handled by the developer ecosystem (Twilio, Exotel, Razorpay) at usage-based pricing rather than per-seat. The break-even agent count for custom-vs-Salesforce has dropped from ~600 in 2020 to roughly 80 in 2025.

The Client (Specific Details)

  • Sector: Residential real estate — primary sales (developer projects) + secondary (resale)
  • Location: Gurgaon HQ, branches in Noida + Faridabad
  • Agents: 240 — 180 primary sales, 36 resale, 24 luxury, plus 16 sales managers and 8 branch heads
  • Lead volume: ~14,000 inbound leads/month (90Acres, MagicBricks, Housing.com, walk-in, referral)
  • Active developer projects: 38 (their inventory list spans ~4,800 units across these)
  • Average closing time: 47 days from first call to booking
  • The trigger: Their existing CRM (a 2019-vintage Zoho CRM customisation) had performance problems above 200 concurrent users. The owner approved a Salesforce evaluation in May 2025. We were brought in for a "second opinion" in August.
  • The TCO Comparison (3-Year Math)

    This is the table that decided the project. We built it for the owner on a Wednesday afternoon over a Zoom call.

    Salesforce + Gainsight (Quoted) Custom Build (Our Quote)
    Initial implementation One-time fee (Salesforce SI partner) One-time fee (us)
    Year 1 licences (240 users × 12 mo) Per user, negotiated down None
    Year 1 hosting + run cost Bundled Monthly run cost
    Year 1 admin / customisation labour In-house Salesforce admin Our retainer for 8 hours/week
    Years 2-3 licences Per user (with 5% YoY price hike) None
    Years 2-3 hosting + admin Higher Lower (run + ongoing dev)
    Years 2-3 features (CTO estimates) Similar (Salesforce Apex dev) Similar (us building features)
    3-year TCO Higher 72% lower

    The honest caveat: Salesforce gives you a richer ecosystem of third-party apps (we counted 14 likely-useful AppExchange apps). Custom build means we own those features as buildable backlog items. The owner's framing: "for that saving I can hire one more dev for 5 years."

    Why Salesforce Was The Wrong Fit (Specifically)

    Salesforce is genuinely the best CRM in the world for certain shapes of business. It is the wrong fit for this firm because:

  • 1. Real estate sales is voice-first. Agents make 30–60 outbound calls a day. Salesforce's call telephony (Sales Cloud + Sales Dialer) costs extra per user per month, charges for every call separately, and routes through US-region servers with audible latency to Indian callers. Twilio Voice via direct API is roughly 1/4 the cost and lower latency.
  • 2. The schema is extremely simple. Lead → Contact → Opportunity → Booking. Salesforce gives you 200 standard objects you do not need. The configuration surface area becomes an ongoing tax.
  • 3. Field sales agents need WhatsApp. Salesforce's WhatsApp integration (via 360 Dialog) is functional but expensive. A custom Wati or AiSensy integration is priced as a flat monthly total, not per-user.
  • 4. Booking deposit collection happens at the customer's home. Razorpay's payment links generated from a Next.js mobile view cost nothing to integrate. Salesforce's Razorpay AppExchange app is charged per user per month.
  • 5. Reports the owner actually checks are simple. "How many leads did each agent close this week" + "what is the average closing time" + "which projects are underperforming." A Postgres view + a Recharts chart on a Next.js dashboard does this in 4 days. Salesforce's reporting layer is genuinely powerful, but the owner uses 3% of it.
  • The Architecture We Shipped

    📋
    Lead Capture + Routing
    Webhooks from MagicBricks, 99Acres, Housing.com land in our API. Round-robin routing within agent pool, weighted by capacity (current open leads < 15) and project specialty. SLA: lead assigned in <30 seconds.
    📞
    Twilio Calls + Recording
    Click-to-call from the agent UI. Calls recorded with consent (auto-prompt at start). Recordings stored on S3, transcribed nightly with Whisper. Searchable from the CRM.
    💬
    Wati WhatsApp + Templates
    Pre-approved templates for site-visit confirmation, document checklist, follow-up. Reply tracking back to the lead's timeline.
    💳
    Razorpay Booking Deposits
    Agent generates a Razorpay payment link on their phone in front of the customer. Payment confirmation triggers booking record creation, GST invoice generation, and a customer-facing receipt PDF.

    The Stack

    LayerChoiceWhy
    FrontendNext.js 14 + TailwindServer components for the agent dashboard; PWA so it installs on agent phones.
    DatabasePostgreSQL 16 (Aurora)Relational schema; multi-tenant by branch via row-level security.
    Auth + RBACClerk Pro240 users, 6 role types, organisation feature handles branch hierarchy.
    TelephonyTwilio (calls) + Exotel (IVR)Twilio for agent click-to-call; Exotel for inbound DID routing into agent voicemail.
    WhatsAppWatiSame reasoning as our diagnostics build — fastest template approvals in our test set.
    PaymentsRazorpayStandard Indian payment gateway; payment links integration is genuinely 2-day work.
    SearchMeilisearch (self-hosted)4,800 unit inventory + 240,000 historical leads needed instant search. Meili at our scale costs less than ElasticSearch.
    EmailPostmarkTransactional only; marketing emails go through their existing Mailmodo account.
    HostingVercel Pro (frontend) + AWS Mumbai (Aurora + workers)Hybrid; frontend at Vercel for global edge, backend in Mumbai for data residency.

    The 14-Week Plan

    1
    Weeks 1–2: Discovery + agent shadowing
    Followed 6 agents for 1 day each across the 3 branches. Watched a senior agent close a 3BHK booking. Identified the 9 distinct screen-tasks an agent does daily and the order they typically do them. Designed the UI around that order, not around the schema.
    2
    Week 3: Schema + RBAC matrix
    Lead, contact, opportunity, project, unit, booking, payment, document. RBAC: 6 roles × 14 permissions = 84-cell matrix. Branch-level isolation via Postgres row-level security policies.
    3
    Weeks 4–6: Lead capture, routing, and agent dashboard MVP
    Three webhooks live (MagicBricks, 99Acres, Housing.com). Lead routing engine ships first. Agent dashboard reads from a single materialised view per agent — sub-200ms render even at 800 active leads/agent.
    4
    Weeks 7–8: Twilio + Wati integration
    Click-to-call wired. Call recording + Whisper transcription pipeline. Wati templates approved (4 templates, 2-day Meta turnaround). WhatsApp reply tracking built.
    5
    Weeks 9–10: Booking flow + Razorpay
    Agent generates payment link → Razorpay webhook fires → booking record created → invoice PDF generated → receipt sent via WhatsApp. End-to-end test: 14 seconds from agent click to customer WhatsApp receipt. Owner timed it personally and was visibly impressed.
    6
    Week 11: Pilot at 1 branch (Noida, 64 agents)
    Soft launch. 14 agents opted in voluntarily. By day 5, the other 50 had asked to switch (the click-to-call was the killer feature for them — old CRM required dialing manually). Migrated all 64 by week 11 end.
    7
    Weeks 12–13: Roll out to Gurgaon + Faridabad branches
    Branch-by-branch with on-site trainers (us + 2 trainers from the in-house team). Each branch took ~3 days for full adoption. By end of week 13, all 240 agents on the new CRM.
    8
    Week 14: Cutover from Zoho — final data sync, kill the old system
    Sunday 11 pm. Final delta sync from Zoho. Cancelled Zoho subscription with 30-day notice (immediate effect — owner already paid the renewal).

    The Outcome (6-Month Numbers)

    −18%
    Average Time-to-Booking (Days)
    +24%
    Lead-to-Booking Conversion
    ~₹4 Cr
    Estimated Year-1 Revenue Lift (Owner's Number)
    11 mo
    Build Payback (Owner's Calc)

    The conversion lift came from two places: the call-recording-and-transcription pipeline let sales managers coach agents from real conversations (not from anecdote), and the click-to-call removed roughly 6 minutes per outbound call cycle. At 30 calls/day × 240 agents, that is 720 agent-hours/week recovered.

    The Pre-Cutover Checklist

    • All 240 users imported with correct branch + role + active project assignments
    • Click-to-call tested across 4 carriers (Jio, Airtel, Vi, BSNL) on agent phones
    • Razorpay payment link → booking → GST invoice round-trip tested for 8 unit price points
    • WhatsApp templates approved with zero rejection notes
    • Lead routing tested at 5x peak (we did 70 leads/min; deployed at 14)
    • Materialised views for agent dashboard refresh every 30 seconds
    • Backup of Postgres taken nightly cross-region (Mumbai → Hyderabad)
    • Audit log captures every record edit with user-id + timestamp + diff
    • RBAC tested — agent at branch A cannot see branch B's leads (we did red-team this)
    • Roll-back plan: feature flag falls back to Zoho for an emergency 7-day window

    What We Deliberately Did Not Build

    1. Marketing automation (drip campaigns, lead nurture flows). The firm uses Mailmodo for this. We integrated Mailmodo via webhook. Building it inside the CRM would have added 3 months — for a feature that worked fine outside the CRM.

    2. Customer success platform (Gainsight equivalent). Real estate is a transactional one-shot purchase, not a SaaS subscription. The owner did not need NPS tracking, health scores, or retention dashboards. We pushed back hard on this in week 1; he agreed within 30 minutes once we showed him the use-case mismatch.

    3. AI-driven lead scoring. We considered it. The senior agents' instincts are genuinely better than any model we could train on 14 months of historical data. v3 candidate, post-2027.

    4. Multi-currency / international. The firm sells to Indian buyers in INR. NRI resale comes through their dedicated NRI agents who use a separate workflow. We did not bloat the schema for a future use case.

    Common Mistakes (When You Build Custom Real-Estate CRM)

    Symptom: "Agents bypass the CRM and use their personal WhatsApp for customer comms." Cause: the CRM-to-WhatsApp pipeline has friction or fails silently. Fix: ship a "open WhatsApp from CRM" button that opens WhatsApp Web with the customer's number pre-filled, with a JS-injected event that logs the open back to the CRM. Catches 78% of bypass attempts.

    Symptom: "Sales managers complain that 'real conversion' looks worse on the new CRM." Cause: better data integrity exposes leads that agents would have manually marked "lost" to inflate active pipeline. Fix: hold a 1-day workshop with managers on the new metrics. Show them that their pipeline count was previously inflated.

    Symptom: "Lead routing assigns to agents who are on leave." Cause: leave-tracking lives in the HR system, not the CRM. Fix: nightly sync from the HR system. Lead routing skips agents with active leave records.

    Symptom: "Booking deposit Razorpay link expires before customer pays." Cause: default Razorpay link TTL is too short. Fix: extend to 7 days for booking deposits; add a "regenerate link" button on the booking record.

    Symptom: "Call recordings missing for 4-12% of calls." Cause: customer (or sometimes agent) declines recording consent prompt. Fix: log the consent decline as a separate event so the manager knows the call happened but was not recorded. Compliant + auditable.

    A Detail That Surprised The Owner

    In month 3 post-launch, the senior sales manager noticed that a particular agent was closing 31% above team average on similar leads. Pulled the call transcripts (Whisper made this trivially searchable). Found the agent had a specific 4-question discovery script she always used — "how soon do you need to move," "is this a single-name or joint purchase," "have you visited the project," "what is your monthly EMI tolerance." The other agents skipped these and went straight to project pitch. Sales manager rolled out the 4-question script as a team training module. Team conversion lifted by 14% in 6 weeks.

    The owner's exact words at the next quarterly review: "I would have paid for the whole build for that one finding alone."

    Where Real-Estate CRM Fits In Our Wider Work

    We have shipped variants for:

  • A 14-branch diagnostics chain — see our March 2026 architecture writeup.
  • A 400-person manufacturer — see the HRMS build vs Zoho People comparison.
  • An NBFC mobile loan origination app shipping later this year — see our DPDP-from-day-1 build writeup.
  • For founder-essay context on why we keep saying no to off-the-shelf, see viveksinra.com — we have published several pieces on the build-vs-buy framework.

    FAQ

    What if I am only at 80 agents — is custom still the right call?

    The break-even has shifted to roughly 80 agents in 2025. Below 80, Zoho CRM Plus or HubSpot is genuinely the right call. Between 80 and 200, it depends on how complex your sales motion is. Above 200 with a sales-heavy team, custom wins.

    Can the same CRM handle commercial real estate?

    The schema accommodates it. Commercial deals have longer cycles, more stakeholders, and lease-vs-sale variations we did not need. We could extend the schema for commercial in 4-6 weeks, but the workflows differ enough that we recommend a separate build.

    What about the developer-side workflow (allocations, escrow, RERA filings)?

    Out of scope for this build. The firm's developer relationships are managed via Excel + email currently. We pitched a v2 that integrates allocation tracking and RERA reporting — not yet greenlit.

    How does Salesforce's AI capability (Einstein) compare?

    Einstein is genuinely good at lead scoring and predictive analytics — IF you have 12+ months of clean training data. Most Indian real-estate firms do not. We can integrate Claude Sonnet via API for scoring; it is strictly cheaper than the Einstein add-on.

    What is the ongoing engineering retainer?

    8 hours/week of dedicated developer time + 4 hours/week of project lead. Covers feature requests, bug fixes, and occasional infrastructure tuning.

    Can the firm self-host this if they want to stop paying us?

    Yes. We ship the codebase + deployment scripts. The Aurora Postgres dump is portable. Migration to in-house team would take roughly 4 weeks of knowledge transfer. We have done this for 2 prior clients without drama.

    Did you consider HubSpot Sales Hub Enterprise?

    Yes. HubSpot's enterprise tier in 2025 is actually higher than Salesforce per-user. The reason is HubSpot bundles marketing/CMS features the client did not need. Same TCO problem.

    Is the call recording compliant with the DPDP Act?

    We capture explicit consent on every call (the auto-prompt at start). Recordings are stored in India-region S3 with 90-day default retention, extendable per-deal for legal-hold cases. The consent log is immutable. Audit-ready.

    Need a custom CRM for a sales-heavy team?

    We build custom CRMs for Indian sales-heavy operations — real estate, financial services, B2B sales, education enrollment. Typical project: 12–18 weeks, fixed scope. The first call is a build-vs-buy honesty session — we will tell you whether custom is genuinely the right call for your team size and motion.

    Book a Build-vs-Buy Call

    Tags:
    Custom CRMReal EstateSalesforce AlternativeBuild vs BuyCase StudyTwilioRazorpay
    Share this post:
    Vivek Kumar

    Vivek Kumar

    Founder and CEO at Softechinfra with 10+ years of experience in software development and system architecture.