Projects/AdUnity
AI / CRM✓ Shipped2023

AdUnity

Multi-Tenant CRM & AI Call Analytics Platform

Real-estate CRM: lead tracking, site-visit planning, tenant-scoped workflows
Click-to-call with AI transcription and sentiment analysis via AssemblyAI
Real-time incoming-call alerts and duplicate lead detection
Automated lead-expiry actions to boost agent sales velocity
A
Real Estate CRM
Domain
AssemblyAI
AI
Real-Time
Call Alerts
Automated
Lead Dedup
01

Problem

Real-estate sales teams juggle leads across multiple channels and vendors, and the same prospect frequently gets logged twice by different agents. Meanwhile calls happen and the useful information — what the client actually wants, how the call went — lives only in an agent's memory unless someone manually writes it up. Every tenant (agency/team) needed strict data isolation, since agencies compete with each other on the same platform.

02

Architecture

Tenant-scoped CRM core: leads, site-visit schedules, and team performance analytics are all filtered through a tenant boundary enforced at the query layer. Communication utilities (Aloha, Knowlarity) provide click-to-call directly from a lead record, and every recorded call is sent to AssemblyAI for automated transcription and sentiment analysis, turning a phone call into searchable, structured data attached to the lead. Incoming calls trigger real-time alerts to the owning agent over Socket.IO so a call is never missed while it's happening. A duplicate-detection pass runs against new leads on ingestion — matching on phone/contact signals — to stop the same prospect from being worked twice, and a lead-expiry job automatically escalates or closes leads that go stale past a configurable window.

03

Trade-offs

Running sentiment analysis and transcription on every call adds cost and latency versus only transcribing on-demand, but on-demand meant most calls never got transcribed at all because agents rarely went back to request it — defaulting to always-on made the data actually useful. Duplicate detection is a precision/recall tradeoff: too aggressive and it merges genuinely distinct prospects, too lenient and duplicates slip through — we tuned matching to favor fewer false merges since incorrectly merging two leads is harder to undo than missing a duplicate.

04

Tech Stack

ReactNode.jsMySQLSocket.ioAssemblyAIKnowlarityAloha