Every call, written.

A call ends. Somebody meant to write it up. Nobody did. callintel reads the finished call off your 3CX and writes the record for them.

Ask for a pilot
  • Works from 3CX Pro upwards
  • No change to a dial plan
  • Nothing in the media path
Inbound call from Jane Wanjiku, 5m 39sCall

Prospect queried renewal pricing and asked for it in writing.

Caller
Jane Wanjiku, Finance Manager at Riverside Dental
Discussed
3CX annual renewal, 8 simultaneous calls
Objection
Thinks the renewal is dearer than last year
Price quoted
KES 48,000
Commitment
Agent will send a written quote
Next action
Send renewal quote (by 9 October)
Sentiment
neutral

Written from 3CX call rec:4821.

Matched an existing contact on +254 722 000 111.

From hangup to record

Three things happen after the caller hangs up. None of them can reach the call itself, because by then there is no call to reach.

First, the PBX hands over the call it just finished.

POST /api/3cx/journal

callType Inbound
number +254722000111
agent 102
duration 00:05:39
recordingUrl /media/4821.wav
transcription (empty on this licence)

Nothing here touches a live call. Every step happens after the caller has hung up, so the worst thing this can do is write a note late.

Then it works out whose record this is.

the PBX sent +254722000111
your CRM holds 0722 000 111
verdict one person, one record

A number nobody has becomes a new lead. It is never attached to the nearest similar record, because a call filed against the wrong customer is worse than a duplicate.

And a week of them reads as one thing.

Sales desk, week to 12 OctoberAcross 84 calls
Objections raised
Renewal price, 31. Handset supply, 12. Contract length, 7
Promised and not yet done
9 quotes committed to, 4 past the date given
Calls from numbers nobody held
23, every one now a lead
Sentiment
Negative on 11, all of them about renewal price

No tier of 3CX produces this. It scores one recording at a time and adds nothing up.

One person, two records

Your agent types a number the way anyone in Nairobi writes it. The PBX sends it the way the network does. Nothing in an ordinary CRM reconciles the two, so one customer quietly becomes several, and the call history you wanted to read is split across all of them.

0722 000 111
What your agent typed
+254 722 000 111
What the PBX sent

callintel treats these as one person, and these too:

254722000111Country code, no plus
0722000111Trunk zero, no spaces
722000111Subscriber number alone
(0722) 000-111However somebody typed it

It is the least glamorous thing here and the one that decides whether anybody trusts the rest.

When itbreaks

An operations company judges a system on its failure modes, not its happy path. So here they are. Each line has a test behind it.

The caller withheld their number
Queued for a person
not retried
The review queue
Extraction is unsure of a field
Queued rather than written. Nothing plausible is invented
not retried
The review queue
A price was quoted with no currency
Queued, whatever the confidence says
not retried
The review queue
The PBX kept no recording
Still written, with what the PBX knew
not retried
The rep, on the contact
The recording is silence
Written as a call, not as a conversation
not retried
The rep, on the contact
The transcription engine is down
Failed and retried. Nothing is written half way
retried
Nobody. It resolves itself
Your CRM is unreachable
Queued, and drains when it returns
retried
Nobody. It resolves itself
A write is delivered twice
Updates the same activity, keyed on the call
cannot repeat
Nobody. It cannot duplicate

Where a person still decides

Anything the system is unsure of stops before the CRM and waits. This is the queue a supervisor works, and it is usually short.

Inbound call from +254 788 310 442, 3m 12sWaiting
Held back because
A price was quoted, and no currency came with it
Heard as
“we can do forty eight for the year”
Written if approved
Price quoted: 48,000, currency to confirm

A money figure without its currency misleads whoever reads it next, so it never goes in on a guess.

3CX Admin Console Integrations > CRM

template callintel.3cx.xml
scenario ReportCall
fires when a call ends
installs in about five minutes

Answers

Which 3CX licences does it work with?

It reads calls through 3CX's own CRM integration, which is included from the Pro tier. It does not need the Configuration API, which sits on Enterprise and AI Edition and is out of reach for most installed systems.

Where a system already transcribes its own calls, callintel uses that text and skips its engine, so those customers cost less to run.

Does it sit in the middle of our calls?

No, and it is built so that it cannot. It reads a call only once the call has ended. There is no session border controller, no change to a dial plan, nothing in the media path. If every part of it stopped at once, your phones would not notice.

Where does the audio go?

Where a call needs transcribing, the audio is sent to ElevenLabs, which runs in the United States. That is worth knowing before you put this in front of a bank.

The engine sits behind an interface with one job, so a self-hosted one can replace it for a customer whose data has to stay in the country. We keep the transcript and never keep the recording.

What happens to a call it cannot read?

It still gets written. A missed call from a number nobody has is the single most valuable thing this system sees, and it is recorded as a missed call rather than dressed up as a conversation.

Will it put things in our CRM that are not true?

It leaves a field blank rather than filling it. A model that answers “unknown” or “not applicable” writes nothing at all, and anything it is unsure of waits for a person instead of reaching the record.

A confidently wrong fact about a customer is worse than a blank field, because nobody downstream can tell that it is wrong.

Which CRM does it write to?

The adapter is deliberately thin, and the rest of the system does not know which CRM is on the other side of it. Adding one is a small piece of work rather than a rebuild.

Every call, written.

A pilot runs on one customer's system, on the licence they already hold. Tell us which 3CX to point it at and what their CRM is.

Talk to us about a pilot

simon@velocitystack.xyz