SwiftKey

Helping SwiftKey’s predictive keyboard to save users over two trillion keystrokes

Bit Zesty did a great job on a project for us at SwiftKey, and other people I know who've worked with them rate them very highly.

Paul Butcher, Chief Software Architect of SwiftKey

Challenge

SwiftKey wanted their keyboard app to provide better text predictions.

Solution

In three months, we built an API that links Swiftkey with individual social media and email accounts. Each user now experiences a completely personalised service.

Services

  • API Integration
  • Agile Project Management
  • Performance Testing
  • JRuby Development

Project Overview

Background

SwiftKey is a sophisticated keyboard app for mobile devices that was recently acquired by Microsoft for $250 million USD. It learns the style and content of each user’s writing so it can predict the next word or phrase they want to type.

The keyboard becomes more effective over time as it learns more about the user’s writing. It was here the SwiftKey team saw an opportunity for innovation. If they could analyse user’s existing text from other services as soon as they use the app, it could start making effective, personalised predictions immediately.

Although SwiftKey has a large in-house mobile development team, they felt our experience with API integration made us the right people to develop this product.

Web application using Ruby on Rails

We built a backend web application using Ruby on Rails to deliver a service that enables the SwiftKey app to access user's’ Facebook, Twitter and Gmail messages with their permission. This data is then collected and put through the SwiftKey personalised prediction engine and sent to the user’s phone.

This improvement earned SwiftKey glowing reviews and helped the app win various awards. Not only that, but the app is estimated to have saved its users two trillion keystrokes.

JRuby: adapting technologies to suit the client

SwiftKey use Java as their main language for their mobile app development, but it is less suitable for web applications. So they were happy to engage our team of Ruby on Rails developers as it is more suitable technology for web application.

However, we still needed to use SwiftKey’s existing Java libraries for text analysis. Fortunately this is possible by using JRuby - an implementation of Ruby on the Java Virtual Machine (JVM). By using JRuby we were able to get the best of both worlds - integrating with the existing code, while also utilising the functionality and productivity the Ruby on Rails framework provides.

Using JRuby also made deploying the application into the live environment simpler for SwiftKey, as they already had existing Java services in production and the JRuby application we developed could be deployed using their existing tools and onto the same servers as if it was a Java service.

Agile and Test Driven Development (TDD) process

SwiftKey needed the new social media feature ready for their next app update. Although timescales were tight, we were able to deliver on time following our agile development process. We were able to save time by agreeing the API specification with SwiftKey’s mobile developers in advance.

By following a Test Driven Development (TDD) process, we delivered high quality code that met the specification.

Also, we had to ensure that our backend API could serve SwiftKey’s millions of users. To do this we ran multiple rigorous performance tests, which helped us identify any potential bottlenecks and improve the scalability and speed of the application before launching.