Laveeka / Guides / Joining your systems

Joining your CRM, phone system and meeting notes: the part that actually breaks

This is the work nobody demonstrates, because it is not impressive to look at and it is where the project is won or lost.

The short answer

Connecting the systems is the easy half. The hard half is deciding that a call from a mobile number, a name in a meeting transcript and a record in your CRM are the same person, and knowing how confident you are each time.

Get that wrong and every number downstream is wrong in a way that looks plausible. Most of the real engineering in an intelligence layer goes here.

Why the integration is not the problem

Every system you want to join has an interface. Reading from them is a solved, dull problem. What is not solved is that the same human being appears in each one differently: as a record with an email in the CRM, as a display name in a meeting transcript, and in the phone system as a number and nothing else.

Until you can say those three are one person, you cannot answer the question anyone actually wants answered, which is what happened with this client and who did it.

What each feed really carries

FeedWhat it gives youWhat it does not
CRMNames, emails, phone numbers, company, historyNothing much. This is the richest of the three and it should be the spine
Meeting notesDisplay names, work emails, a start time, an organiserUsually no phone number at all, and often only the organiser is named
Phone systemA number, an extension, a timestamp, a durationFrequently nothing else. No name, no company, no context

Ask for ten real records from each before anyone designs anything. Ten actual rows tell you more than an hour of description, and they will occasionally tell you the project as described is not possible.

The join, in the order to attempt it

  1. A shared identifier, if one already exists. Ask first, because if any system already carries a common key the hardest problem does not exist. It usually does not.
  2. Normalise everything. Phone numbers to a single international format including the ones typed with spaces, emails lower cased and trimmed, names stripped of titles. This unglamorous step recovers most of the failures.
  3. Match on the normalised number or email. This is the realistic main path, and it works well once the step above has been done properly.
  4. Fall back to name inside a time window. Same name, same company, an event within minutes. This needs an agreed confidence threshold and it should be marked as a weaker match forever after.
  5. Send the rest to a person. Anything matching none of the above waits in a queue. It is never guessed.

The three decisions that matter

Record how the match was made, not just that it was

Every joined row should carry which tier matched it. That single field is what lets you later exclude weak matches from anything important, without unpicking the whole pipeline. Systems that throw the confidence away cannot be repaired later, they can only be rebuilt.

Never guess an unmatched record

A queue of unmatched rows looks like overhead until the first time a call is attributed to the wrong consultant in front of the person who took it. Decide in advance what happens to them, and put it in writing.

Watch the queue, not just the dashboard

An unmatched queue that grows week on week is the earliest signal that a feed has changed format. It will tell you before the numbers look wrong, which is the only useful time to find out.

Consent, before engineering

If calls are recorded and transcribed, the basis on which that happens is a legal question, not a technical one, and it can stop a project outright. Ask it in week one rather than at go live. Nobody has ever been pleased to discover this in month three.

What good looks like when it is finished

None of that is visible in a demonstration. All of it is the difference between a system people trust in year two and one they quietly stop opening.