I’m working on a conceptual call center management application based on my call center experience. I’ve used all of the applications, and I’m very aware of the flaws of the call center world. There are so many things we can do to improve the flow, yet none of them are done. This is extremely prevalent in outsourced call centers and typically, cannot be solved by the client, but there are still things that can be done to improve flow.
First of all, they should start using web technologies, not remote desktop. The majority of call centers I’ve worked at use remote desktop to access our call center apps. There are MANY problems with this from a user interface perspective:
- Some systems will run at full speed, some will run quite slowly – if at all sometimes! (as they are remote desktop and rely on the network)
- There’s no integration between the applications.
- Some call center positions that I’ve had have required us to open a total of 14 different applications (!) before we even started working!
- Adding more features or adding another workflow typically means adding another program. (Or 5…)
Employees hate the fact that they have to start work 15 minutes before they get paid to get these systems up. IT hates having a thousand programs and systems to support, and training makes new agents cry.
Why in the hell do we still have these problems? I mean, really. With the advent of RIAs, these applications should be easily built into a single front-end – even if they have 25 back-ends. What’s more is they can be completely and entirely web-based – no more need to open 14 different programs and windows.
This was one of my (typical) call center BOD (beginning of day) experiences:
- Sign into my computer.
- When I log in, a window pops up with my pre-shift report (that is ran by an entirely different part of production – so my supervisor can’t add any notes)
- Start up my phone system. (but not log in)
- Start up my timekeeping system, log in, and then check my hours from the previous day to confirm they’re accurate.
- There is a problem with it. I write on a peice of paper which day is wrong, and I walk up to my supervisors desk. She’s not in yet, so I grab a paper out of our printer bin and write a note explaining the situation. This takes me about 5 minutes. Once I find the materials to write it with and get the note done, halfway back to my seat, my supervisor comes to her desk and sees the note. She puts it on a random stack of papers to do for the day, and will probably forget about it. I’ll have to remember to remind her to look into it later – and I’ll probably forget. I have no way of keeping track of my tasks…
- Start up my information system. (internet explorer for the win!)
- First, the corporate intranet (just in case there’s company news)
- … and then the corporate information system. (The one I get my answers from)
- I also pull up my troubleshooting tool (yes, this was a seperate application)
- Finally, I pull up my follow-up tool (in case I need to send anything to my supervisor – because I don’t get e-mail. Security reasons I guess. This is just a regular HTML form that’s e-mailed directly to my supervisor.)
- … and a few more browsers aimed at the corporate information system on the charts that I use on a daily basis. Probably 3 or 4 of these.
- Start up my internal instant messenger program, and log in.
- IF WE EVEN HAVE ONE – some call centers require agents to walk up to their supervisor to get help – or even worse, put up their hands (or flags) and hope that someone comes over to help them. Seriously, what idiot thought of this system? It gets even worse. If there’s no supervisor available in my section, I have to wait for a supervisor to become available. Even if there’s 9 supervisors on the other side of the call center, they are not allowed to answer my question or take my escalation.
- The excuse for this is that it “creates a bond with the team” – my ass! My job is to please my customer, not bond with my team. I am a customer service agent, not a team service agent.
- Sorry, that’s been bothering me since 2005. Whew. Felt good to get out.
- The excuse for this is that it “creates a bond with the team” – my ass! My job is to please my customer, not bond with my team. I am a customer service agent, not a team service agent.
- IF WE EVEN HAVE ONE – some call centers require agents to walk up to their supervisor to get help – or even worse, put up their hands (or flags) and hope that someone comes over to help them. Seriously, what idiot thought of this system? It gets even worse. If there’s no supervisor available in my section, I have to wait for a supervisor to become available. Even if there’s 9 supervisors on the other side of the call center, they are not allowed to answer my question or take my escalation.
- Start up my note taking tool (typically notepad or an ‘enhanced’ notepad with templates for notes, half that I would never use, and not customizable at all)
- I then go back to my pre-shift (sometimes) and read everything, if I have time. If I don’t have time, not that big of a deal to me.
Keep in mind that all of this is when I walk in the door, before I even start working. I’m not paid for any of this, may I remind you, so as soon as I come on the floor as a new agent, I’m already pretty frustrated that I have to work without getting paid – which I don’t mind when I’m training because typically I go in early to make sure that everything is all ready to go anyways, but once I’m out of training, you better as hell be paying me for opening YOUR programs. (FYI, Operations: That’s called a morale issue if you weren’t aware.)
My workflow per call:
- I receive a phone call.
- My soft phone (which is absurdly large and takes up a good chunk of my screen) lights up and I’m immediately connected to the caller.
- If they’ve entered their phone number or account number, I can open the soft phone, copy the information from it and paste it directly into the account management system. It’s never formatted correctly, so I have to remove the dashes from the number before I can paste it. Quite annoying.
- By the time I’m done this, when I get used to the job, the customer is already half-way done telling me what the problem is. If I’m not used to the job, the customer is going to be waiting 20-25 seconds while I manually enter the number. Ouch.
- There’s an update, and I receive a clipboard that is randomly getting passed around my team with an urgent update. I read it and forget to pass it on because I’m on a call… for an hour and a half.
- I need help – the bill doesn’t make sense to me. One of two things happen:
- I message my supervsior on my IM. I explain the problem, and they ask for the account number. Typically, the supervisor’s system has timed out, so he needs to log back into it. It takes several minutes to re-establish the connection with the remote host. He looks up the information, and says he has solved the problem. Oops – copy and paste is blocked on IM, so he has to get up, come to my desk, and walk me through the information to the correct page.
- I put up my flag or raise my hand, hoping someone will come over to help me. It can take between 30 seconds and an hour to receive an answer. The customer is on hold, and will stay on hold after the 5th time that I’ve come back on the line saying I’m still looking into the information. (It’s policy – you can only put a customer on hold for 2 minutes, and then, you have to go back to them.) The customer already told me to stop coming back to her and stop telling her I’ll be right back – and now she can sit and wait for 15 minutes until I’m yelled at for having a customer on hold for too long. The person that yells at me will refuse to answer the question, and I’ll go back to my customer and piss them off again, saying it’ll only be a few minutes. I’ll probably make up a stupid excuse like my information system is running slowly and I’ve escalated the issue to my supervisor, and I’m just waiting for a response – make it sound like I actually give a crap, you know, that kind of thing. <– Seriously, this has happened to me on multiple occasions.
- I finally get my answer, and I continue with the call.
- Suddenly, the call drops, and I hear another beep in my ear – I forgot to hit aftercall, and I haven’t even written up any notes for my call! We’re not in queue, so this throws me off – There’s no visual notice, no popup that the call was disconnected, no flashing, nothing to get my attention – just the beep in my ear of my next call. In fact, I’ve actually been sitting at my desk for 3 minutes without a caller at this point. Had I known this 3 minutes ago, I could have hit aftercall.
- I immediately hit aftercall to prevent this from happening again.
- I quickly minimize what I was doing, open a new notepad and start with all of the other customers information minimized – hopefully I won’t close it!
- This person wants a routine change done, so I’m able to complete it in a few minutes (fortunately) – I leave my note and return to the other account.
- I write up my note on the first account, and close the account.
- I’m not sure where the person was calling from because my soft phone doesn’t keep a log.
- Some call centers won’t allow you to call the customer back. I’ve heard many excuses from call centers about why we shouldn’t, and it’s all crap. Typically this is only an issue with outsourced call centers. What it comes down to, is that the client is only willing to pay for inbound calls, not outbound calls – so we don’t make any money. Yes, we certainly do specialize in customer service!
- I really liked the one where outbound calls were ‘long distance’ calls when made from our hard phone – even I believed this one, until I started working with VOIP as a web applications developer. Now I realize that the hard phones had ethernet cords in the back – they were SIP phones. Bastards!
- Sorry… Another rant… 4 years man, 4 years…
- I really liked the one where outbound calls were ‘long distance’ calls when made from our hard phone – even I believed this one, until I started working with VOIP as a web applications developer. Now I realize that the hard phones had ethernet cords in the back – they were SIP phones. Bastards!
- I’ll never (no, never say never – it’s highly unlikely) talk to this customer again. Typically, agents do not have an extension, so they can’t transfer a customer to me. All that research I did? Yeah, totally gone. The new agent has to start from scratch – unless I’m nice enough to put it in my notes. But even then, the new agent probably won’t follow what I put in my notes – they are held responsible for everything they say to the customer, and what if I’m wrong?
- I get another caller. I same flow as above, but this seems to be a bit fraudulant. They claim to be an agent from the ‘financing’ department and they want a special arrangement. I have no way of looking up agent codes, so I have to make a judgement call on whether this is a legit call or not. For me, if the agent is wrong, this could be an opportunity to uptrain a newer agent and advise them of what the specific policy is – or, provide internal secrets to a customer fraudulantly pretending to be in one of our departments.
- Many call center staff are told that if the person claims to work for the company and they sound legit, then they have full authorization on the account as if they were sitting at the computer. As an example, if I transfer a customer from tech support to care and say that they’re fully verified on the account, the agent has to accept that and will be penalized by asking the customer for further information. What kind of security is that?
- I decide that the agent is a fraudster and immediately become defensive. They end up escalating and my supervisor comes to my seat and takes the call. They determine that the person is indeed an agent, and now he’s a frustrated one. I get in trouble.
In the above flows, you can see that there are a lot of problems and gaps that technology can cure. In fact, the MAJORITY of the issues can be cured by integrating all of these technologies into a single front-end.
First of all, there are many different solutions to this problem. My solution would be to combine all of the technologies of every system into one – make it a web application, so no software is required on the machine (or very minimal software) and network connections aren’t bogged down nearly as much because of the remote desktops. This would boost productivity and network stability.
Many people say this would be impossible – there are too many different tasks that this application would have to perform, and HTML just can’t handle it. Java is horrible inside a browser, and it’s really the only thing that can do something like this.
They’re wrong. Very wrong.
Adobe Flex gives us the power to do this. The front-end is completely seperate from the back-end, giving us an MVC system – because that front-end can communicate with multiple end-points, we can use multiple servers to use multiple services – so the databases can be left alone. We just need to create a wrapper that allows the Flex application to access the database and to handle all of the external security features.
AS3 is a fully functional programming language that can build applications equally powerful as Java – in a way. Flex applications are meant to be user interfaces for a much more complex application that is deployed on the server. The server technology (whether it be PHP, J2EE, Ruby, etc) is the ‘controller’ – the part that does the work. Flex just displays it, and looks damn sexy while it does.
Flex goes further than that. It’s a completely programmable web-based interface – consider the idea of having an application as powerful as Microsoft Office, except it runs right in your browser. That’s the power of Flex.
Now let’s take that typical experience I had earlier and put a Flex spin on it:
- I sign into my computer.
- When I log in, internet explorer pops up with my workflow system. It immediately asks me to log in, and gives me the option to go live immediately or stay in ‘unbillable’ mode. I choose to stay in unbillable mode, because I still have 5 minutes until the beginning of my shift. I don’t need to open everything else – this is the only log in I will need to do.
- Because this is a web application, it doesn’t matter what computer I’m on. My data is available everywhere, and everything is the exact same as I left it, even when I switch teams - even if I switch contact centers.
- My phone system automatically logs in and tells me we are not in queue. I am in unbillable mode, so it stays hidden on the bottom, with a button to hit when I want to go live. I just have to put my mouse over it, and it scrolls up giving me more options.
- I look on my “desktop”, and it shows that I have an action item – an e-mail that requires follow-up. Apparently, I filled out a form incorrectly and forgot an important peice of information; the agent handling the issue is requesting more information. I click ‘reply’ and answer the question quickly. I put my mouse over the agents name and see that he’s offline – I decide that there’s enough information that any agent should be able to resolve this problem and put it into the general queue for that department, so that the customer will get a more immediate response. If the user comes on before the request has been fulfilled, the request will immediately go back to that agent, ensuring the best customer experience. I have no more action items.
- It also shows that there’s a new newsletter out, and says that it’s an urgent required read. I read through it and create an action item to re-read it after lunch.
- I glance at my calendar over the last 7 days, and yesterday is red. I move my mouse over and it shows that I only logged 6 hours yesterday – but I was at my seat the whole day. I click it and it pops up a mini-report showing when I logged in and out of my system. There’s clearly a problem, and the system notifies me of this. I don’t have to check any individual systems.
- I move my mouse to the left of the browser window to a list of tabs and I click my communications system. With the report still up, I start to type my supervisor’s name in the top right of the screen. It automatically filters the list as I type each letter – this is all done by the client application - no server communication is required at this point, so it is instantaneous with no lag. I find my supervisors name and click it. It pops up a small window with 2 options – instant message, or e-mail. This isn’t an urgent issue, she’ll probably have to get to it by the end of the day. I decide an e-mail is more appropriate.
- The e-mail system is an internal system which won’t allow me to e-mail anyone outside of the company. It’s a special kind of e-mail; it supports more than just your standard attachments…
- I write a quick note to the supervisor on what the problem is. I explain that my time sheets are off and I need it corrected. I mark it as ‘requiring follow-up’ and I set the date to the end of the payroll period. Then, I drag the report onto the e-mail. It attaches it’s ‘digital link’ as well as a screenshot to the e-mail and I press send.
- The e-mail automatically appears in my supervisors’ ‘to-do’ list for today. When she opens it, she sees an exact copy of what I saw (a screenshot that doesn’t change if the settings are modified) as well as a copy of the report. When she opens the report, she see’s her administration view – and is able to make the changes immediately, without having to click through everything.
- My information system links are hidden to the right of my browser. I can just put my mouse to the right of the screen and it pops up all of my bookmarks. My bookmarks are unique to my username, and it doesn’t matter what system I sit down at. They’re always there.
- My note system is available on the bottom right of my browser window, along with several other tools – like my calculator. I just need to click it to toggle it off and on, and it pops up so that I can type in notes whenever I want. I can hide it by clicking the icon again – but I usually keep my notes up so that I have easier access to them.
- All of this takes me about 5 minutes – the same amount of time that I took trying to find paper and writing a note to my supervisor about my time issues.
Pretty cool, eh? It gets better.
Lets see how this same application helps me when I go into billable mode:
- I press ‘play’ and go into billable mode. I see there’s an average 2 and a half minutes for a call; I move my mouse away and it hides, only showing I’m still in billable mode and I’m waiting for a call.
- I receive a phone call. The system creates a ’session’ which stores all of the information that happens in this call – the actions I take and records the call. All of this information is saved in the account history so that anyone has access to the calls.
- My soft phone pops up to show the number that is calling me, and that this is a direct call, not a transfer. The soft phone hides again, and shows only a little bit to remind that it’s still there.
- The account immediately pops up and all windows that I was viewing automatically disappear. My keyboard is locked out for 3 seconds to make sure I don’t activate anything by accident. This should give me enough time to realize I just received a call and it should also be enough time for the account to be queried.
- I start taking the call.
- Half-way through, on the bottom right of the browser, a little icon starts blinking, showing that I have a new notification. I wait for the customer to start “over-describing” the issue, and I click the icon and it pops up saying that our team has a team meeting in an hour. It immediately goes into my calendar.
- As soon as it hits time for the meeting, my phone will automatically go into not ready mode, stopping me from receiving any more phone calls. The current call does not get dropped, and I am able to finish the call. If there is an error, the supervisor can override this right from her computer. (or even if I’m avoiding phone calls :> Me? NEVER!)
- I need help – the bill doesn’t make sense to me. I have several options available, but I follow a specific workflow that I’ve designed for myself:
- I like my supervisor and I don’t have a problem approaching them for help, so I first check to see if they’re online and available to help. If they are, I can instant message them asking for help. I message her, but she doesn’t respond. After a minute I decide I need help faster than what she can provide and say not to worry about it. I go to my communications system and click ‘Request Assistance.’
- My request goes into the support queue.
- After about 25 seconds, an instant message opens up with a subject matter expert. I explain the situation as best I can by an instant message and decide I need to speak to the person. On the instant message, I put my mouse over the agent’s name and click it. I then click the option to call them directly. Because he has been assigned to me, I’m able to call him directly. The system automatically puts my customer on hold and opens a direct line to that agent.
- I explain the situation by voice but I’m still not being clear enough. Instead of continuing to try, I drag the bill directly into the chat window. It immediately opens up on the subject matter experts’ screen and we begin sharing the window. He goes through the bill while I watch, and uses a ‘highlight’ tool to drag over the line that there’s an error.
- He tells me to hold on a second as he looks through the information system for the exact issue I’m talking to him about. He drags the window into my chat and the information system opens up the page that he’s looking at. He uses a highlighter to mark the text that explains what the issue is.
- I receive immediate feedback for the issue and receive uptraining in the same call, as if the agent was in my call center – even though he’s in the Philippines.
- I can create an action item on any window in this system – so I create an action item on this page so that I can read more information when my call is done. The link is saved in my to-do’s automatically. I flag it as uptraining, and this allows management to see how often I mark things to uptrain myself on.
- Suddenly, the call drops – but the system is smart. Because the customer was on hold, it immediately kicks me to aftercall and pops up a message saying the caller was disconnected. It immediately identifies the account that I have open and asks me if I wish to call them back – on the number they were calling from, or a contact number listed on their account.
- Because each call is stored in a ’session’ – each ’session’ stores what was done on the phone – how long the customer was on hold, how the call was disconnected, etc – as well as what I did, the windows I opened – and this data can be analyzed directly. This information is tracked by the front-end Flex application, so it takes no additional server resources to track this information. It’s then submitted to the server when the agent clicks ‘Close Session.’ Because we’re in a ’session,’ we can call the customer back – and it automatically identifies the call is related to the session, and that it is still billable.
- But wait, there’s more! The links to the information pages I had opened during the call is stored on the account – if someone calls back for more information, that agent just needs to read the old note and open the link – it will automatically open the information system to the page that contains the information the previous agent was reading. No need to search for something that has already been found!
- Worst case scenario – something goes wrong, and the system accepts another call while I’m in the middle of typing my notes. It’s information technology, anything can happen.
- The system ‘minimizes’ the session and I’m left with a completely clean slate – the account immediately pops up and my note is saved under the old session. The system will now not allow me to accept calls after this call until both sessions are closed. (for security reasons – so that agents can’t hold accounts open)
- This person wants a routine change done, so I’m able to complete it in a few minutes. Although I can switch between both sessions, they are held completely separate – this way I don’t get lost in my information screens. I close my session, and the system immediately notifies me that I have another session opened that must be closed in order to go back to billable mode.
- I restore the session, and my screen looks exactly the same as it did before my new call came in. I don’t lose any of my information system windows or my note. Everything is exactly as it was. It’s been too long – I probably shouldn’t call this customer back, they’ve probably already hung up. I leave my note, close the session and I’m done.
- As I’m waiting for another call, I’m kicked into unbillable mode and I’m sent a message from a co-worker in another center – it’s a transfer request. I accept the message and a small notification appears on my screen with the agent’s name and what department they are in – the same happens for him. He explains the situation and I advise him that I can handle the problem – he drags the account onto my little icon and it pops up on my screen. Because this client requires us to warm transfer every call, I have to accept the transfer before he can release the call to me – no worries about people just getting dropped in your lap with no explanation of the problem.
- I accept the call and am able to open the notes from my last session – which also includes the notes from the SME I spoke with, as well as the link that he sent me.
- The problem is easily explained and I have quick access to the information that I had closed at the end of the call in case there are any further questions. I end the call, and close the session.
- I get another caller. They claim to be an agent from the ‘financing’ department and they want a special arrangement. As I said earlier, when someone transfers to me, since the entire system is integrated, I get a popup explaining who the agent is and what department they’re coming from. This doesn’t show. It immediately gives me grounds to refuse the request, but I decide that it is better to get as much information as possible. I pull up my soft phone and flag the call. All flagged sessions are forwarded to the supervisor for review at a later date. I dig for information and ask for their full name. I search their name up on the communications system – the agent is listed as offline. I give the person one last chance and ask who their direct superior is – they do not provide the correct information. I refuse the request.
- The call escalates. My supervisor comes to my desk and takes the call. They easily switch users, giving them full permissions as a supervisor, and all actions they take at this point goes under their name. She reads the notes and sees that this has happened on multiple occasions, and submits a follow-up using our communications system to our external fraud team and the call is terminated.
- Again, the system is smart and recognises that this was an escalated call and immediately kicks the phone into not ready. She closes her session, it automatically goes back to my user and waits for me to go back into billable mode.
Technology is only limited to the scope of the mind of the application developer. We now have the technology. Making this change, for example, would shave several minutes off of the average call time – increasing customer satisfaction and increasing performance across the board. And to top it all off, the system is easy and fun to use, which makes it easier to concentrate on the job instead of trying to figure out which application does what.
Jody LeBlanc is a call center agent by day, enterprise web applications and Adobe Flex developer at night. He specializes in usable interfaces, and has experience working on many enterprise level internal applications for Fortune 500 clients.