There's a lot to do in this space.

As a former CTO, almost every product I worked on had a request coming in at some point to create an internal CRM and I do believe in embedded CRMs as a software category.

There are even SaaS categories that could use some CRM-like ability (e.g. link building tools, procurement tools, debt collection, ...)

Open-source would be a good fit for that model cause you could take it in-house if you need a lot of customizations.

Some painful CRM issues I encountered:

- Pregnant funnels

when sales sets up the funnel stages in a way that leads can go back through the stages (e.g. "next meeting scheduled", "follow-up" or "offer sent") so a deal passes through the same funnel steps several times.

Not sure there is much you can do about that except for dynamically creating more stages in the funnel

- Last-stage-changed-at

Another issue is that CRMs don't keep event logs of what actually happened and just keep the last stage and when you changed that stage; this makes it impossible to analyze stage-durations and correct for cyclical stage switching (see pregnant funnel problem)

- Call quality

You would think that in 2023 voice-over-IP would be super reliable and works every time but I can guarantee you that in a 30 people sales team you will have many! complaints about call quality if you only rely on VOIP.

Always have the ability to call the salespersons' real phone number (over the traditional telco network) and then call the client once the sales person is connected. (a sort of conference call).

This kills all call quality issues as there is a fallback to dedicated phone networks.

- Call activity recording

Call activity recording is actually very important because apart from pipeline reviews, tracking sales call activity is one of the only leading predictors of sales success (it also catches lazy sales ppl).

Related to the above, some CRM's are able to record the calls with VoiP but fail to do so when real phone networks are involved.

- Cell phone masking

When using CRM calls, in hubspot and zendesk you can spoof the phone number; this is typically set to the salespersons' cell phone so the client can call back but when the client calls back the call goes unrecorded.

- Lack of IVR menus

IVR is a part of every PBX setup but they almost never play nice with CRMs; only Aircall integrates IVR menus but it relies only on VoiP and was a huge nightmare (see call quality issues).

- Treating leads and deals as separate records

It's surprisingly hard to build funnels that go from "this person filled in this field and has these UTMs parameters" to "which UTM parameter made actual money because almost all CRMs have a dual LEAD/DEAL record.

They typically destroy the lead and it becomes a contact which often has no stages anymore.

Nobody in Sales and marketing thinks about it that way though, it's more "here's a lead and then the lead progressively discloses more information"

I always think the best datamodel for a CRM is an event-sourced log with a giant json blob representing the latest stage that can be rebuilt from the event-source log.

- Outbound email chains

Most CRMs use their own email address and the main company domain to chase prospects (and setup automated email chains), which as you can expect sometimes get spam-listed; the ability to email through a separate domain and to capture replies properly is needed.

My current solution is to just ban the use of automated email chains but I've seen other companies use mailgun to create a proxied salesperson' inbox.

- Closing the loop with marketing

Google analytics and facebook has tags you can use to indicate the actual deal value of the generated lead.
You can say this click led to 1k in revenue; except it's a huge pain in the ass to do this because of the lead/deal breakup and often the original contact details change as the sales person gains more trust.

Another option would be to export events to analytics tools like Amplitude so you can get a complete marketing-product-sales funnel