How we built a phone system to connect our customers with our staff seamlessly

Liv Denyer explains how and why we built a phone system from scratch.

5 February 2020

We’ve all got horror stories about terrible customer service we’ve received. How many times have you spent ages waiting to get through to someone, only to get through to the wrong person? Or had to chase up a company relentlessly to get your problem resolved? We’re of the opinion that a lot of businesses get this wrong. And we want iwoca to be better.

So a little over two years ago, we formed a tech team dedicated to improving the ways in which we connect with our customers. Our goal has been to ensure our customer facing teams can take iwoca’s growth in their stride - without sacrificing the relationship we have with our customers.

We weren’t happy with our phone system

We’d been using an external service for a while, but it wasn’t quite doing everything we wanted. It was difficult to use and maintain and impossible to get any meaningful data about our calls. So we decided to change it.

We came up with some key requirements for a new phone system:

  • When you call, the person you want to speak to picks up - without you waiting half an hour
  • They know who you are, and they know about your business
  • They’re not going to have to transfer you to someone else to handle your query

Not only would this improve the customer’s experience, but it would also make a lot of the Customer Success team’s job easier and more efficient. We wouldn’t need to spend time redirecting calls or ask a load of questions to find a customer’s account, so we’d help more customers and faster.

We started looking for external solutions, but without much luck

Our crack team of telecoms experts (I worked in a call centre for a few months, and our lead developer calls his mother every week) set out to find a solution. We were hoping for a service we could buy and easily integrate with our internal systems - to be able to understand who we should route a call to, it was clear we needed to be able to figure out which of our customers was calling.

Every time we looked at an external solution, we came across the same problem: they weren’t built with the customer in mind. All of them were built to allow a call centre to handle a huge amount of traffic in an efficient way - at the customer’s expense. Think built in call queues and robots answering the phone and asking you to figure out who you need to speak to by pressing some buttons.

But we didn’t want to introduce call queues. Or let customers get stuck talking to a robot who doesn’t understand them. We wanted to make sure they got through to a real human who can help them, in 30 seconds.

Looking for straightforward explanations about the world of business finance?

So we decided to build one ourselves

We opted to use Twilio’s API, whose online documentation helped end nightmares of poor phone systems with massive price tags. It took nine months of building, testing, and evolving until we were able to roll out something that would handle our inbound calls. To do this, we built:

  • a new high availability AsyncIO web server, named after Hermes, to handle all of our communication with Twilio,
  • a chrome extension that interacts with our CRM and uses the Twilio Client to handle calls, and
  • new endpoints in our main django servers to provide phone number lookups and call routing instructions.

Now when you call iwoca, the following happens:

  1. Twilio sends a request to our dedicated phone system web server, Hermes
  2. Hermes responds with instructions to place the call into a conference
  3. Hermes makes a request to our main Django platform, providing the caller id from the inbound call as well as the number the customer dialled
  4. We try to match the phone number to an existing customer, and, using our proprietary AI system, we decide where to route the call based on what we know about them - so customers always get through to the person best placed to help them.
  5. Django sends all of this back to Hermes, which starts sending websockets to our Customer Success Team’s chrome extensions, and triggers a browser notification informing them of who is calling.
  6. If the call doesn’t get answered right away, we progressively alert more staff members about the call to ensure that someone gets to the phone in time
  7. When somebody answers, we send a request back to Hermes, which instructs Twilio to add the staff member to the conference the customer is in
  8. This is automatically answered by the Twilio client in the chrome extension, and we open the customer’s profile page for the staff member so they immediately have their details in front of them.
  9. And then a conversation starts.

We’re really proud of what we’ve built: we now have a phone system that provides the customer experience we dreamed of. Without any robots.

words by <span>{authorName}</span>

Liv’s a Senior Product Manager at iwoca, working on iwocaPay, our new invoice finance product. Before that, she led the team that built iwoca's CRM system from scratch. If she gets a break from all of that, Liv moonlights as iwoca’s Poet Laureate, or you might find her rock climbing in south London.

Article updated on: 20 February 2020

Want to know more?

Get a regular dose of the best small business finance news, stories and curated articles sent direct to your inbox. Sign up for our newsletter. No spam just inspo.