This is the work nobody demonstrates, because it is not impressive to look at and it is where the project is won or lost.
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.
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.
| Feed | What it gives you | What it does not |
|---|---|---|
| CRM | Names, emails, phone numbers, company, history | Nothing much. This is the richest of the three and it should be the spine |
| Meeting notes | Display names, work emails, a start time, an organiser | Usually no phone number at all, and often only the organiser is named |
| Phone system | A number, an extension, a timestamp, a duration | Frequently 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.
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.
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.
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.
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.
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.