← All posts

CRM

When the CRM says cold but the contact isn't

Built-in lead scores go stale fast — a custom scoring layer can surface contacts your agents already wrote off.

Every Thursday morning, say a team lead runs a pipeline meeting with eight agents. She pulls up the CRM and filters by lead score. Anything below a threshold gets marked cold, dropped to a low-priority bucket, or quietly removed from the follow-up sequence. This week, 15 contacts make the cut-off.

The problem: the CRM's built-in score was last updated four days ago. Eight of those 15 contacts opened an email, clicked a property link, or replied to a text in the past ten days. One of them called the office and hung up when she got voicemail. The score never moved.

Why built-in lead scores go stale

CRM platforms like kvCORE, Follow Up Boss, and Chime each ship with a scoring model. Those models were designed to work with the signals the platform can see natively — form fills, portal activity, email opens. They were not designed for the mix of channels a modern team actually uses: inbound texts from a separate number, call logs from a dialer that syncs inconsistently, WhatsApp messages handled through a third-party inbox, or notes left by a showing agent inside a transaction tool that never writes back to the CRM.

The result is a score that reflects part of the picture. Contacts who have been quiet on the portal but active through other channels look cold. Contacts who are genuinely cold but opened a nurture email last week look warm. Agents act on the score because they have no better signal, and real opportunities get deprioritized.

What a custom scoring layer does differently

A custom scoring layer sits outside the CRM's native logic. It reads from every channel that touches the contact — CRM activity, call logs, SMS threads, email engagement, and any other connected source — and writes a composite score back to a custom field in the CRM record.

The score recalculates on a schedule (say, every six hours) or on a trigger (the moment a new activity is logged). Agents see a score that is current as of the last sync, not last Tuesday.

The scoring rules themselves are defined by the team, not the platform vendor. A team that does a lot of outbound calling might weight answered calls heavily. A team focused on portal-driven buyers might weight saved searches and repeat listing views. A commercial brokerage might score based on engagement with deal memos or lease inquiry forms rather than residential MLS activity.

This flexibility is the main reason teams build custom extensions rather than wait for the platform to update its algorithm.

What the build actually involves

The work starts with an audit: map every channel that generates contact activity, check which ones write data back to the CRM reliably, and identify the gaps. In a typical setup, two or three channels are syncing fine and two or three are not. That gap list becomes the integration scope.

From there, a scoring script reads from each data source, applies the team's weights, and writes the result to a custom field. For kvCORE, that custom field can be used to trigger smart drip campaigns or sort views. For Follow Up Boss, it surfaces in contact lists and can trigger stage changes.

The script runs on a schedule via a simple automation layer — a tool the team already uses, like Make or n8n — so there is no new infrastructure to maintain. The CRM stays the system of record; the custom field just carries a fresher number.

One principle worth following: audit before building. Before writing a single line of scoring logic, verify that the underlying activity data is actually flowing into the sources you plan to read from. A scoring model built on incomplete data produces confident wrong answers, which is worse than no model at all.

What changes in the Thursday meeting

Back to that team lead. After a custom scoring layer is in place, she filters the same pipeline. The 15 contacts flagged as cold now show a secondary score — the one built on full channel history. Eight of them have scores above the team's engagement threshold. Those eight stay in the active sequence. The other seven get the cold treatment they earned.

Over time, agents stop second-guessing the score because it reflects what they already know anecdotally. The contact who texted last week is not buried under contacts who filled out a form six months ago and never responded since.

The pipeline meeting gets shorter. The "who do I call today" question has a defensible answer.

Where to start

Pull one week of your team's closed transactions and check the contact's lead score at the time of first real engagement — when they first replied to a message or accepted a showing. If the score was low or inconsistent with what the agent remembers, that is the signal that your current scoring model is missing data. That gap analysis is the starting point for building something better.

Want this appliedto your team?Ask us.

Or write to ushello@realestateaigroup.com

Skip the reading — a 30-minute call is enough to tell you what’s realistic.