CRM implementations
the portal
On a customer portal that thinks along with the service van, and why good CX is mostly invisible logistics
One service van. Three driving days a week. Hundreds of maintenance customers, spread across five regions.
That’s what I was working with. A company that does air conditioning and heat pumps, running the one van. And what they wanted was fair enough: let customers pick their own maintenance slot. Phone rings less that way. Less admin piling up around it.
Thing is, free choice and an efficient route fight each other. Let everyone grab whatever they like, and the van’s crisscrossing all over the place. Lock the route down, and the customer’s waiting weeks for a date that suits the company. That’s the puzzle I built something for.
And let me tell you how this started, because that says more than the solution does. I saw this company was doing a huge amount of maintenance. Something like 700 running maintenance contracts, that they had to schedule once or twice a year. And customers only paid once the maintenance was done, so the company had to go chase those people themselves just to get it on the calendar at all. All of it over the phone and by email. So I said: guys, do you get calls for breakdowns too? Sure they did. And I said, well, isn’t it smart to just set up a customer area then? Somewhere customers log in, see their details, report a breakdown themselves, ask a question, request or schedule their maintenance contract. People often like managing their own stuff, and there’s a bit of upsell sitting right in it too.
the dead database
First, the pattern I run into everywhere, because honestly this is the most underrated problem in CRM land. Look, the CRM’s there alright. It’s just an archive. A customer fills in a form, that becomes a little row in a system, and then the real work starts. Someone at the office reads the row, picks up the phone, checks a map, starts shuffling appointments and just hoping the puzzle fits. The software records, the human plans. Done.
And that feels normal, because everywhere it goes like that. But it does mean the most expensive knowledge in the whole company, namely where that van drives and when, just sits in one planner’s head. Every appointment by hand. A busy week’s a jigsaw. And the customer? They notice none of it, except that they’re waiting ages for a date.
the customer does it himself
So we flipped the whole thing round, and the customer became the one who sets it off. Take a service contract. It used to be: they call, or the office calls them, and then it’s back and forth. Now the customer just requests one in the portal. And requesting a contract got so much easier that the requests went up 15 percent. Now, I’ll be honest, we rolled this out in the summer high season for that customer, so some of that’s the season. But a good chunk of it is simply that it’s easier now, and that the upsell to a contract sits right there in the flow.
And creating that contract isn’t manual anymore either. Request one, and you automatically get a quote, based on a couple of questions the portal already asked you. Plain questions that have plain answers, and there aren’t a lot of variations to the answers. That’s perfect. We’d have asked those exact questions anyway, so why make a human do it. The customer gets the quote, accepts it, and there’s the service contract. And then they can plan a service moment straight away.
It’s all automated now, and every action is triggered by the customer himself. Which, funny enough, is exactly what lifts the satisfaction: they get the quote and the pricing instantly. A five-minute thing, instead of waiting a day for someone to get back to you.
let the system think along
Now the planning underneath it. The customer picks a date, and the system quietly thinks along at that moment. That’s all it is.
We do the maintenance per region. So if you’re in a given region, you can only book within a couple of months. And then the system looks: what’s already in? Are there appointments sitting nicely on the route? Then it pushes the times that fit those up top. The customer just sees a list and grabs one that suits them. What they don’t clock is that the order of that list is being steered by the van’s route. So the best moment gets quietly instigated for us by the logic, and the appointments clump together into runs that make sense, all on their own.
And there are guardrails around it, of course. A customer gets three tries. Each try prompts a new proposal with three new times and days, suiting our efficiency, but also just giving the customer options. Deny all three, so all nine, and the system automatically makes a service ticket and we contact them ourselves. That last bit’s a manual process. And honestly we haven’t seen it happen yet, because in practice a customer just picks one of the nine. But sure, there’s the odd harder customer, less time, works at odd hours, who needs more manual labour, and that’s fine. We’ve got that mapped too. Because you don’t want to fully automate these kinds of things. Do that, and the customer satisfaction just drops.
Oh, and the portal does more than scheduling. A breakdown with a photo becomes a ticket on the right customer straight away. A booking lands on the maintenance board. Everything just drops into the right spot in the existing CRM, nobody retyping a thing. Sounds like a detail. But this is exactly where most of these portals fall over: a tidy little form on the front, and behind it someone’s still keying it all in by hand.
built lean
There’s another principle under it I really care about: that daily flow can’t cost money. The obvious route was a routing API from one of the big providers. Works fine, sure. Only then you’re paying per call, every single day, for something that’s basically just a distance question. So we did it differently. A free Dutch address service, and our own distance logic on top of that. Zero API costs in the daily flow.
And we didn’t have to replace a thing. The company keeps its CRM, its boards, its way of working. We laid a thin layer of intelligence and a customer portal over the top. For a small business, that’s the difference between a project of a few weeks and a migration that eats a year.
And let me be straight about where it stops, because I’m not going to dress it up. This isn’t real route optimization, mind. The system just makes a suggestion, based on the distance to what’s already booked. And if the customer wants to ignore it and pick a day the van’s on the other side of the region anyway? Fine. Happens too. A perfect route was never the goal. The goal was that an average week clumps together a bit better on its own than when someone’s laying it out by hand.
the logistics you don’t see
Here’s what stayed with me once it went live. We only got good reactions from the customers. And the planning employee and the operational manager over there were really fond of one thing especially: that not every channel was pushing customers to the phone anymore. They could reach Elite Climate other ways now too. We haven’t exactly measured how many calls came in before and after, mind, we’re not live long enough for that. But that 15 percent more contracts, and the office that’s noticeably calmer, those you feel straight away.
And there, for me, is the whole heart of it. Good customer experience almost never starts at the front. It’s in the logistics you’ve made invisible. That customer’s got no idea there’s distance logic hanging under their date choice. What they experience is something far simpler. A quick appointment, a quote in five minutes, at a moment that suits them, no phone call. And the date sitting at the top that just happened to be the day the van was already near them? Feels like coincidence. It isn’t. It’s designed coincidence. And maybe that’s the fairest measure for a customer portal. Don’t count the features. Count how much work disappears without anyone seeing it disappear.